diff options
| author | Dave Parks <davep@lindenlab.com> | 2011-05-25 18:19:00 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2011-05-25 18:19:00 -0500 | 
| commit | 7cf1d0714bbdce1e7e7f88e12607e28a2f441e91 (patch) | |
| tree | bf5eb01e9b42a52c963d2458f6dcba035b5821cd /indra/newview/app_settings/shaders/class2 | |
| parent | e3782b56337a9e0026ce4d2e6e9dabb2d8801be1 (diff) | |
| parent | 9ef81de6e15fe41a056112810237d2fdb908775b (diff) | |
merge
Diffstat (limited to 'indra/newview/app_settings/shaders/class2')
3 files changed, 45 insertions, 30 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;	  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl index 86f014df35..f6160815eb 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.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;	  } 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;	  } | 
