1cbuffer ClearColorF32   : register(b0) { float4 ClearF32; };
2cbuffer ClearColorU32   : register(b0) { uint4 ClearU32; };
3cbuffer ClearColorI32   : register(b0) { int4 ClearI32; };
4cbuffer ClearColorDepth : register(b0) { float ClearDepth; };
5
6// fullscreen triangle
7float4 vs_partial_clear(uint id : SV_VertexID) : SV_Position
8{
9    return float4(
10        float(id / 2) * 4.0 - 1.0,
11        float(id % 2) * 4.0 - 1.0,
12        0.0,
13        1.0
14    );
15}
16
17// TODO: send constants through VS as flat attributes
18float4 ps_partial_clear_float() : SV_Target0 { return ClearF32; }
19uint4  ps_partial_clear_uint() : SV_Target0 { return ClearU32; }
20int4   ps_partial_clear_int() : SV_Target0 { return ClearI32; }
21float  ps_partial_clear_depth() : SV_Depth { return ClearDepth; }
22void   ps_partial_clear_stencil() { }
23