#include "shaders/common.hlsl" struct vs_instance { float2x3 xf; }; struct ps_input { DESV(float4, screen_pos, SV_POSITION); }; /* ========================== * * Globals * ========================== */ StructuredBuffer g_instance_buffer : register(t0); cbuffer constants : register(b0) { float4x4 g_projection; uint g_instance_offset; }; /* ========================== * * Vertex shader * ========================== */ static const float2 G_quad_verts[4] = { float2(-0.5f, -0.5f), float2( 0.5f, -0.5f), float2( 0.5f, 0.5f), float2(-0.5f, 0.5f) }; ps_input vs_main(uint instance_id : SV_InstanceID, uint vertex_id : SV_VertexID) { vs_instance instance = g_instance_buffer[g_instance_offset + instance_id]; float2 vert = G_quad_verts[vertex_id]; float2 world_pos = mul(instance.xf, float3(vert, 1)).xy; ps_input output; output.screen_pos = mul(g_projection, float4(world_pos, 0, 1)); return output; } /* ========================== * * Pixel shader * ========================== */ float4 ps_main(ps_input input) : SV_TARGET { return float4(0, 0, 0, 0); }