summaryrefslogtreecommitdiff
path: root/indra/newview/lldrawpoolmaterials.cpp
diff options
context:
space:
mode:
authorcosmic-linden <111533034+cosmic-linden@users.noreply.github.com>2024-08-22 11:45:14 -0700
committerGitHub <noreply@github.com>2024-08-22 13:45:14 -0500
commit2c4fe4ff454490454d0bb71c1e5359747524048a (patch)
tree2328f0e9f9abed32a52e7faea2e4f551557d6302 /indra/newview/lldrawpoolmaterials.cpp
parent9b0010b5d5a00eb59b71487701b98b50992f8a8e (diff)
secondlife/viewer#2349: Avatar/animesh rendering correctness pass (#2364)
* secondlife/viewer#2349: Blinn-Phong avatar/animesh rendering optimization/correctness pass * secondlife/viewer#2349: General avatar/animesh rendering optimization/correctness pass
Diffstat (limited to 'indra/newview/lldrawpoolmaterials.cpp')
-rw-r--r--indra/newview/lldrawpoolmaterials.cpp22
1 files changed, 6 insertions, 16 deletions
diff --git a/indra/newview/lldrawpoolmaterials.cpp b/indra/newview/lldrawpoolmaterials.cpp
index bbc93c2af9..e7ec2022d2 100644
--- a/indra/newview/lldrawpoolmaterials.cpp
+++ b/indra/newview/lldrawpoolmaterials.cpp
@@ -183,7 +183,9 @@ void LLDrawPoolMaterials::renderDeferred(S32 pass)
glUniform4fv(specular, 1, lastSpecular.mV);
}
- LLVOAvatar* lastAvatar = nullptr;
+ const LLVOAvatar* lastAvatar = nullptr;
+ U64 lastMeshId = 0;
+ bool skipLastSkin = false;
for (LLCullResult::drawinfo_iterator i = begin; i != end; )
{
@@ -245,23 +247,11 @@ void LLDrawPoolMaterials::renderDeferred(S32 pass)
}
// upload matrix palette to shader
- if (rigged && params.mAvatar.notNull())
+ if (rigged)
{
- if (params.mAvatar != lastAvatar)
+ if (!uploadMatrixPalette(params.mAvatar, params.mSkinInfo, lastAvatar, lastMeshId, skipLastSkin))
{
- const LLVOAvatar::MatrixPaletteCache& mpc = params.mAvatar->updateSkinInfoMatrixPalette(params.mSkinInfo);
- U32 count = static_cast<U32>(mpc.mMatrixPalette.size());
-
- if (count == 0)
- {
- //skin info not loaded yet, don't render
- return;
- }
-
- mShader->uniformMatrix3x4fv(LLViewerShaderMgr::AVATAR_MATRIX,
- count,
- false,
- (GLfloat*)&(mpc.mGLMp[0]));
+ continue;
}
}