diff options
Diffstat (limited to 'indra/newview/app_settings/shaders')
3 files changed, 20 insertions, 7 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl index ca11f58888..a8a5cc22db 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl @@ -217,7 +217,16 @@ void main()      vec2 pos_screen = vary_texcoord0.xy;      vec4 diffuse_srgb = texture2D(diffuseMap, vary_texcoord0.xy); -    diffuse_srgb *= vertex_color; +    diffuse_srgb.rgb *= vertex_color.rgb; +     +    // For some reason the Transparency slider sets vertex_color.a to 0.0 both for +    // fully opaque and for fully transparent objects. This code assumes the 0 alpha +    // is always from the opaque end of the scale. TODO: Remove the conditional once +    // the root cause of the slider ambiguity is fixed. +    if (vertex_color.a > 0.0) +    { +        diffuse_srgb.a *= vertex_color.a; +    }      vec4 diffuse_linear = vec4(srgb_to_linear(diffuse_srgb.rgb), diffuse_srgb.a);  #if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_MASK) diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 547a159f3a..20ac78947b 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -154,8 +154,6 @@ vec3 post_diffuse = color.rgb;          }   vec3 post_spec = color.rgb; -  -        color.rgb = mix(color.rgb, diffuse_srgb.rgb, diffuse_srgb.a);          if (envIntensity > 0.0)          { //add environmentmap @@ -165,7 +163,11 @@ vec3 post_diffuse = color.rgb;              color = mix(color.rgb, reflected_color, envIntensity*0.75); // MAGIC NUMBER SL-12574; ALM: On, Quality <= Mid+  #endif          } -         +        else +        { +            color.rgb = mix(color.rgb, diffuse_srgb.rgb, diffuse_srgb.a); +        } +  vec3 post_env = color.rgb;          if (norm.w < 1) diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 15a3bc349a..9c7a4df767 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -161,8 +161,6 @@ vec3 post_diffuse = color.rgb;          }   vec3 post_spec = color.rgb; -  -        color.rgb = mix(color.rgb, diffuse_srgb.rgb, diffuse_srgb.a);          if (envIntensity > 0.0)          { //add environmentmap @@ -172,7 +170,11 @@ vec3 post_diffuse = color.rgb;              color = mix(color.rgb, reflected_color, envIntensity*0.75); // MAGIC NUMBER SL-12574; ALM: On, Quality >= High  #endif          } -         +        else +        { +            color.rgb = mix(color.rgb, diffuse_srgb.rgb, diffuse_srgb.a); +        } +  vec3 post_env = color.rgb;          if (norm.w < 1) | 
