diff options
author | Dave Houlton <euclid@lindenlab.com> | 2020-03-13 14:59:11 -0600 |
---|---|---|
committer | Dave Houlton <euclid@lindenlab.com> | 2020-03-13 15:00:18 -0600 |
commit | 09b13b3981f121f20674b874f47f96bef2ac73ce (patch) | |
tree | e095470f6a36a5af2e63ef03c7038958f5c2d354 /indra/newview/app_settings/shaders | |
parent | 48c5e7ae4c88d54cae9dccf061c346bceb01b502 (diff) |
SL-12784 disambiguate vertex_color.a of 0
Diffstat (limited to 'indra/newview/app_settings/shaders')
-rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/materialF.glsl | 11 |
1 files changed, 10 insertions, 1 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) |