#include "sh/common.hlsl" /* ========================== * * Root signature * ========================== */ #define ROOTSIG \ "RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT), " \ "RootConstants(num32BitConstants=16, b0)" ConstantBuffer 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_lin); }; 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_lin = linear_from_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_lin; return output; }