summaryrefslogtreecommitdiff
path: root/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
diff options
context:
space:
mode:
authorLeyla Farazha <leyla@lindenlab.com>2011-06-01 15:44:46 -0700
committerLeyla Farazha <leyla@lindenlab.com>2011-06-01 15:44:46 -0700
commit926a9dcb58106650e8efda7a8a32b58bb6fcbd9e (patch)
tree6d569bbcee6f8448f3307149e4394e9dee9b20b8 /indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
parentfe9eccdbae9af3c61bff4637c1a61cdc09068a32 (diff)
parent5093f604cb04e8de54750498fd7fa01538f4b22c (diff)
merge
Diffstat (limited to 'indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl')
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl25
1 files changed, 15 insertions, 10 deletions
diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
index 495e86c8db..0ae09df0c6 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
@@ -37,19 +37,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;
}