From 7fe9d7357ef5788745200012205954b9a484a3ed Mon Sep 17 00:00:00 2001 From: yum Date: Thu, 7 Aug 2025 18:39:00 -0700 Subject: begin roughing out marble gimmick --- brdf.cginc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'brdf.cginc') diff --git a/brdf.cginc b/brdf.cginc index 1504ef0..6ca8c8d 100644 --- a/brdf.cginc +++ b/brdf.cginc @@ -72,7 +72,6 @@ float4 brdf(Pbr pbr, LightData data) { data.direct.NoL = 1; data.direct.NoH = 1; data.direct.LoH = 1; - data.direct.LoV = 1; #endif // Direct @@ -82,18 +81,22 @@ float4 brdf(Pbr pbr, LightData data) { float G = V_GGXSmith(pbr.roughness, data.direct.NoL, data.common.NoV); float FDG = F * D * G; + float3 direct_specular = FDG * data.direct.color * data.direct.NoL * lerp(1.0f, pbr.albedo.xyz, pbr.metallic); + direct_specular = max(0, direct_specular); specular += direct_specular; float3 remainder = (1.0f - direct_specular); float Fd = Fd_OrenNayar(pbr.roughness, data.common.NoV, data.direct.NoL, data.direct.LoV) / PI; float3 direct_diffuse = Fd * remainder * (1.0f - pbr.metallic) * pbr.albedo.xyz * data.direct.color; - diffuse += direct_diffuse; + direct_diffuse = max(0, direct_diffuse); + diffuse += direct_diffuse; } // Indirect - if (false) { + if (true) { float F = F_Schlick(data.indirect.LoH, f0, f90); + float G = V_GGXSmith(pbr.roughness, data.indirect.NoL, data.common.NoV); float3 indirect_specular = F * data.indirect.specular; specular += indirect_specular; -- cgit v1.2.3