diff options
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/deferred')
3 files changed, 12 insertions, 13 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl index 0170ad4b55..40b0cf47ac 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl @@ -61,17 +61,17 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	vec3 lv = lp.xyz-v;  	//get distance -	float d = length(lv); +	float d = dot(lv,lv);  	float da = 0.0;  	if (d > 0.0 && la > 0.0 && fa > 0.0)  	{  		//normalize light vector -		lv *= 1.0/d; +		lv = normalize(lv);  		//distance attenuation -		float dist2 = d*d/(la*la); +		float dist2 = d/la;  		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);  		// spotlight coefficient. @@ -79,7 +79,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  		da *= spot*spot; // GL_SPOT_EXPONENT=2  		//angular attenuation -		da *= calcDirectionalLight(n, lv); +		da *= max(dot(n, lv), 0.0);		  	}  	return da;	 diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index 93b1a114db..8c96d55342 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl @@ -70,17 +70,17 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	vec3 lv = lp.xyz-v;  	//get distance -	float d = length(lv); +	float d = dot(lv,lv);  	float da = 0.0;  	if (d > 0.0 && la > 0.0 && fa > 0.0)  	{  		//normalize light vector -		lv *= 1.0/d; +		lv = normalize(lv);  		//distance attenuation -		float dist2 = d*d/(la*la); +		float dist2 = d/la;  		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);  		// spotlight coefficient. @@ -88,7 +88,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  		da *= spot*spot; // GL_SPOT_EXPONENT=2  		//angular attenuation -		da *= calcDirectionalLight(n, lv); +		da *= max(dot(n, lv), 0.0);		  	}  	return da;	 @@ -123,7 +123,6 @@ void main()  	col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);  	vary_pointlight_col = col.rgb*diffuse_color.rgb; -  	col.rgb = vec3(0,0,0);  	// Add windlight lights diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl index d7b90978ba..c0edddc40a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl @@ -65,17 +65,17 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	vec3 lv = lp.xyz-v;  	//get distance -	float d = length(lv); +	float d = dot(lv,lv);  	float da = 0.0;  	if (d > 0.0 && la > 0.0 && fa > 0.0)  	{  		//normalize light vector -		lv *= 1.0/d; +		lv = normalize(lv);  		//distance attenuation -		float dist2 = d*d/(la*la); +		float dist2 = d/la;  		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);  		// spotlight coefficient. @@ -83,7 +83,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  		da *= spot*spot; // GL_SPOT_EXPONENT=2  		//angular attenuation -		da *= calcDirectionalLight(n, lv); +		da *= max(dot(n, lv), 0.0);		  	}  	return da;	 | 
