struct Input { float3 Position : TEXCOORD0; float3 Normal : TEXCOORD1; float4 Color : TEXCOORD2; float2 UV : TEXCOORD3; uint Bones : TEXCOORD4; uint weights : TEXCOORD5; uint Instance : SV_InstanceID; }; struct Output { float2 TexCoord : TEXCOORD0; float4 Position : SV_Position; }; struct Scene { float4x4 Model; }; StructuredBuffer scene: register(t0, space0); cbuffer Uniforms : register(b0, space1) { float4x4 ViewProjection; float time; }; Output main(Input input) { Output output; output.TexCoord = input.UV; // output.TexCoord[0] += scene[input.Instance].Model[0][0] * 0.0001; //output.Position = mul(ViewProjection, float4(input.Position - float3(1 * sin(time + 0.05 * input.Position[0]),0, 1 * cos(time + 0.05 * input.Position[0])), 1.0)); output.Position = mul(ViewProjection, mul(scene[input.Instance].Model, float4(input.Position, 1.0))); return output; }