2424//////////////////// G L O B A L V A L U E S ///////////////////////////
2525
2626float4x4 World; // model -> world
27- float4x4 WorldViewProjection; // model -> world -> view -> projection
27+ float4x4 View; // world -> view
28+ float4x4 Projection; // view -> projection
2829float4x4 LightViewProjectionShadowProjection0; // world -> light view -> light projection -> shadow map projection
2930float4x4 LightViewProjectionShadowProjection1;
3031float4x4 LightViewProjectionShadowProjection2;
@@ -156,7 +157,7 @@ struct VERTEX_OUTPUT
156157void _VSNormalProjection (in VERTEX_INPUT In, inout VERTEX_OUTPUT Out)
157158{
158159 // Project position, normal and copy texture coords
159- Out.Position = mul (In.Position, WorldViewProjection );
160+ Out.Position = mul (mul ( mul ( In.Position, World), View), Projection );
160161 Out.RelPosition.xyz = mul (In.Position, World).xyz - ViewerPos;
161162 Out.RelPosition.w = Out.Position.z;
162163 Out.TexCoords.xy = In.TexCoords;
@@ -184,7 +185,7 @@ void _VSSignalProjection(uniform bool Glow, in VERTEX_INPUT_SIGNAL In, inout VER
184185 const float GlowScalingFactor = 40 ;
185186 In.Position.xyz *= log (1 + max (0 , length (relPos) - GlowCutOffM) / GlowScalingFactor) * ZBias_Lighting.x;
186187 }
187- Out.Position = mul (In.Position, WorldViewProjection );
188+ Out.Position = mul (mul ( mul ( In.Position, World), View), Projection );
188189 Out.RelPosition.xyz = relPos;
189190 Out.RelPosition.w = Out.Position.z;
190191 Out.TexCoords.xy = In.TexCoords;
@@ -194,7 +195,7 @@ void _VSSignalProjection(uniform bool Glow, in VERTEX_INPUT_SIGNAL In, inout VER
194195void _VSTransferProjection (in VERTEX_INPUT_TRANSFER In, inout VERTEX_OUTPUT Out)
195196{
196197 // Project position, normal and copy texture coords
197- Out.Position = mul (In.Position, WorldViewProjection );
198+ Out.Position = mul (mul ( mul ( In.Position, World), View), Projection );
198199 Out.RelPosition.xyz = mul (In.Position, World).xyz - ViewerPos;
199200 Out.RelPosition.w = Out.Position.z;
200201 Out.TexCoords.xy = In.TexCoords;
@@ -301,7 +302,7 @@ VERTEX_OUTPUT VSForest(in VERTEX_INPUT_FOREST In)
301302 In.Position = float4 (newPosition, 1 );
302303
303304 // Project vertex with fixed w=1 and normal=eye.
304- Out.Position = mul (In.Position, WorldViewProjection );
305+ Out.Position = mul (mul ( mul ( In.Position, World), View), Projection );
305306 Out.RelPosition.xyz = mul (In.Position, World).xyz - ViewerPos;
306307 Out.RelPosition.w = Out.Position.z;
307308 Out.TexCoords.xy = In.TexCoords;
0 commit comments