diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index f170988e40e073268314bde27031d207eab3f827..4457356e38610d0e1c152c8c16d472406f796b30 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -183,13 +183,17 @@ void main() vec4 diffuse_srgb = diffuse_tap; -#ifdef FOR_IMPOSTOR - vec4 color; - color.rgb = diffuse_srgb.rgb; - color.a = 1.0; + float final_alpha = diffuse_srgb.a; - float final_alpha = diffuse_srgb.a * vertex_color.a; +#ifdef USE_VERTEX_COLOR + final_alpha *= vertex_color.a; diffuse_srgb.rgb *= vertex_color.rgb; +#endif + + vec3 diffuse_linear = srgb_to_linear(diffuse_srgb.rgb); + +#ifdef FOR_IMPOSTOR + vec4 color = vec4(diffuse_linear,final_alpha); // Insure we don't pollute depth with invis pixels in impostor rendering // @@ -200,15 +204,6 @@ void main() #else vec3 light_dir = (sun_up_factor == 1) ? sun_dir: moon_dir; - float final_alpha = diffuse_srgb.a; - -#ifdef USE_VERTEX_COLOR - final_alpha *= vertex_color.a; - diffuse_srgb.rgb *= vertex_color.rgb; -#endif - - vec3 diffuse_linear = srgb_to_linear(diffuse_srgb.rgb); - vec3 sunlit; vec3 amblit; vec3 additive; diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl index eb6e56e718cf3da79584bcc5792b972e25f2e2e8..f41a8e8c47e844dedac69b1c269383a70aff12b0 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl @@ -41,6 +41,7 @@ uniform sampler2D specularMap; VARYING vec2 vary_texcoord0; vec3 linear_to_srgb(vec3 c); +vec2 encode_normal (vec3 n); void main() { @@ -54,8 +55,7 @@ void main() vec4 norm = texture2D(normalMap, vary_texcoord0.xy); vec4 spec = texture2D(specularMap, vary_texcoord0.xy); - col.rgb = linear_to_srgb(col.rgb); frag_data[0] = vec4(col.rgb, 0.0); frag_data[1] = spec; - frag_data[2] = vec4(norm.xy,0,0); + frag_data[2] = vec4(encode_normal(norm.xyz),0,0); }