summaryrefslogtreecommitdiff
path: root/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
diff options
context:
space:
mode:
authorDon Kjer <don@lindenlab.com>2011-06-13 02:48:52 +0000
committerDon Kjer <don@lindenlab.com>2011-06-13 02:48:52 +0000
commit45c6dcbe87fbfc1351e4faa9ef3196a191b7dd69 (patch)
tree4fe43929cb518d67e8afbd227db3bc62e4d175e5 /indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
parent694b0838bc80efc152e7ecda09ffdc7a944b7079 (diff)
parent12d9d1d3ef76518171ae87aae2467593218f8413 (diff)
Merge
Diffstat (limited to 'indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl')
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl25
1 files changed, 15 insertions, 10 deletions
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
index d227346163..dfb36980b0 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.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;
}