struct VertexOut { float4 outPosition : SV_Position; float4 vertexColor : CoarseColor; float2 texCoord0 : TexCoord0; }; struct CameraData { float4x4 model; float4x4 view; float4x4 proj; }; struct PerFrameData { CameraData camera; Sampler2D texture; } ParameterBlock perFrameData; [shader("vertex")] VertexOut VertexMain( uint vertexId: SV_VertexID, float3 position, float3 color, float2 texCoord0, ) { VertexOut output; output.outPosition = mul(perFrameData.camera.proj, mul(perFrameData.camera.view, mul(perFrameData.camera.model, float4(position, 1.0f)))); output.vertexColor = float4(color, 1.0f); output.texCoord0 = texCoord0 * 2.0f; return output; } [shader("fragment")] float4 FragmentMain( float4 interpolatedColors : CoarseColor, float2 uv0 : TexCoord0, ) : SV_Target0 { return float4(perFrameData.texture.Sample(uv0).rgb, 1.0f) * interpolatedColors; }