diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
index 57916eb3e5620cf3103e58b82f935a80208e8601..3364d5b5fc6aec6ff0b38fe8e011c7c8489614f0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
@@ -158,7 +158,7 @@ void main()
 	
 	proj_tc.xyz /= proj_tc.w;
 	
-	float fa = falloff+1.0;
+	float fa = (falloff * 0.5)+1.0;
 	float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0);
 	dist_atten *= dist_atten;
 	dist_atten *= 2.0;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
index f8264d971c0f482e5dd8c4ca1421e03cda795619..55410c1ed7a3531f7408f1ded12cd5bf5b81c266 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
@@ -89,7 +89,7 @@ void main()
     float noise = texture2D(noiseMap, frag.xy/128.0).b;
     
     vec3 col = texture2DRect(diffuseRect, frag.xy).rgb;
-    float fa = falloff+1.0;
+    float fa = (falloff * 0.5)+1.0;
     float dist_atten = clamp(1.0-(dist-1.0*(1.0-fa))/fa, 0.0, 1.0);
     dist_atten *= dist_atten;
     dist_atten *= 2.0;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
index d09bc25334f5dd33127307e1453942221a22d75d..b546519a7d144709cab8634d9ee57f67bc539eb4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
@@ -155,7 +155,7 @@ void main()
 	
 	proj_tc.xyz /= proj_tc.w;
 	
-	float fa = falloff+1.0;
+	float fa = (falloff * 0.5)+1.0;
 	float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0);
 	dist_atten *= dist_atten;
 	dist_atten *= 2.0;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
