summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorRunitaiLinden <davep@lindenlab.com>2023-04-19 18:15:28 -0500
committerRunitaiLinden <davep@lindenlab.com>2023-04-19 18:15:28 -0500
commitaaedacf3f3da9051f9f704eb1d050fcae63d0d3b (patch)
tree58ac47d56cf2e98691b9a44e722e8fc2c0e00465 /indra/newview
parent45fdba8fd96ed714cbc0120b0a10a4c5b63ea706 (diff)
DRTVWR-559 Fix for bad vertex data getting sent to PBR alpha shader (auto alpha mask regression).
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llface.cpp20
-rw-r--r--indra/newview/llvovolume.cpp1
2 files changed, 14 insertions, 7 deletions
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index d7e4632ab0..5554112043 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -1081,21 +1081,27 @@ void LLFace::updateRebuildFlags()
bool LLFace::canRenderAsMask()
{
- if (LLPipeline::sNoAlpha)
+ const LLTextureEntry* te = getTextureEntry();
+ if( !te || !getViewerObject() || !getTexture() )
{
- return true;
+ return false;
}
+ if (te->getGLTFRenderMaterial())
+ {
+ return false;
+ }
+
+ if (LLPipeline::sNoAlpha)
+ {
+ return true;
+ }
+
if (isState(LLFace::RIGGED))
{ // never auto alpha-mask rigged faces
return false;
}
- const LLTextureEntry* te = getTextureEntry();
- if( !te || !getViewerObject() || !getTexture() )
- {
- return false;
- }
LLMaterial* mat = te->getMaterialParams();
if (mat && mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_BLEND)
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 9a5719d8b6..a73d149b10 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -5467,6 +5467,7 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
draw_info->validate();
}
+ llassert(info->mGLTFMaterial == nullptr || (info->mVertexBuffer->getTypeMask() & LLVertexBuffer::MAP_TANGENT) != 0);
llassert(type != LLPipeline::RENDER_TYPE_PASS_GLTF_PBR || info->mGLTFMaterial != nullptr);
llassert(type != LLPipeline::RENDER_TYPE_PASS_GLTF_PBR_RIGGED || info->mGLTFMaterial != nullptr);
llassert(type != LLPipeline::RENDER_TYPE_PASS_GLTF_PBR_ALPHA_MASK || info->mGLTFMaterial != nullptr);