summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorGraham Linden <graham@lindenlab.com>2018-08-25 00:26:26 +0100
committerGraham Linden <graham@lindenlab.com>2018-08-25 00:26:26 +0100
commit50f6504d75f30efb2955b82d7ec2b5283c10f402 (patch)
tree9f97a0aad470334ff5728e9ae9e6251caa27aea9 /indra
parenta50e4c3aeed7bcf0f75e26bc4f0671f9d7ff48cf (diff)
MAINT-9046 honor alpha mode none even when texture has alpha channel when checking state in avatar attachment shadow passes
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/lldrawpoolavatar.cpp29
1 files changed, 15 insertions, 14 deletions
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 89e861bb51..a9df63debd 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -1859,6 +1859,20 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
bool is_alpha_blend = false;
bool is_alpha_mask = false;
+ LLViewerTexture* tex = face->getTexture(LLRender::DIFFUSE_MAP);
+ if (tex)
+ {
+ LLGLenum image_format = tex->getPrimaryFormat();
+ if (tex->getIsAlphaMask())
+ {
+ is_alpha_mask = true;
+ }
+ else if (!is_alpha_mask && (image_format == GL_RGBA || image_format == GL_ALPHA))
+ {
+ is_alpha_blend = true;
+ }
+ }
+
if (mat)
{
switch (LLMaterial::eDiffuseAlphaMode(mat->getDiffuseAlphaMode()))
@@ -1879,6 +1893,7 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
case LLMaterial::DIFFUSE_ALPHA_MODE_DEFAULT:
case LLMaterial::DIFFUSE_ALPHA_MODE_NONE:
default:
+ is_alpha_blend = false;
break;
}
}
@@ -1891,20 +1906,6 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
}
}
- LLViewerTexture* tex = face->getTexture(LLRender::DIFFUSE_MAP);
- if (tex)
- {
- LLGLenum image_format = tex->getPrimaryFormat();
- if (tex->getIsAlphaMask())
- {
- is_alpha_mask = true;
- }
- else if (!is_alpha_mask && (image_format == GL_RGBA || image_format == GL_ALPHA))
- {
- is_alpha_blend = true;
- }
- }
-
// if this is alpha mask content and we're doing opaques or a non-alpha-mask shadow pass...
if (is_alpha_mask && (LLDrawPoolAvatar::sSkipTransparent || LLDrawPoolAvatar::sShadowPass != SHADOW_PASS_ATTACHMENT_ALPHA_MASK))
{