index 05192e1737d663f243410268dc786dc58928f1f9..f817817f371c52a2be0da215ee78051b58eb505c 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
@@ -77,221 +77,223 @@ vec3 getNorm(vec2 pos_screen);
 
 vec4 correctWithGamma(vec4 col)
 {
-	return vec4(srgb_to_linear(col.rgb), col.a);
+    return vec4(srgb_to_linear(col.rgb), col.a);
 }
 
 vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
 {
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	ret = correctWithGamma(ret);
-	
-	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-	
-	float det = min(lod/(proj_lod*0.5), 1.0);
-	
-	float d = min(dist.x, dist.y);
+    vec4 ret = texture2DLod(projectionMap, tc, lod);
+    ret = correctWithGamma(ret);
+    
+    vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
+    
+    float det = min(lod/(proj_lod*0.5), 1.0);
+    
+    float d = min(dist.x, dist.y);
     
     d *= min(1, d * (proj_lod - lod));
-	
-	float edge = 0.25*det;
     
-	ret *= clamp(d/edge, 0.0, 1.0);
-	
-	return ret;
+    float edge = 0.25*det;
+    
+    ret *= clamp(d/edge, 0.0, 1.0);
+    
+    return ret;
 }
 
 vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
 {
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	ret = correctWithGamma(ret);
-
-	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-	
-	float det = min(lod/(proj_lod*0.5), 1.0);
-	
-	float d = min(dist.x, dist.y);
-	
-	float edge = 0.25*det;
-		
-	ret *= clamp(d/edge, 0.0, 1.0);
-	
-	return ret;
+    vec4 ret = texture2DLod(projectionMap, tc, lod);
+    ret = correctWithGamma(ret);
+
+    vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
+    
+    float det = min(lod/(proj_lod*0.5), 1.0);
+    
+    float d = min(dist.x, dist.y);
+    
+    float edge = 0.25*det;
+        
+    ret *= clamp(d/edge, 0.0, 1.0);
+    
+    return ret;
 }
 
 vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
 {
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-
-	vec2 dist = tc-vec2(0.5);
-	
-	float d = dot(dist,dist);
-		
-	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-	
-	return ret;
+    vec4 ret = texture2DLod(projectionMap, tc, lod);
+
+    vec2 dist = tc-vec2(0.5);
+    
+    float d = dot(dist,dist);
+        
+    ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
+    
+    return ret;
 }
 
 vec4 getPosition(vec2 pos_screen);
 
 void main() 
 {
-	vec4 frag = vary_fragcoord;
-	frag.xyz /= frag.w;
-	frag.xyz = frag.xyz*0.5+0.5;
-	frag.xy *= screen_res;
-	
-	vec3 pos = getPosition(frag.xy).xyz;
-	vec3 lv = center.xyz-pos.xyz;
-	float dist = length(lv);
-
-    if ((size > 0) && ((dist / size) > 1.0))
+    vec4 frag = vary_fragcoord;
+    frag.xyz /= frag.w;
+    frag.xyz = frag.xyz*0.5+0.5;
+    frag.xy *= screen_res;
+    
+    vec3 pos = getPosition(frag.xy).xyz;
+    vec3 lv = center.xyz-pos.xyz;
+    float dist = length(lv);
+
+    if (dist >= size)
     {
         discard;
     }
-	
-	float shadow = 1.0;
-	
-	if (proj_shadow_idx >= 0)
-	{
-		vec4 shd = texture2DRect(lightMap, frag.xy);
-                shadow = max(shd.b, shd.a) + shadow_fade;
-		shadow = clamp(shadow, 0.0, 1.0);
-	}
-	
-	vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
-	
-	float envIntensity = norm.z;
-
-	norm = getNorm(frag.xy);
-	
-	norm = normalize(norm);
-	float l_dist = -dot(lv, proj_n);
-	
-	vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
-	if (proj_tc.z < 0.0)
-	{
-		discard;
-	}
-	
-	proj_tc.xyz /= proj_tc.w;
-	
-	float fa = falloff+1.0;
-	float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0);
-	dist_atten *= dist_atten;
-	dist_atten *= 2.0;
-	if (dist_atten <= 0.0)
-	{
-		discard;
-	}
-	
-	lv = proj_origin-pos.xyz;
-	lv = normalize(lv);
-	float da = dot(norm, lv);
-
-	vec3 col = vec3(0,0,0);
-		
-	vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb;
-	
-	vec4 spec = texture2DRect(specularRect, frag.xy);
-
-	vec3 dlit = vec3(0, 0, 0);
-
-	float noise = texture2D(noiseMap, frag.xy/128.0).b;
-	if (proj_tc.z > 0.0 &&
-		proj_tc.x < 1.0 &&
-		proj_tc.y < 1.0 &&
-		proj_tc.x > 0.0 &&
-		proj_tc.y > 0.0)
-	{
-		float amb_da = proj_ambiance;
-		float lit = 0.0;
-
-		if (da > 0.0)
-		{
-			lit = da * dist_atten * noise;
-
-			float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
-			float lod = diff * proj_lod;
-			
-			vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-		
-			dlit = color.rgb * plcol.rgb * plcol.a;
-			
-			col = dlit*lit*diff_tex*shadow;
-			amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
-		}
-		
-		//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
-		vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-							
-		amb_da += (da*da*0.5+0.5)*(1.0-shadow)*proj_ambiance;
-		amb_da *= dist_atten * noise;
-		amb_da = min(amb_da, 1.0-lit);
-		col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
-	}
-	
-
-	if (spec.a > 0.0)
-	{
-		vec3 npos = -normalize(pos);
-		dlit *= min(da*6.0, 1.0) * dist_atten;
-
-		//vec3 ref = dot(pos+lv, norm);
-		vec3 h = normalize(lv+npos);
-		float nh = dot(norm, h);
-		float nv = dot(norm, npos);
-		float vh = dot(npos, h);
-		float sa = nh;
-		float fres = pow(1 - dot(h, npos), 5)*0.4+0.5;
-
-		float gtdenom = 2 * nh;
-		float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh));
-								
-		if (nh > 0.0)
-		{
-			float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt/(nh*da);
+    dist /= size;
+
+    float shadow = 1.0;
+    
+    if (proj_shadow_idx >= 0)
+    {
+        vec4 shd = texture2DRect(lightMap, frag.xy);
+        shadow = (proj_shadow_idx==0)?shd.b:shd.a;
+        shadow = clamp(shadow, 0.0, 1.0);
+        shadow += shadow_fade;
+    }
+    
+    vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
+    
+    float envIntensity = norm.z;
+
+    norm = getNorm(frag.xy);
+    
+    norm = normalize(norm);
+    float l_dist = -dot(lv, proj_n);
+    
+    vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
+    if (proj_tc.z < 0.0)
+    {
+        discard;
+    }
+    
+    proj_tc.xyz /= proj_tc.w;
+    
+    float fa = (falloff * 0.5)+1.0;
+    float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0);
+    dist_atten *= dist_atten;
+    dist_atten *= 2.0;
+    if (dist_atten <= 0.0)
+    {
+        discard;
+    }
+    
+    lv = proj_origin-pos.xyz;
+    lv = normalize(lv);
+    float da = dot(norm, lv);
+
+    vec3 col = vec3(0,0,0);
+        
+    vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb;
+    
+    vec4 spec = texture2DRect(specularRect, frag.xy);
+
+    vec3 dlit = vec3(0, 0, 0);
+
+    float noise = texture2D(noiseMap, frag.xy/128.0).b;
+    if (proj_tc.z > 0.0 &&
+        proj_tc.x < 1.0 &&
+        proj_tc.y < 1.0 &&
+        proj_tc.x > 0.0 &&
+        proj_tc.y > 0.0)
+    {
+        float amb_da = proj_ambiance;
+        float lit = 0.0;
+
+        if (da > 0.0)
+        {
+            lit = da * dist_atten * noise;
+
+            float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
+            float lod = diff * proj_lod;
+            
+            vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
+        
+            dlit = color.rgb * plcol.rgb * plcol.a;
+            
+            col = dlit*lit*diff_tex*shadow;
+            amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
+        }
+        
+        //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
+        vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
+                            
+        amb_da += (da*da*0.5+0.5)*(1.0-shadow)*proj_ambiance;
+        amb_da *= dist_atten * noise;
+        amb_da = min(amb_da, 1.0-lit);
+        col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
+    }
+    
+
+    if (spec.a > 0.0)
+    {
+        vec3 npos = -normalize(pos);
+        dlit *= min(da*6.0, 1.0) * dist_atten;
+
+        //vec3 ref = dot(pos+lv, norm);
+        vec3 h = normalize(lv+npos);
+        float nh = dot(norm, h);
+        float nv = dot(norm, npos);
+        float vh = dot(npos, h);
+        float sa = nh;
+        float fres = pow(1 - dot(h, npos), 5)*0.4+0.5;
+
+        float gtdenom = 2 * nh;
+        float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh));
+                                
+        if (nh > 0.0)
+        {
+            float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt/(nh*da);
             vec3 speccol = dlit*scol*spec.rgb*shadow;
             speccol = max(speccol, vec3(0));
-			col += speccol;
-		}
-	}	
-	
-	
-	
-	
-
-	if (envIntensity > 0.0)
-	{
-		vec3 ref = reflect(normalize(pos), norm);
-		
-		//project from point pos in direction ref to plane proj_p, proj_n
-		vec3 pdelta = proj_p-pos;
-		float ds = dot(ref, proj_n);
-		
-		if (ds < 0.0)
-		{
-			vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-			
-			vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
-
-			if (stc.z > 0.0)
-			{
+            col += speccol;
+        }
+    }   
+    
+    
+    
+    
+
+    if (envIntensity > 0.0)
+    {
+        vec3 ref = reflect(normalize(pos), norm);
+        
+        //project from point pos in direction ref to plane proj_p, proj_n
+        vec3 pdelta = proj_p-pos;
+        float ds = dot(ref, proj_n);
+        
+        if (ds < 0.0)
+        {
+            vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
+            
+            vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
+
+            if (stc.z > 0.0)
+            {
                 stc /= stc.w;
-								
-				if (stc.x < 1.0 &&
-					stc.y < 1.0 &&
-					stc.x > 0.0 &&
-					stc.y > 0.0)
-				{
-					col += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity;
-				}
-			}
-		}
-	}
-
-	//not sure why, but this line prevents MATBUG-194
-	col = max(col, vec3(0.0));
-
-	frag_color.rgb = col;	
-	frag_color.a = 0.0;
+                                
+                if (stc.x < 1.0 &&
+                    stc.y < 1.0 &&
+                    stc.x > 0.0 &&
+                    stc.y > 0.0)
+                {
+                    col += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity;
+                }
+            }
+        }
+    }
+
+    //not sure why, but this line prevents MATBUG-194
+    col = max(col, vec3(0.0));
+
+    frag_color.rgb = col;   
+    frag_color.a = 0.0;
 }
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
index 4a5f5e642bb4ea4b49b3d7d17c875828f0afe41b..510d1ca9fd2a3c7851db58ccb6be5a1398413d59 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
@@ -144,18 +144,20 @@ void main()
 	vec3 lv = trans_center.xyz-pos.xyz;
 	float dist = length(lv);
 
