diff options
| author | yum <yum.food.vr@gmail.com> | 2026-03-24 19:14:44 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2026-03-24 19:14:44 -0700 |
| commit | a5ac8d1093e0d54b7e2563eb3ea120e0e792481f (patch) | |
| tree | bead2b1a9aeb96c06468918d2be1013bf4ffc56e /lighting.cginc | |
| parent | 58a8ad92f766baddb2c832597a43088def456d82 (diff) | |
Try to avoid NaN in dominant direction calculation
Diffstat (limited to 'lighting.cginc')
| -rwxr-xr-x | lighting.cginc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lighting.cginc b/lighting.cginc index 0287f51..8b6693c 100755 --- a/lighting.cginc +++ b/lighting.cginc @@ -145,7 +145,15 @@ float4 getIndirectDiffuse(v2f i, Pbr pbr, inout LightData light) { ); // Multiply unit vector by L1 matrix to get vector pointing in direction of // light. + float3 raw_dir = mul(mat, float3(1,1,1)); + float raw_dir_len = length(raw_dir); float3 dom_dir = normalize(mul(mat, float3(1,1,1))); + if (abs(raw_dir_len) < 1e-3) { + dom_dir = light.direct.dir; + } else { + dom_dir = raw_dir; + } + dom_dir = normalize(dom_dir); light.indirect.diffuse_dominant_dir = dom_dir; #endif |
