shader semantic macros

This commit is contained in:
jacob 2025-05-23 21:12:44 -05:00
parent 85bac53e78
commit 332e8fdf2c
4 changed files with 40 additions and 38 deletions

View File

@ -1,5 +1,7 @@
#define DECL(t, n) t n : n
#define DECL_PS(n) float4 n : SV_POSITION
float4 linear_from_srgb(float4 srgb) float4 linear_from_srgb(float4 srgb)
{ {
return float4(pow(srgb.rgb, 2.2), srgb.a); return float4(pow(srgb.rgb, 2.2), srgb.a);
} }

View File

@ -1,27 +1,27 @@
#include "res/shaders/common.hlsl" #include "res/shaders/common.hlsl"
struct vs_input { struct vs_input {
float4 pos : POSITION; DECL(float4, pos);
float line_thickness : THICKNESS; DECL(float, line_thickness);
float line_spacing : SPACING; DECL(float, line_spacing);
float2 offset : OFFSET; DECL(float2, offset);
float4 bg0_srgb : COLOR0; DECL(float4, bg0_srgb);
float4 bg1_srgb : COLOR1; DECL(float4, bg1_srgb);
float4 line_srgb : COLOR2; DECL(float4, line_srgb);
float4 x_srgb : COLOR3; DECL(float4, x_srgb);
float4 y_srgb : COLOR4; DECL(float4, y_srgb);
}; };
struct ps_input { struct ps_input {
float4 screen_pos : SV_POSITION; DECL_PS(screen_pos);
float line_thickness : THICKNESS; DECL(float, line_thickness);
float line_spacing : SPACING; DECL(float, line_spacing);
float2 offset : OFFSET; DECL(float2, offset);
float4 bg0_lin : COLOR0; DECL(float4, bg0_lin);
float4 bg1_lin : COLOR1; DECL(float4, bg1_lin);
float4 line_lin : COLOR2; DECL(float4, line_lin);
float4 x_lin : COLOR3; DECL(float4, x_lin);
float4 y_lin : COLOR4; DECL(float4, y_lin);
}; };
cbuffer vs_constants : register(b0) cbuffer vs_constants : register(b0)

View File

@ -11,22 +11,22 @@ cbuffer constants : register(b0)
}; };
struct vs_input { struct vs_input {
float4 pos : POSITION; DECL(float4, pos);
float2 uv : TEXCOORD; DECL(float2, uv);
float4 tint_srgb : COLOR; DECL(float4, tint_srgb);
}; };
struct ps_input { struct ps_input {
float4 pos : SV_POSITION; DECL_PS(screen_pos);
float2 uv : TEXCOORD; DECL(float2, uv);
float4 tint_lin : COLOR; DECL(float4, tint_lin);
}; };
ps_input vs_main(vs_input input) ps_input vs_main(vs_input input)
{ {
ps_input output; ps_input output;
output.pos = mul(projection, float4(input.pos.xy, 0.f, 1.f)); output.screen_pos = mul(projection, float4(input.pos.xy, 0.f, 1.f));
output.uv = input.uv; output.uv = input.uv;
output.tint_lin = linear_from_srgb(input.tint_srgb); output.tint_lin = linear_from_srgb(input.tint_srgb);

View File

@ -464,9 +464,9 @@ INTERNAL void init_shader_table(void)
.name_cstr = "res/shaders/triangle.hlsl", .name_cstr = "res/shaders/triangle.hlsl",
.vertex_size = sizeof(struct triangle_shader_vertex), .vertex_size = sizeof(struct triangle_shader_vertex),
.input_layout_desc = { .input_layout_desc = {
{ "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "pos", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "uv", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 } { "tint_srgb", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }
} }
}; };
@ -476,15 +476,15 @@ INTERNAL void init_shader_table(void)
.name_cstr = "res/shaders/grid.hlsl", .name_cstr = "res/shaders/grid.hlsl",
.vertex_size = sizeof(struct grid_shader_vertex), .vertex_size = sizeof(struct grid_shader_vertex),
.input_layout_desc = { .input_layout_desc = {
{ "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "pos", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "THICKNESS", 0, DXGI_FORMAT_R32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "line_thickness", 0, DXGI_FORMAT_R32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "SPACING", 0, DXGI_FORMAT_R32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "line_spacing", 0, DXGI_FORMAT_R32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "OFFSET", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "offset", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "bg0_srgb", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 1, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "bg1_srgb", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 2, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "line_srgb", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 3, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "x_srgb", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 4, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 } { "y_srgb", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }
} }
}; };