From f09d6aa0ebaf174b8cad9f6fa530c034b773ff21 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 30 Sep 2025 15:44:34 +0200 Subject: [PATCH] Fix fog rendering bug on d3d11/d3d10 --- .../Editor/MaterialTemplates/Features/ForwardShading.hlsl | 8 +++++++- .../Engine/Graphics/Materials/MaterialShaderFeatures.cpp | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Content/Editor/MaterialTemplates/Features/ForwardShading.hlsl b/Content/Editor/MaterialTemplates/Features/ForwardShading.hlsl index 92f3bfd30..123201d1e 100644 --- a/Content/Editor/MaterialTemplates/Features/ForwardShading.hlsl +++ b/Content/Editor/MaterialTemplates/Features/ForwardShading.hlsl @@ -152,7 +152,13 @@ void PS_Forward( #if USE_FOG && MATERIAL_SHADING_MODEL != SHADING_MODEL_UNLIT // Calculate exponential height fog - float4 fog = GetExponentialHeightFog(ExponentialHeightFog, materialInput.WorldPosition, ViewPos, 0, gBuffer.ViewPos.z); +#if DIRECTX && FEATURE_LEVEL < FEATURE_LEVEL_SM6 + // TODO: fix D3D11/D3D10 bug with incorrect distance + float fogSceneDistance = distance(materialInput.WorldPosition, ViewPos); +#else + float fogSceneDistance = gBuffer.ViewPos.z; +#endif + float4 fog = GetExponentialHeightFog(ExponentialHeightFog, materialInput.WorldPosition, ViewPos, 0, fogSceneDistance); if (ExponentialHeightFog.VolumetricFogMaxDistance > 0) { diff --git a/Source/Engine/Graphics/Materials/MaterialShaderFeatures.cpp b/Source/Engine/Graphics/Materials/MaterialShaderFeatures.cpp index a140fb577..64dfe8303 100644 --- a/Source/Engine/Graphics/Materials/MaterialShaderFeatures.cpp +++ b/Source/Engine/Graphics/Materials/MaterialShaderFeatures.cpp @@ -43,6 +43,9 @@ void ForwardShadingFeature::Bind(MaterialShader::BindParameters& params, SpanBindSR(volumetricFogTextureRegisterIndex, volumetricFogTexture);