#1852 Fix for some visual corruption caused by divide by zero in lighting functions (#2488)

master
Dave Parks 2024-09-03 19:47:32 -05:00 committed by GitHub
parent 7c9c142a55
commit 891219dcef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 7 additions and 4 deletions

View File

@ -99,10 +99,13 @@ void calcHalfVectors(vec3 lv, vec3 n, vec3 v,
{
l = normalize(lv);
h = normalize(l + v);
nh = clamp(dot(n, h), 0.0, 1.0);
nl = clamp(dot(n, l), 0.0, 1.0);
nv = clamp(dot(n, v), 0.0, 1.0);
vh = clamp(dot(v, h), 0.0, 1.0);
// lower bound to avoid divide by zero
float eps = 0.000001;
nh = clamp(dot(n, h), eps, 1.0);
nl = clamp(dot(n, l), eps, 1.0);
nv = clamp(dot(n, v), eps, 1.0);
vh = clamp(dot(v, h), eps, 1.0);
lightDist = length(lv);
}