-    if ((size > 0) && ((dist / size) > 1.0))
+    if (dist >= size)
     {
         discard;
     }
-	
+	dist /= size;
+
 	float shadow = 1.0;
 	
 	if (proj_shadow_idx >= 0)
 	{
 		vec4 shd = texture2DRect(lightMap, frag.xy);
-                shadow = max(shd.b, shd.a) + shadow_fade;
-		shadow = min(shadow, 1.0);
+        shadow = (proj_shadow_idx == 0) ? shd.b : shd.a;
+		shadow = clamp(shadow, 0.0, 1.0);
+        shadow += shadow_fade;
 	}
 	
 	vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
@@ -173,7 +175,7 @@ void main()
 	
 	proj_tc.xyz /= proj_tc.w;
 	
-	float fa = falloff + 1.0;
+	float fa = (falloff * 0.5) + 1.0;
 	float dist_atten = min(1.0 - (dist - 1.0 * (1.0 - fa)) / fa, 1.0);
 	dist_atten *= dist_atten;
 	dist_atten *= 2.0;
diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl
index 0c113282b5b15093d675dd11e677e07d407aef67..dec9afcfb79915592be930b1f4e8bb33ac548f7b 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl
@@ -77,59 +77,59 @@ vec3 getNorm(vec2 pos_screen);
 
 vec4 correctWithGamma(vec4 col)
 {
-	return vec4(srgb_to_linear(col.rgb), col.a);
+    return vec4(srgb_to_linear(col.rgb), col.a);
 }
 
 vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
 {
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	ret.rgb = srgb_to_linear(ret.rgb);
-	
-	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-	
-	float det = min(lod/(proj_lod*0.5), 1.0);
-	
-	float d = min(dist.x, dist.y);
+    vec4 ret = texture2DLod(projectionMap, tc, lod);
+    ret.rgb = srgb_to_linear(ret.rgb);
+    
+    vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
+    
+    float det = min(lod/(proj_lod*0.5), 1.0);
+    
+    float d = min(dist.x, dist.y);
     
     d *= min(1, d * (proj_lod - lod));
-	
-	float edge = 0.25*det;
     
-	ret *= clamp(d/edge, 0.0, 1.0);
-	
-	return ret;
+    float edge = 0.25*det;
+    
+    ret *= clamp(d/edge, 0.0, 1.0);
+    
+    return ret;
 }
 
 vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
 {
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	ret = correctWithGamma(ret);
+    vec4 ret = texture2DLod(projectionMap, tc, lod);
+    ret = correctWithGamma(ret);
 
-	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-	
-	float det = min(lod/(proj_lod*0.5), 1.0);
-	
-	float d = min(dist.x, dist.y);
-	
-	float edge = 0.25*det;
-		
-	ret *= clamp(d/edge, 0.0, 1.0);
-	
-	return ret;
+    vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
+    
+    float det = min(lod/(proj_lod*0.5), 1.0);
+    
+    float d = min(dist.x, dist.y);
+    
+    float edge = 0.25*det;
+        
+    ret *= clamp(d/edge, 0.0, 1.0);
+    
+    return ret;
 }
 
 vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
 {
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	ret = correctWithGamma(ret);
+    vec4 ret = texture2DLod(projectionMap, tc, lod);
+    ret = correctWithGamma(ret);
 
-	vec2 dist = tc-vec2(0.5);
-	
-	float d = dot(dist,dist);
-		
-	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-	
-	return ret;
+    vec2 dist = tc-vec2(0.5);
+    
+    float d = dot(dist,dist);
+        
+    ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
+    
+    return ret;
 }
 
 
