diff options
author | cosmic-linden <111533034+cosmic-linden@users.noreply.github.com> | 2024-10-31 11:28:13 -0700 |
---|---|---|
committer | Cosmic Linden <cosmic@lindenlab.com> | 2024-11-05 17:08:50 -0800 |
commit | 5d62cdbcb2b7584cfa23b25c75155cdb0787d381 (patch) | |
tree | 86bf215b937de09bd544b032daf07367a06581c4 /indra | |
parent | 55732f7343fa574a8dfcbfd807e69b1fb56e9209 (diff) |
secondlife/viewer#2768: Partial fix for PBR texture animations stopping. May also fix some Blinn-Phong texture animations. (#2971)
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llvovolume.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 253fb01219..719913a591 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -784,7 +784,24 @@ void LLVOVolume::updateTextureVirtualSize(bool forced) LLFace* face = mDrawable->getFace(i); if (!face) continue; const LLTextureEntry *te = face->getTextureEntry(); - LLViewerTexture *imagep = face->getTexture(); + LLViewerTexture *imagep = nullptr; + U32 ch_min; + U32 ch_max; + if (!te->getGLTFRenderMaterial()) + { + ch_min = LLRender::DIFFUSE_MAP; + ch_max = LLRender::SPECULAR_MAP; + } + else + { + ch_min = LLRender::BASECOLOR_MAP; + ch_max = LLRender::EMISSIVE_MAP; + } + for (U32 ch = ch_min; (!imagep && ch <= ch_max); ++ch) + { + // Get _a_ non-null texture if possible (usually diffuse/basecolor, but could be something else) + imagep = face->getTexture(ch); + } if (!imagep || !te || face->mExtents[0].equals3(face->mExtents[1])) { |