diff options
Diffstat (limited to 'indra/newview/app_settings/shaders/class3/deferred')
4 files changed, 15 insertions, 8 deletions
| diff --git a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl index 7325825d6d..66606233cd 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl @@ -44,7 +44,8 @@ float getDepth(vec2 pos_screen)  void main()   { -	vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz*2.0-1.0; +	vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz; +	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm  	float depth = getDepth(vary_fragcoord.xy);  	vec3 ccol = texture2DRect(giLightMap, vary_fragcoord.xy).rgb; @@ -56,9 +57,10 @@ void main()  	for (int i = 0; i < kern_length; i++)  	{  		vec2 tc = vary_fragcoord.xy + kern[i].y*dlt; -	    vec3 sampNorm = texture2DRect(normalMap, tc.xy).xyz*2.0-1.0; -	     -	   float d = dot(norm.xyz, sampNorm); +		vec3 sampNorm = texture2DRect(normalMap, tc.xy).xyz; +		sampNorm = vec3((sampNorm.xy-0.5)*2.0,sampNorm.z); // unpack norm +		 +		float d = dot(norm.xyz, sampNorm);  		if (d > 0.5)  		{ diff --git a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl index 939710cb56..1b8354dbd1 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl @@ -178,7 +178,8 @@ void main()  	float rad = gi_range*0.5; -	vec3 norm = texture2DRect(normalMap, pos_screen).xyz*2.0-1.0; +	vec3 norm = texture2DRect(normalMap, pos_screen).xyz; +	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm  	float dist = max(length(pos.xyz)-rad, 0.0);  	float da = clamp(1.0-dist/rad, 0.0, 1.0); diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index 5298079af7..c88edd0a60 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -259,7 +259,8 @@ void main()  	vec2 tc = vary_fragcoord.xy;  	float depth = texture2DRect(depthMap, tc.xy).a;  	vec3 pos = getPosition_d(tc, depth).xyz; -	vec3 norm = texture2DRect(normalMap, tc).xyz*2.0-1.0; +	vec3 norm = texture2DRect(normalMap, tc).xyz; +	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm  	//vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;  	float da = max(dot(norm.xyz, vary_light.xyz), 0.0); @@ -314,7 +315,9 @@ void main()  		float refdepth = texture2DRect(depthMap, ref2d).a;  		vec3 refpos = getPosition_d(ref2d, refdepth).xyz;  		float refshad = texture2DRect(lightMap, ref2d).r; -		vec3 refn = normalize(texture2DRect(normalMap, ref2d).rgb * 2.0 - 1.0); +		vec3 refn = texture2DRect(normalMap, ref2d).rgb; +		refn = vec3((refn.xy-0.5)*2.0,refn.z); // unpack norm +		refn = normalize(refn);  		// figure out how appropriate our guess actually was  		float refapprop = max(0.0, dot(-refnorm, normalize(pos - refpos)));  		// darken reflections from points which face away from the reflected ray - our guess was a back-face diff --git a/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl index 258acee08c..5b33ea5bfe 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl @@ -14,5 +14,6 @@ void main()  	vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy);  	gl_FragData[0] = vec4(gl_Color.rgb*col.rgb, col.a <= 0.5 ? 0.0 : 0.005);  	gl_FragData[1] = vec4(0,0,0,0); -	gl_FragData[2] = vec4(normalize(vary_normal)*0.5+0.5, 0.0); +	vec3 nvn = normalize(vary_normal); +	gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);  } | 