@@ -137,167 +137,166 @@ vec4 getPosition(vec2 pos_screen);
 
 void main() 
 {
-	vec4 frag = vary_fragcoord;
-	frag.xyz /= frag.w;
-	frag.xyz = frag.xyz*0.5+0.5;
-	frag.xy *= screen_res;
-	
-	vec3 pos = getPosition(frag.xy).xyz;
-	vec3 lv = center.xyz-pos.xyz;
-	float dist = length(lv);
-	dist /= size;
-	if (dist > 1.0)
-	{
-		discard;
-	}
-	
-	float shadow = 1.0;
-	
-	if (proj_shadow_idx >= 0)
-	{
-		vec4 shd = texture2DRect(lightMap, frag.xy);
-		float sh[2];
-		sh[0] = shd.b;
-		sh[1] = shd.a;
-		shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0);
-	}
-	
-	vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
-	
-	float envIntensity = norm.z;
+    vec4 frag = vary_fragcoord;
+    frag.xyz /= frag.w;
+    frag.xyz = frag.xyz*0.5+0.5;
+    frag.xy *= screen_res;
+    
+    vec3 pos = getPosition(frag.xy).xyz;
+    vec3 lv = center.xyz-pos.xyz;
+    float dist = length(lv);
+    dist /= size;
+    if (dist > 1.0)
+    {
+        discard;
+    }
+    
+    float shadow = 1.0;
+    
+    if (proj_shadow_idx >= 0)
+    {
+        vec4 shd = texture2DRect(lightMap, frag.xy);
+        shadow = (proj_shadow_idx == 0) ? shd.b : shd.a;
+        shadow = clamp(shadow, 0.0, 1.0);
+        shadow += shadow_fade;
+    }
+    
+    vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
+    
+    float envIntensity = norm.z;
 
