shader semantic macros
This commit is contained in:
parent
85bac53e78
commit
332e8fdf2c
@ -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)
|
||||
{
|
||||
return float4(pow(srgb.rgb, 2.2), srgb.a);
|
||||
}
|
||||
|
||||
|
||||
@ -1,27 +1,27 @@
|
||||
#include "res/shaders/common.hlsl"
|
||||
|
||||
struct vs_input {
|
||||
float4 pos : POSITION;
|
||||
float line_thickness : THICKNESS;
|
||||
float line_spacing : SPACING;
|
||||
float2 offset : OFFSET;
|
||||
float4 bg0_srgb : COLOR0;
|
||||
float4 bg1_srgb : COLOR1;
|
||||
float4 line_srgb : COLOR2;
|
||||
float4 x_srgb : COLOR3;
|
||||
float4 y_srgb : COLOR4;
|
||||
DECL(float4, pos);
|
||||
DECL(float, line_thickness);
|
||||
DECL(float, line_spacing);
|
||||
DECL(float2, offset);
|
||||
DECL(float4, bg0_srgb);
|
||||
DECL(float4, bg1_srgb);
|
||||
DECL(float4, line_srgb);
|
||||
DECL(float4, x_srgb);
|
||||
DECL(float4, y_srgb);
|
||||
};
|
||||
|
||||
struct ps_input {
|
||||
float4 screen_pos : SV_POSITION;
|
||||
float line_thickness : THICKNESS;
|
||||
float line_spacing : SPACING;
|
||||
float2 offset : OFFSET;
|
||||
float4 bg0_lin : COLOR0;
|
||||
float4 bg1_lin : COLOR1;
|
||||
float4 line_lin : COLOR2;
|
||||
float4 x_lin : COLOR3;
|
||||
float4 y_lin : COLOR4;
|
||||
DECL_PS(screen_pos);
|
||||
DECL(float, line_thickness);
|
||||
DECL(float, line_spacing);
|
||||
DECL(float2, offset);
|
||||
DECL(float4, bg0_lin);
|
||||
DECL(float4, bg1_lin);
|
||||
DECL(float4, line_lin);
|
||||
DECL(float4, x_lin);
|
||||
DECL(float4, y_lin);
|
||||
};
|
||||
|
||||
cbuffer vs_constants : register(b0)
|
||||
|
||||
@ -11,22 +11,22 @@ cbuffer constants : register(b0)
|
||||
};
|
||||
|
||||
struct vs_input {
|
||||
float4 pos : POSITION;
|
||||
float2 uv : TEXCOORD;
|
||||
float4 tint_srgb : COLOR;
|
||||
DECL(float4, pos);
|
||||
DECL(float2, uv);
|
||||
DECL(float4, tint_srgb);
|
||||
};
|
||||
|
||||
struct ps_input {
|
||||
float4 pos : SV_POSITION;
|
||||
float2 uv : TEXCOORD;
|
||||
float4 tint_lin : COLOR;
|
||||
DECL_PS(screen_pos);
|
||||
DECL(float2, uv);
|
||||
DECL(float4, tint_lin);
|
||||
};
|
||||
|
||||
ps_input vs_main(vs_input input)
|
||||
{
|
||||
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.tint_lin = linear_from_srgb(input.tint_srgb);
|
||||
|
||||
|
||||
@ -464,9 +464,9 @@ INTERNAL void init_shader_table(void)
|
||||
.name_cstr = "res/shaders/triangle.hlsl",
|
||||
.vertex_size = sizeof(struct triangle_shader_vertex),
|
||||
.input_layout_desc = {
|
||||
{ "POSITION", 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 },
|
||||
{ "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 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 },
|
||||
{ "uv", 0, DXGI_FORMAT_R32G32_FLOAT, 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",
|
||||
.vertex_size = sizeof(struct grid_shader_vertex),
|
||||
.input_layout_desc = {
|
||||
{ "POSITION", 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 },
|
||||
{ "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 },
|
||||
{ "COLOR", 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 },
|
||||
{ "COLOR", 2, 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 },
|
||||
{ "COLOR", 4, DXGI_FORMAT_R8G8B8A8_UNORM, 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 },
|
||||
{ "line_thickness", 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 },
|
||||
{ "bg0_srgb", 0, 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 },
|
||||
{ "line_srgb", 0, 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 },
|
||||
{ "y_srgb", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user