From aaedacf3f3da9051f9f704eb1d050fcae63d0d3b Mon Sep 17 00:00:00 2001
From: RunitaiLinden <davep@lindenlab.com>
Date: Wed, 19 Apr 2023 18:15:28 -0500
Subject: [PATCH] DRTVWR-559 Fix for bad vertex data getting sent to PBR alpha
 shader (auto alpha mask regression).

---
 indra/newview/llface.cpp     | 20 +++++++++++++-------
 indra/newview/llvovolume.cpp |  1 +
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index d7e4632ab06..5554112043b 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 9a5719d8b68..a73d149b105 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);
-- 
GitLab