-	norm = getNorm(frag.xy);
-	
-	norm = normalize(norm);
-	float l_dist = -dot(lv, proj_n);
-	
-	vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
-	if (proj_tc.z < 0.0)
-	{
-		discard;
-	}
-	
-	proj_tc.xyz /= proj_tc.w;
-	
-	float fa = falloff+1.0;
-	float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0);
-	dist_atten *= dist_atten;
-	dist_atten *= 2.0;
-	if (dist_atten <= 0.0)
-	{
-		discard;
-	}
-	
-	lv = proj_origin-pos.xyz;
-	lv = normalize(lv);
-	float da = dot(norm, lv);
+    norm = getNorm(frag.xy);
+    
+    norm = normalize(norm);
+    float l_dist = -dot(lv, proj_n);
+    
+    vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
+    if (proj_tc.z < 0.0)
+    {
+        discard;
+    }
+    
+    proj_tc.xyz /= proj_tc.w;
+    
+    float fa = (falloff*0.5)+1.0;
+    float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0);
+    dist_atten *= dist_atten;
+    dist_atten *= 2.0;
+    if (dist_atten <= 0.0)
+    {
+        discard;
+    }
+    
+    lv = proj_origin-pos.xyz;
+    lv = normalize(lv);
+    float da = dot(norm, lv);
 
-	vec3 col = vec3(0,0,0);
-		
-	vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb;
-	
-	vec4 spec = texture2DRect(specularRect, frag.xy);
+    vec3 col = vec3(0,0,0);
+        
+    vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb;
+    
+    vec4 spec = texture2DRect(specularRect, frag.xy);
 
-	vec3 dlit = vec3(0, 0, 0);
+    vec3 dlit = vec3(0, 0, 0);
 
-	float noise = texture2D(noiseMap, frag.xy/128.0).b;
-	if (proj_tc.z > 0.0 &&
-		proj_tc.x < 1.0 &&
-		proj_tc.y < 1.0 &&
-		proj_tc.x > 0.0 &&
-		proj_tc.y > 0.0)
-	{
-		float amb_da = proj_ambiance;
-		float lit = 0.0;
+    float noise = texture2D(noiseMap, frag.xy/128.0).b;
+    if (proj_tc.z > 0.0 &&
+        proj_tc.x < 1.0 &&
+        proj_tc.y < 1.0 &&
+        proj_tc.x > 0.0 &&
+        proj_tc.y > 0.0)
+    {
+        float amb_da = proj_ambiance;
+        float lit = 0.0;
 
-		if (da > 0.0)
-		{
-			lit = da * dist_atten * noise;
+        if (da > 0.0)
+        {
+            lit = da * dist_atten * noise;
 
-			float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
-			float lod = diff * proj_lod;
-			
-			vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-		
-			dlit = color.rgb * plcol.rgb * plcol.a;
-			
-			col = dlit*lit*diff_tex*shadow;
-			amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
-		}
-		
-		//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
-		vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-							
-		amb_da += (da*da*0.5+0.5)*(1.0-shadow)*proj_ambiance;
-				
-		amb_da *= dist_atten * noise;
-			
-		amb_da = min(amb_da, 1.0-lit);
-			
-		col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
-	}
-	
+            float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
+            float lod = diff * proj_lod;
+            
+            vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
+        
+            dlit = color.rgb * plcol.rgb * plcol.a;
+            
+            col = dlit*lit*diff_tex*shadow;
+            amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
+        }
+        
+        //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
+        vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
+                            
+        amb_da += (da*da*0.5+0.5)*(1.0-shadow)*proj_ambiance;
+                
+        amb_da *= dist_atten * noise;
+            
+        amb_da = min(amb_da, 1.0-lit);
+            
+        col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
+    }
+    
 
-	if (spec.a > 0.0)
-	{
-		vec3 npos = -normalize(pos);
-		dlit *= min(da*6.0, 1.0) * dist_atten;
+    if (spec.a > 0.0)
+    {
+        vec3 npos = -normalize(pos);
+        dlit *= min(da*6.0, 1.0) * dist_atten;
 
-		//vec3 ref = dot(pos+lv, norm);
-		vec3 h = normalize(lv+npos);
-		float nh = dot(norm, h);
-		float nv = dot(norm, npos);
-		float vh = dot(npos, h);
-		float sa = nh;
-		float fres = pow(1 - dot(h, npos), 5)*0.4+0.5;
+        //vec3 ref = dot(pos+lv, norm);
+        vec3 h = normalize(lv+npos);
+        float nh = dot(norm, h);
+        float nv = dot(norm, npos);
+        float vh = dot(npos, h);
+        float sa = nh;
+        float fres = pow(1 - dot(h, npos), 5)*0.4+0.5;
 
-		float gtdenom = 2 * nh;
-		float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh));
-								
-		if (nh > 0.0)
-		{
-			float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt/(nh*da);
-			col += dlit*scol*spec.rgb*shadow;
-			//col += spec.rgb;
-		}
-	}	
-	
-	
-	
-	
+        float gtdenom = 2 * nh;
+        float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh));
+                                
+        if (nh > 0.0)
+        {
+            float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt/(nh*da);
+            col += dlit*scol*spec.rgb*shadow;
+            //col += spec.rgb;
+        }
+    }   
+    
+    
+    
+    
 
