From 814d4cd95aebb79eabdf4ab31bf9fd7a093e9cef Mon Sep 17 00:00:00 2001 From: yum Date: Fri, 8 Aug 2025 14:43:26 -0700 Subject: Bugfix: indirect specular was being double counted --- brdf.cginc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'brdf.cginc') diff --git a/brdf.cginc b/brdf.cginc index 5294e5e..2260c96 100644 --- a/brdf.cginc +++ b/brdf.cginc @@ -87,7 +87,7 @@ float4 brdf(Pbr pbr, LightData data) { float3 direct_specular_cc = FDGc * data.direct.color * data.direct.NoL_cc * pbr.cc_strength; direct_specular_cc = max(0, direct_specular_cc); specular += direct_specular_cc; - remainder -= Fc; + remainder -= Fc * pbr.cc_strength; #endif float F = F_Schlick(data.direct.LoH, f0, f90); @@ -115,7 +115,7 @@ float4 brdf(Pbr pbr, LightData data) { float Fc = F_Schlick(data.indirect.LoH, cc_f0, f90); float3 indirect_specular_cc = Fc * data.indirect.specular_cc * pbr.cc_strength; specular += indirect_specular_cc; - remainder -= Fc; + remainder -= Fc * pbr.cc_strength; #endif float F = F_Schlick(data.indirect.LoH, f0, f90); @@ -124,7 +124,6 @@ float4 brdf(Pbr pbr, LightData data) { remainder -= F; float Fd = 1.0f; // Lambertian divide is baked into SH - remainder -= indirect_specular; float3 indirect_diffuse = Fd * remainder * pbr.albedo.xyz * data.indirect.diffuse; diffuse += indirect_diffuse; } -- cgit v1.2.3