From 6a8553a2777f8dd7fa2ffa9e7ec4db070252c462 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 18 Aug 2025 11:03:50 +0200 Subject: [PATCH] Fix incorrect Lambert Diffuse shadowing to use just `N dot L` for accurate lighting #3615 #3616 --- Source/Shaders/Lighting.hlsl | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Source/Shaders/Lighting.hlsl b/Source/Shaders/Lighting.hlsl index 1429e45d1..9b14db5ed 100644 --- a/Source/Shaders/Lighting.hlsl +++ b/Source/Shaders/Lighting.hlsl @@ -122,6 +122,10 @@ float4 GetLighting(float3 viewPos, LightData lightData, GBufferSample gBuffer, f // Calculate shadow ShadowSample shadow = GetShadow(lightData, gBuffer, shadowMask); +#if !LIGHTING_NO_DIRECTIONAL + // Directional shadowing + shadow.SurfaceShadow *= NoL; +#endif // Calculate attenuation if (isRadial) @@ -135,11 +139,6 @@ float4 GetLighting(float3 viewPos, LightData lightData, GBufferSample gBuffer, f shadow.TransmissionShadow *= attenuation; } -#if !LIGHTING_NO_DIRECTIONAL - // Reduce shadow mapping artifacts - shadow.SurfaceShadow *= saturate(NoL * 6.0f - 0.2f) * NoL; -#endif - BRANCH if (shadow.SurfaceShadow + shadow.TransmissionShadow > 0) {