-	if (envIntensity > 0.0)
-	{
-		vec3 ref = reflect(normalize(pos), norm);
-		
-		//project from point pos in direction ref to plane proj_p, proj_n
-		vec3 pdelta = proj_p-pos;
-		float ds = dot(ref, proj_n);
-		
-		if (ds < 0.0)
-		{
-			vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-			
-			vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
+    if (envIntensity > 0.0)
+    {
+        vec3 ref = reflect(normalize(pos), norm);
+        
+        //project from point pos in direction ref to plane proj_p, proj_n
+        vec3 pdelta = proj_p-pos;
+        float ds = dot(ref, proj_n);
+        
+        if (ds < 0.0)
+        {
+            vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
+            
+            vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
 
-			if (stc.z > 0.0)
-			{
+            if (stc.z > 0.0)
+            {
                 stc /= stc.w;
-								
-				if (stc.x < 1.0 &&
-					stc.y < 1.0 &&
-					stc.x > 0.0 &&
-					stc.y > 0.0)
-				{
-					col += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity;
-				}
-			}
-		}
-	}
+                                
+                if (stc.x < 1.0 &&
+                    stc.y < 1.0 &&
+                    stc.x > 0.0 &&
+                    stc.y > 0.0)
+                {
+                    col += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity;
+                }
+            }
+        }
+    }
 
-	//not sure why, but this line prevents MATBUG-194
-	col = max(col, vec3(0.0));
+    //not sure why, but this line prevents MATBUG-194
+    col = max(col, vec3(0.0));
 
-	frag_color.rgb = col;	
-	frag_color.a = 0.0;
+    frag_color.rgb = col;   
+    frag_color.a = 0.0;
 }
diff --git a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl
index 00b276f5859a6b76010c3d787f0b432fbb497baf..6a813cac153802b395f614fa11080d2e5bada9cf 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl
@@ -77,59 +77,59 @@ vec3 linear_to_srgb(vec3 cl);
 
 vec4 correctWithGamma(vec4 col)
 {
-	return vec4(srgb_to_linear(col.rgb), col.a);
+    return vec4(srgb_to_linear(col.rgb), col.a);
 }
 
 vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
 {
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	ret.rgb = srgb_to_linear(ret.rgb);
-	
-	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-	
-	float det = min(lod/(proj_lod*0.5), 1.0);
-	
-	float d = min(dist.x, dist.y);
+    vec4 ret = texture2DLod(projectionMap, tc, lod);
+    ret.rgb = srgb_to_linear(ret.rgb);
+    
+    vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
+    
+    float det = min(lod/(proj_lod*0.5), 1.0);
+    
+    float d = min(dist.x, dist.y);
     
     d *= min(1, d * (proj_lod - lod));
-	
-	float edge = 0.25*det;
     
-	ret *= clamp(d/edge, 0.0, 1.0);
-	
-	return ret;
+    float edge = 0.25*det;
+    
+    ret *= clamp(d/edge, 0.0, 1.0);
+    
+    return ret;
 }
 
 vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
 {
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	ret = correctWithGamma(ret);
-	
-	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-	
-	float det = min(lod/(proj_lod*0.5), 1.0);
-	
-	float d = min(dist.x, dist.y);
-	
-	float edge = 0.25*det;
-		
-	ret *= clamp(d/edge, 0.0, 1.0);
-	
-	return ret;
+    vec4 ret = texture2DLod(projectionMap, tc, lod);
+    ret = correctWithGamma(ret);
+    
+    vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
+    
+    float det = min(lod/(proj_lod*0.5), 1.0);
+    
+    float d = min(dist.x, dist.y);
+    
+    float edge = 0.25*det;
+        
+    ret *= clamp(d/edge, 0.0, 1.0);
+    
+    return ret;
 }
 
 vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
 {
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	ret = correctWithGamma(ret);
-	
-	vec2 dist = tc-vec2(0.5);
-	
-	float d = dot(dist,dist);
-		
-	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-	
-	return ret;
+    vec4 ret = texture2DLod(projectionMap, tc, lod);
+    ret = correctWithGamma(ret);
+    
+    vec2 dist = tc-vec2(0.5);
+    
+    float d = dot(dist,dist);
+        
+    ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
+    
+    return ret;
 }
 
 
