summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2026-02-23 17:35:40 -0800
committeryum <yum.food.vr@gmail.com>2026-02-23 17:35:40 -0800
commit2d205f1f5df12b6e66f6cca1a05152b18d53c0d1 (patch)
treeeeb2136c9be31b3d12887d12e475c64576dbf7f6
parentca92a8c6affe7184b9cd6b253e53a8542429accb (diff)
Fix IBL DFG term
-rwxr-xr-xbrdf.cginc12
1 files changed, 5 insertions, 7 deletions
diff --git a/brdf.cginc b/brdf.cginc
index 8a3b2ff..42ab988 100755
--- a/brdf.cginc
+++ b/brdf.cginc
@@ -166,15 +166,13 @@ float4 brdf(Pbr pbr, LightData data) {
remainder = saturate(remainder - indirect_specular_cc);
#endif
- float3 base_color = lerp(1, pbr.albedo.xyz, pbr.metallic);
- float3 specular_dfg = lerp(dfg.xxx, dfg.yyy, f0);
- float3 ibl_specular_reflectance = specular_dfg * base_color;
- float3 indirect_specular = data.indirect.specular * ibl_specular_reflectance;
-
- return float4(specular_dfg, 1);
+ float3 specular_tint = lerp(1, pbr.albedo.xyz, pbr.metallic);
+ // Filament whitepaper section 5.3.4.6
+ float3 specular_dfg = dfg.xxx * f0 + dfg.yyy;
+ float3 indirect_specular = specular_tint * data.indirect.specular * specular_dfg;
specular += indirect_specular;
- remainder = saturate(remainder - indirect_specular);
+ //remainder = saturate(remainder - indirect_specular);
float3 indirect_diffuse = pbr.albedo.xyz * data.indirect.diffuse * remainder * (1.0 - pbr.metallic);
diffuse += indirect_diffuse;