#include "$ENGINE$/PerCameraData.bslinc" mixin ShadowProjectionCommon { mixin PerCameraData; code { struct VStoFS { float4 position : SV_POSITION; float4 clipSpacePos : TEXCOORD0; }; struct VertexInput { float3 position : POSITION; }; #if NEEDS_TRANSFORM [internal] cbuffer VertParams { float4 gPositionAndScale; }; #endif VStoFS vsmain(VertexInput input) { VStoFS output; #if NEEDS_TRANSFORM float3 worldPos = input.position.xyz * gPositionAndScale.w + gPositionAndScale.xyz; output.clipSpacePos = mul(gMatViewProj, float4(worldPos, 1)); output.position = output.clipSpacePos; #else output.clipSpacePos = float4(input.position, 1); output.position = float4(input.position, 1); #endif return output; } }; };