// I just reuse this one for the shadow mapping right? 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; float3 WorldPos : TEXCOORD1; float3 Normal: TEXCOORD2; float4 DirectionalShadowFragPos: TEXCOORD3; float4 Position : SV_Position; }; struct Scene { float4x4 Model; }; StructuredBuffer scene: register(t0, space0); cbuffer Uniforms : register(b0, space1) { float4x4 ViewProjection; float4x4 ShadowMapProjection; float time; }; Output main(Input input) { Output output; output.TexCoord = input.UV; float4 pos = float4(input.Position, 1.0); // pos.x += 0.2 * sin(time * 0.5 ) * pos.y * 0.5; // pos.y += 0.2 * cos(time * 0.5 ) * pos.z * 0.5; float4 WorldPos = mul(scene[input.Instance].Model, pos); output.Position = mul(ViewProjection, mul(scene[input.Instance].Model, pos)); output.WorldPos = WorldPos.xyz; output.Normal = input.Normal; output.DirectionalShadowFragPos = mul(ShadowMapProjection, WorldPos); return output; }