@@ -137,163 +137,162 @@ vec4 getPosition(vec2 pos_screen);
 
 void main() 
 {
-	vec4 frag = vary_fragcoord;
-	frag.xyz /= frag.w;
-	frag.xyz = frag.xyz*0.5+0.5;
-	frag.xy *= screen_res;
-	
-	vec3 pos = getPosition(frag.xy).xyz;
-	vec3 lv = trans_center.xyz-pos.xyz;
-	float dist = length(lv);
-	dist /= size;
-	if (dist > 1.0)
-	{
-		discard;
-	}
-	
-	float shadow = 1.0;
-	
-	if (proj_shadow_idx >= 0)
-	{
-		vec4 shd = texture2DRect(lightMap, frag.xy);
-		float sh[2];
-		sh[0] = shd.b;
-		sh[1] = shd.a;
-		shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0);
-	}
-	
-	vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
-	float envIntensity = norm.z;
-	norm = getNorm(frag.xy);
-	
-	norm = normalize(norm);
-	float l_dist = -dot(lv, proj_n);
-	
-	vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
-	if (proj_tc.z < 0.0)
-	{
-		discard;
-	}
-	
-	proj_tc.xyz /= proj_tc.w;
-	
-	float fa = falloff + 1.0;
-	float dist_atten = min(1.0 - (dist - 1.0 * (1.0 - fa)) / fa, 1.0);
-	dist_atten *= dist_atten;
-	dist_atten *= 2.0;
+    vec4 frag = vary_fragcoord;
+    frag.xyz /= frag.w;
+    frag.xyz = frag.xyz*0.5+0.5;
+    frag.xy *= screen_res;
+    
+    vec3 pos = getPosition(frag.xy).xyz;
+    vec3 lv = trans_center.xyz-pos.xyz;
+    float dist = length(lv);
+    dist /= size;
+    if (dist > 1.0)
+    {
+        discard;
+    }
+    
+    float shadow = 1.0;
+    
+    if (proj_shadow_idx >= 0)
+    {
+        vec4 shd = texture2DRect(lightMap, frag.xy);
+        shadow = (proj_shadow_idx == 0) ? shd.b : shd.a;
+        shadow = clamp(shadow, 0.0, 1.0);
+        shadow += shadow_fade;
+    }
+    
+    vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
+    float envIntensity = norm.z;
+    norm = getNorm(frag.xy);
+    
+    norm = normalize(norm);
+    float l_dist = -dot(lv, proj_n);
+    
+    vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
+    if (proj_tc.z < 0.0)
+    {
+        discard;
+    }
+    
+    proj_tc.xyz /= proj_tc.w;
+    
+    float fa = (falloff*0.5) + 1.0;
+    float dist_atten = min(1.0 - (dist - 1.0 * (1.0 - fa)) / fa, 1.0);
+    dist_atten *= dist_atten;
+    dist_atten *= 2.0;
 
-	if (dist_atten <= 0.0)
-	{
-		discard;
-	}
-	
-	lv = proj_origin-pos.xyz;
-	lv = normalize(lv);
-	float da = dot(norm, lv);
-		
-	vec3 col = vec3(0,0,0);
-		
-	vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb;
-		
-	vec4 spec = texture2DRect(specularRect, frag.xy);
+    if (dist_atten <= 0.0)
+    {
+        discard;
+    }
+    
+    lv = proj_origin-pos.xyz;
+    lv = normalize(lv);
+    float da = dot(norm, lv);
+        
+    vec3 col = vec3(0,0,0);
+        
+    vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb;
+        
+    vec4 spec = texture2DRect(specularRect, frag.xy);
 
-	vec3 dlit = vec3(0, 0, 0);
+    vec3 dlit = vec3(0, 0, 0);
 
