struct Input { float3 Position : TEXCOORD0; uint Instance : SV_InstanceID; }; struct Output { float3 Color : TEXCOORD0; float4 Position : SV_Position; }; struct Scene { float4x4 Model; float3 Color; }; StructuredBuffer scene: register(t0, space0); cbuffer Uniforms : register(b0, space1) { float4x4 ViewProjection; }; Output main(Input input) { Output output; float4 pos = float4(input.Position, 1.0); output.Position = mul(ViewProjection, mul(scene[input.Instance].Model, pos)); output.Color = scene[input.Instance].Color; return output; }