diff options
| author | Geenz <geenz@geenzo.com> | 2014-09-03 22:13:01 -0400 | 
|---|---|---|
| committer | Geenz <geenz@geenzo.com> | 2014-09-03 22:13:01 -0400 | 
| commit | 5282e021abd94b3687c8aadfeab4fcad6e5ef348 (patch) | |
| tree | 162e710a24c19417d43c635564ebfde705fb95a0 /indra/newview/app_settings/shaders/class2/deferred | |
| parent | 0c34a92d43eb8ae4450df7e87f9d216648ebd50b (diff) | |
Switch back to texture2dSpecular with a custom falloff dependent upon LOD.
Diffstat (limited to 'indra/newview/app_settings/shaders/class2/deferred')
| -rwxr-xr-x | indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl | 20 | ||||
| -rwxr-xr-x | indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl | 18 | 
2 files changed, 23 insertions, 15 deletions
| diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index 09cb195fa3..65bf08ee66 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -131,15 +131,19 @@ vec4 correctWithGamma(vec4 col)  vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)  {  	vec4 ret = texture2DLod(projectionMap, tc, lod); -	ret = correctWithGamma(ret); - -	vec2 dist = tc-vec2(0.5); +	ret.rgb = srgb_to_linear(ret.rgb); -	float det = max(1.0-lod/(proj_lod*0.5), 0.0); +	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); -	float d = dot(dist,dist); -		 -	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0); +	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;  } @@ -344,7 +348,7 @@ void main()  					stc.x > 0.0 &&  					stc.y > 0.0)  				{ -					col += color.rgb * texture2DLodDiffuse(projectionMap, stc.xy, (1 - spec.a * spec.a) * (proj_lod * 0.5)).rgb * shadow * envIntensity; +					col += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, ((1 - spec.a) * 2) * (proj_lod)).rgb * shadow * envIntensity;  				}  			}  		} diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl index 3d0cbbcc4d..3053315275 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl @@ -131,15 +131,19 @@ vec4 correctWithGamma(vec4 col)  vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)  {  	vec4 ret = texture2DLod(projectionMap, tc, lod); -	ret = correctWithGamma(ret); +	ret.rgb = srgb_to_linear(ret.rgb); -	vec2 dist = tc-vec2(0.5); +	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); -	float det = max(1.0-lod/(proj_lod*0.5), 0.0); +	float det = min(lod/(proj_lod*0.5), 1.0); -	float d = dot(dist,dist); -		 -	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 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;  } @@ -343,7 +347,7 @@ void main()  					stc.x > 0.0 &&  					stc.y > 0.0)  				{ -					col += color.rgb * texture2DLodDiffuse(projectionMap, stc.xy, (1 - spec.a * spec.a) * (proj_lod * 0.5)).rgb * shadow * envIntensity; +					col += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, (1 - spec.a * spec.a) * (proj_lod)).rgb * shadow * envIntensity;  				}  			}  		} | 
