diff options
| author | yum <yum.food.vr@gmail.com> | 2025-08-08 14:43:26 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-08-08 14:43:26 -0700 |
| commit | 814d4cd95aebb79eabdf4ab31bf9fd7a093e9cef (patch) | |
| tree | 9072ebe7cacf81797d5931b3ff1dd6657c93140e /brdf.cginc | |
| parent | 9393f117a139976b19adf9f5201dfc7023fb3c04 (diff) | |
Bugfix: indirect specular was being double counted
Diffstat (limited to 'brdf.cginc')
| -rw-r--r-- | brdf.cginc | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -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; } |
