diff options
author | Leyla Farazha <leyla@lindenlab.com> | 2011-06-01 15:44:46 -0700 |
---|---|---|
committer | Leyla Farazha <leyla@lindenlab.com> | 2011-06-01 15:44:46 -0700 |
commit | 926a9dcb58106650e8efda7a8a32b58bb6fcbd9e (patch) | |
tree | 6d569bbcee6f8448f3307149e4394e9dee9b20b8 /indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl | |
parent | fe9eccdbae9af3c61bff4637c1a61cdc09068a32 (diff) | |
parent | 5093f604cb04e8de54750498fd7fa01538f4b22c (diff) |
merge
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl')
-rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl index a2a7dea20d..a012cb5030 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa //get distance float d = length(lv); - //normalize light vector - lv *= 1.0/d; + float da = 0.0; + + if (d > 0.0 && la > 0.0 && fa > 0.0) + { + //normalize light vector + lv *= 1.0/d; - //distance attenuation - float dist2 = d*d/(la*la); - float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + //distance attenuation + float dist2 = d*d/(la*la); + da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); - // spotlight coefficient. - float spot = max(dot(-ln, lv), is_pointlight); - da *= spot*spot; // GL_SPOT_EXPONENT=2 + // spotlight coefficient. + float spot = max(dot(-ln, lv), is_pointlight); + da *= spot*spot; // GL_SPOT_EXPONENT=2 - //angular attenuation - da *= calcDirectionalLight(n, lv); + //angular attenuation + da *= calcDirectionalLight(n, lv); + } return da; } |