summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-08-08 14:43:26 -0700
committeryum <yum.food.vr@gmail.com>2025-08-08 14:43:26 -0700
commit814d4cd95aebb79eabdf4ab31bf9fd7a093e9cef (patch)
tree9072ebe7cacf81797d5931b3ff1dd6657c93140e
parent9393f117a139976b19adf9f5201dfc7023fb3c04 (diff)
Bugfix: indirect specular was being double counted
-rw-r--r--brdf.cginc5
1 files changed, 2 insertions, 3 deletions
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;
}