Fix incorrect Lambert Diffuse shadowing to use just N dot L for accurate lighting

#3615 #3616
This commit is contained in:
Wojtek Figat
2025-08-18 11:03:50 +02:00
parent 606dfa4e2e
commit 6a8553a277

View File

@@ -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)
{