diff options
author | RunitaiLinden <davep@lindenlab.com> | 2023-04-19 18:15:28 -0500 |
---|---|---|
committer | RunitaiLinden <davep@lindenlab.com> | 2023-04-19 18:15:28 -0500 |
commit | aaedacf3f3da9051f9f704eb1d050fcae63d0d3b (patch) | |
tree | 58ac47d56cf2e98691b9a44e722e8fc2c0e00465 /indra/newview | |
parent | 45fdba8fd96ed714cbc0120b0a10a4c5b63ea706 (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.cpp | 20 | ||||
-rw-r--r-- | 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 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); |