diff options
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 |
