From 3e0b75c4f7cf072f3365d7f5ecf521783e48686c Mon Sep 17 00:00:00 2001 From: Shyotl Date: Tue, 9 Apr 2019 16:01:14 -0500 Subject: [PATCH] Fix issue where alpha_mode_none and alpha_mode_emissive on rigged faces were being alpha tested and discarded. --- indra/llrender/llglslshader.cpp | 1 - indra/newview/lldrawpoolavatar.cpp | 8 ++++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 09aedf278..0066dbc85 100644 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -982,6 +982,5 @@ void LLGLSLShader::vertexAttrib4f(U32 index, GLfloat x, GLfloat y, GLfloat z, GL void LLGLSLShader::setMinimumAlpha(F32 minimum) { - gGL.flush(); uniform1f(LLShaderMgr::MINIMUM_ALPHA, minimum); } diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 97c3ffbc6..47f55ef69 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1666,6 +1666,10 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) { sVertexProgram->setMinimumAlpha(mat->getAlphaMaskCutoff()/255.f); } + else if (mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_NONE || mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_EMISSIVE) + { + sVertexProgram->setMinimumAlpha(0.f); + } else { sVertexProgram->setMinimumAlpha(0.004f); @@ -1690,6 +1694,10 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) { sVertexProgram->setMinimumAlpha(mat->getAlphaMaskCutoff()/255.f); } + else if (mat && (mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_NONE || mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_EMISSIVE)) + { + sVertexProgram->setMinimumAlpha(0.f); + } else { sVertexProgram->setMinimumAlpha(0.004f);