struct VertexIn { [[vk::layout(0)]] float2 pos; [[vk::layout(1)]] float4 color; } struct VertexOut { [[vk::layout(0)]] float4 color; float4 position : SV_Position; } struct PushConstant { float4x4 mvp; } [[vk::push_constant]] ConstantBuffer push_constant; [shader("vertex")] VertexOut vertex(VertexIn vertex) { VertexOut output; output.position = mul(push_constant.mvp, float4(vertex.pos, 1.0)); output.color = vertex.color; return output; } struct FragmentOut { float4 color : SV_Target; } [shader("fragment")] FragmentOut fragment(VertexOut input) { FragmentOut output; output.color = input.color; return output; }