53 lines
1.1 KiB
HLSL
53 lines
1.1 KiB
HLSL
#include "sh/common.hlsl"
|
|
|
|
/* ========================== *
|
|
* Root signature
|
|
* ========================== */
|
|
|
|
#define ROOTSIG \
|
|
"RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT), " \
|
|
"RootConstants(num32BitConstants=16, b0)"
|
|
|
|
ConstantBuffer<struct sh_material_constants> g_constants : register(b0);
|
|
|
|
/* ========================== *
|
|
* Vertex shader
|
|
* ========================== */
|
|
|
|
struct vs_input {
|
|
DECLS(float2, pos);
|
|
DECLS(float4, color_srgb);
|
|
};
|
|
|
|
struct vs_output {
|
|
DECLS(float4, SV_Position);
|
|
DECLS(float4, color_srgb);
|
|
};
|
|
|
|
SH_ENTRY(ROOTSIG) struct vs_output vs(struct vs_input input)
|
|
{
|
|
struct vs_output output;
|
|
output.SV_Position = mul(g_constants.projection, float4(input.pos.xy, 0, 1));
|
|
output.color_srgb = input.color_srgb;
|
|
return output;
|
|
}
|
|
|
|
/* ========================== *
|
|
* Pixel shader
|
|
* ========================== */
|
|
|
|
struct ps_input {
|
|
struct vs_output vs;
|
|
};
|
|
|
|
struct ps_output {
|
|
DECLS(float4, SV_Target);
|
|
};
|
|
|
|
SH_ENTRY(ROOTSIG) struct ps_output ps(struct ps_input input)
|
|
{
|
|
struct ps_output output;
|
|
output.SV_Target = input.vs.color_srgb;
|
|
return output;
|
|
}
|