struct QuadOutput { float2 uv : UV; float4 position : SV_Position; } [shader("vertex")] QuadOutput quadMain(uint vertexIndex : SV_VertexID) { QuadOutput result; result.uv = float2(vertexIndex & 2, (vertexIndex << 1) & 2); float2 ndc = result.uv * 2.0f + -1.0f; ndc.y = -ndc.y; // Flip Y for flipped viewport result.position = float4(ndc, 0.0f, 1.0f); return result; }