diff --git a/Content/Editor/MaterialTemplates/Decal.shader b/Content/Editor/MaterialTemplates/Decal.shader index c958d8a4a..ea6b7c323 100644 --- a/Content/Editor/MaterialTemplates/Decal.shader +++ b/Content/Editor/MaterialTemplates/Decal.shader @@ -42,10 +42,10 @@ struct MaterialInput float2 SvPositionToDecalUV(float4 svPosition) { float2 screenUV = svPosition.xy * ScreenSize.zw; - svPosition.z = SAMPLE_RT(DepthBuffer, screenUV).r; - float4 positionHS = mul(float4(svPosition.xyz, 1), SvPositionToWorld); + svPosition.z = SAMPLE_RT_DEPTH(DepthBuffer, screenUV); + float4 positionHS = PROJECT_POINT(float4(svPosition.xyz, 1), SvPositionToWorld); float3 positionWS = positionHS.xyz / positionHS.w; - float3 positionOS = mul(float4(positionWS, 1), InvWorld).xyz; + float3 positionOS = PROJECT_POINT(float4(positionWS, 1), InvWorld).xyz; return positionOS.xz + 0.5f; } @@ -182,10 +182,10 @@ META_VS_IN_ELEMENT(POSITION, 0, R32G32B32_FLOAT, 0, 0, PER_VERTEX, 0, true) void VS_Decal(in float3 Position : POSITION0, out float4 SvPosition : SV_Position) { // Compute world space vertex position - float3 worldPosition = mul(float4(Position.xyz, 1), WorldMatrix).xyz; + float3 worldPosition = PROJECT_POINT(float4(Position.xyz, 1), WorldMatrix).xyz; // Compute clip space position - SvPosition = mul(float4(worldPosition.xyz, 1), ViewProjectionMatrix); + SvPosition = PROJECT_POINT(float4(worldPosition.xyz, 1), ViewProjectionMatrix); } // Pixel Shader function for decals rendering @@ -213,11 +213,11 @@ void PS_Decal( } float2 screenUV = SvPosition.xy * ScreenSize.zw; - SvPosition.z = SAMPLE_RT(DepthBuffer, screenUV).r; + SvPosition.z = SAMPLE_RT_DEPTH(DepthBuffer, screenUV); - float4 positionHS = mul(float4(SvPosition.xyz, 1), SvPositionToWorld); + float4 positionHS = PROJECT_POINT(float4(SvPosition.xyz, 1), SvPositionToWorld); float3 positionWS = positionHS.xyz / positionHS.w; - float3 positionOS = mul(float4(positionWS, 1), InvWorld).xyz; + float3 positionOS = PROJECT_POINT(float4(positionWS, 1), InvWorld).xyz; clip(0.5 - abs(positionOS.xyz)); float2 decalUVs = positionOS.xz + 0.5f; diff --git a/Content/Editor/MaterialTemplates/Deformable.shader b/Content/Editor/MaterialTemplates/Deformable.shader index acc303e9d..688170e73 100644 --- a/Content/Editor/MaterialTemplates/Deformable.shader +++ b/Content/Editor/MaterialTemplates/Deformable.shader @@ -308,7 +308,7 @@ VertexOutput VS_SplineModel(ModelInput input) world = mul(world, WorldMatrix); // Compute clip space position - output.Position = mul(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); // Pass vertex attributes output.Geometry.TexCoord = input.TexCoord0; @@ -338,7 +338,7 @@ VertexOutput VS_SplineModel(ModelInput input) #if USE_POSITION_OFFSET output.Geometry.WorldPosition += material.PositionOffset; output.Geometry.PrevWorldPosition += material.PositionOffset; - output.Position = mul(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); #endif // Get tessalation multiplier (per vertex) diff --git a/Content/Editor/MaterialTemplates/GUI.shader b/Content/Editor/MaterialTemplates/GUI.shader index 42e0179b7..c15b7f20f 100644 --- a/Content/Editor/MaterialTemplates/GUI.shader +++ b/Content/Editor/MaterialTemplates/GUI.shader @@ -227,7 +227,7 @@ VertexOutput VS_GUI(Render2DVertex input) if ((int)input.CustomDataAndClipOrigin.y & 1) input.Position = (int2)input.Position; - output.Position = mul(float4(input.Position, 0, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(input.Position, 0, 1), ViewProjectionMatrix); output.WorldPosition = mul(float4(input.Position, 0, 1), WorldMatrix).xyz; output.TexCoord = input.TexCoord; output.WindowPos = input.Position; diff --git a/Content/Editor/MaterialTemplates/Particle.shader b/Content/Editor/MaterialTemplates/Particle.shader index 661a8f69b..76a09e788 100644 --- a/Content/Editor/MaterialTemplates/Particle.shader +++ b/Content/Editor/MaterialTemplates/Particle.shader @@ -393,7 +393,7 @@ VertexOutput VS_Sprite(SpriteInput input, uint particleIndex : SV_InstanceID) output.WorldPosition = position + spriteVertexPosition; // Compute clip space position - output.Position = mul(float4(output.WorldPosition.xyz, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.WorldPosition.xyz, 1), ViewProjectionMatrix); // Pass vertex attributes output.TexCoord = input.TexCoord; @@ -431,7 +431,7 @@ VertexOutput VS_Sprite(SpriteInput input, uint particleIndex : SV_InstanceID) // Apply world position offset per-vertex #if USE_POSITION_OFFSET output.WorldPosition += material.PositionOffset; - output.Position = mul(float4(output.WorldPosition.xyz, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.WorldPosition.xyz, 1), ViewProjectionMatrix); #endif // Copy interpolants for other shader stages @@ -511,7 +511,7 @@ VertexOutput VS_Model(ModelInput input, uint particleIndex : SV_InstanceID) output.WorldPosition = mul(float4(input.Position, 1), world).xyz; // Compute clip space position - output.Position = mul(float4(output.WorldPosition, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.WorldPosition, 1), ViewProjectionMatrix); // Pass vertex attributes output.TexCoord = input.TexCoord0; @@ -549,7 +549,7 @@ VertexOutput VS_Model(ModelInput input, uint particleIndex : SV_InstanceID) // Apply world position offset per-vertex #if USE_POSITION_OFFSET output.WorldPosition += material.PositionOffset; - output.Position = mul(float4(output.WorldPosition.xyz, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.WorldPosition.xyz, 1), ViewProjectionMatrix); #endif // Copy interpolants for other shader stages @@ -617,7 +617,7 @@ VertexOutput VS_Ribbon(RibbonInput input, uint vertexIndex : SV_VertexID) output.WorldPosition = position + tangentRight * vertexSign * (ribbonWidth.xxx * 0.5f); // Compute clip space position - output.Position = mul(float4(output.WorldPosition.xyz, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.WorldPosition.xyz, 1), ViewProjectionMatrix); // Pass vertex attributes output.ParticleIndex = particleIndex; @@ -655,7 +655,7 @@ VertexOutput VS_Ribbon(RibbonInput input, uint vertexIndex : SV_VertexID) // Apply world position offset per-vertex #if USE_POSITION_OFFSET output.WorldPosition += material.PositionOffset; - output.Position = mul(float4(output.WorldPosition.xyz, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.WorldPosition.xyz, 1), ViewProjectionMatrix); #endif // Copy interpolants for other shader stages diff --git a/Content/Editor/MaterialTemplates/Surface.shader b/Content/Editor/MaterialTemplates/Surface.shader index 4826fc014..847c7a4de 100644 --- a/Content/Editor/MaterialTemplates/Surface.shader +++ b/Content/Editor/MaterialTemplates/Surface.shader @@ -342,7 +342,7 @@ VertexOutput VS(ModelInput input) output.Geometry.PrevWorldPosition = mul(float4(input.Position.xyz, 1), object.PrevWorldMatrix).xyz; // Compute clip space position - output.Position = mul(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); // Pass vertex attributes output.Geometry.TexCoords01 = float4(input.TexCoord0, input.TexCoord1); @@ -378,7 +378,7 @@ VertexOutput VS(ModelInput input) #if USE_POSITION_OFFSET output.Geometry.WorldPosition += material.PositionOffset; output.Geometry.PrevWorldPosition += material.PositionOffset; - output.Position = mul(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); #endif // Get tessalation multiplier (per vertex) @@ -412,7 +412,7 @@ float4 VS_Depth(ModelInput_PosOnly input) : SV_Position // Transform vertex position into the screen float3 worldPosition = mul(float4(input.Position.xyz, 1), object.WorldMatrix).xyz; - float4 position = mul(float4(worldPosition, 1), ViewProjectionMatrix); + float4 position = PROJECT_POINT(float4(worldPosition, 1), ViewProjectionMatrix); return position; } @@ -518,7 +518,7 @@ VertexOutput VS_Skinned(ModelInput_Skinned input) #endif // Compute clip space position - output.Position = mul(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); // Pass vertex attributes output.Geometry.TexCoords01 = float4(input.TexCoord0, input.TexCoord1); @@ -549,7 +549,7 @@ VertexOutput VS_Skinned(ModelInput_Skinned input) #if USE_POSITION_OFFSET output.Geometry.WorldPosition += material.PositionOffset; output.Geometry.PrevWorldPosition += material.PositionOffset; - output.Position = mul(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); #endif // Get tessalation multiplier (per vertex) diff --git a/Content/Editor/MaterialTemplates/Terrain.shader b/Content/Editor/MaterialTemplates/Terrain.shader index 63313e304..b897335f9 100644 --- a/Content/Editor/MaterialTemplates/Terrain.shader +++ b/Content/Editor/MaterialTemplates/Terrain.shader @@ -388,7 +388,7 @@ VertexOutput VS(TerrainVertexInput input) output.Geometry.WorldPosition = mul(float4(position, 1), worldMatrix).xyz; // Compute clip space position - output.Position = mul(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); // Pass vertex attributes #if USE_SMOOTH_LOD_TRANSITION @@ -436,7 +436,7 @@ VertexOutput VS(TerrainVertexInput input) // Apply world position offset per-vertex #if USE_POSITION_OFFSET output.Geometry.WorldPosition += material.PositionOffset; - output.Position = mul(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); + output.Position = PROJECT_POINT(float4(output.Geometry.WorldPosition, 1), ViewProjectionMatrix); #endif // Get tessalation multiplier (per vertex)