-	float noise = texture2D(noiseMap, frag.xy/128.0).b;
-	if (proj_tc.z > 0.0 &&
-		proj_tc.x < 1.0 &&
-		proj_tc.y < 1.0 &&
-		proj_tc.x > 0.0 &&
-		proj_tc.y > 0.0)
-	{
-		float amb_da = proj_ambiance;
-		float lit = 0.0;
-		
-		if (da > 0.0)
-		{
-			lit = da * dist_atten * noise;
+    float noise = texture2D(noiseMap, frag.xy/128.0).b;
+    if (proj_tc.z > 0.0 &&
+        proj_tc.x < 1.0 &&
+        proj_tc.y < 1.0 &&
+        proj_tc.x > 0.0 &&
+        proj_tc.y > 0.0)
+    {
+        float amb_da = proj_ambiance;
+        float lit = 0.0;
+        
+        if (da > 0.0)
+        {
+            lit = da * dist_atten * noise;
 
-			float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
-			float lod = diff * proj_lod;
-			
-			vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-		
-			dlit = color.rgb * plcol.rgb * plcol.a;
-			
-			col = dlit*lit*diff_tex*shadow;
-			amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
-		}
-		
-		//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
-		vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-							
-		amb_da += (da*da*0.5+0.5)*(1.0-shadow)*proj_ambiance;
-				
-		amb_da *= dist_atten * noise;
-			
-		amb_da = min(amb_da, 1.0-lit);
-			
-		col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
-	}
-	
+            float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
+            float lod = diff * proj_lod;
+            
+            vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
+        
+            dlit = color.rgb * plcol.rgb * plcol.a;
+            
+            col = dlit*lit*diff_tex*shadow;
+            amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
+        }
+        
+        //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
+        vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
+                            
+        amb_da += (da*da*0.5+0.5)*(1.0-shadow)*proj_ambiance;
+                
+        amb_da *= dist_atten * noise;
+            
+        amb_da = min(amb_da, 1.0-lit);
+            
+        col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
+    }
+    
 
-	if (spec.a > 0.0)
-	{
-		dlit *= min(da*6.0, 1.0) * dist_atten;
-		vec3 npos = -normalize(pos);
+    if (spec.a > 0.0)
+    {
+        dlit *= min(da*6.0, 1.0) * dist_atten;
+        vec3 npos = -normalize(pos);
 
-		//vec3 ref = dot(pos+lv, norm);
-		vec3 h = normalize(lv+npos);
-		float nh = dot(norm, h);
-		float nv = dot(norm, npos);
-		float vh = dot(npos, h);
-		float sa = nh;
-		float fres = pow(1 - dot(h, npos), 5)*0.4+0.5;
+        //vec3 ref = dot(pos+lv, norm);
+        vec3 h = normalize(lv+npos);
+        float nh = dot(norm, h);
+        float nv = dot(norm, npos);
+        float vh = dot(npos, h);
+        float sa = nh;
+        float fres = pow(1 - dot(h, npos), 5)*0.4+0.5;
 
-		float gtdenom = 2 * nh;
-		float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh));
-								
-		if (nh > 0.0)
-		{
-			float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt/(nh*da);
-			col += dlit*scol*spec.rgb*shadow;
-			//col += spec.rgb;
-		}
-	}	
-	
+        float gtdenom = 2 * nh;
+        float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh));
+                                
+        if (nh > 0.0)
+        {
+            float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt/(nh*da);
+            col += dlit*scol*spec.rgb*shadow;
+            //col += spec.rgb;
+        }
+    }   
+    
 
-	if (envIntensity > 0.0)
-	{
-		vec3 ref = reflect(normalize(pos), norm);
-		
-		//project from point pos in direction ref to plane proj_p, proj_n
-		vec3 pdelta = proj_p-pos;
-		float ds = dot(ref, proj_n);
-		
-		if (ds < 0.0)
-		{
-			vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-			
-			vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
+    if (envIntensity > 0.0)
+    {
+        vec3 ref = reflect(normalize(pos), norm);
+        
+        //project from point pos in direction ref to plane proj_p, proj_n
+        vec3 pdelta = proj_p-pos;
+        float ds = dot(ref, proj_n);
+        
+        if (ds < 0.0)
+        {
+            vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
+            
+            vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
 
-			if (stc.z > 0.0)
-			{
-				stc /= stc.w;
-								
-				if (stc.x < 1.0 &&
-					stc.y < 1.0 &&
-					stc.x > 0.0 &&
-					stc.y > 0.0)
-				{
-					col += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity;
-				}
-			}
-		}
-	}
-	
-	//not sure why, but this line prevents MATBUG-194
-	col = max(col, vec3(0.0));
+            if (stc.z > 0.0)
+            {
+                stc /= stc.w;
+                                
+                if (stc.x < 1.0 &&
+                    stc.y < 1.0 &&
+                    stc.x > 0.0 &&
+                    stc.y > 0.0)
+                {
+                    col += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity;
+                }
+            }
+        }
+    }
+    
+    //not sure why, but this line prevents MATBUG-194
+    col = max(col, vec3(0.0));
 
-	frag_color.rgb = col;	
-	frag_color.a = 0.0;
+    frag_color.rgb = col;   
+    frag_color.a = 0.0;
 }