summaryrefslogtreecommitdiff
path: root/indra/newview/lldrawpoolavatar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/lldrawpoolavatar.cpp')
-rw-r--r--indra/newview/lldrawpoolavatar.cpp37
1 files changed, 20 insertions, 17 deletions
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index f0f589e7f4..9386206e76 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -595,7 +595,15 @@ void LLDrawPoolAvatar::beginSkinned()
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
- // used for preview only
+ // Used for preview only, like LLVisualParamHint
+ // Uses deprecated logic!!!
+ if (!gAvatarProgram.isComplete())
+ {
+ llassert(false); // Avatar shader shouldn't have failed if deferred shader loaded
+ sVertexProgram = nullptr;
+ LLGLSLShader::unbind();
+ return;
+ }
sVertexProgram = &gAvatarProgram;
@@ -603,31 +611,26 @@ void LLDrawPoolAvatar::beginSkinned()
sVertexProgram->bind();
sVertexProgram->setMinimumAlpha(LLDrawPoolAvatar::sMinimumAlpha);
+ sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
}
void LLDrawPoolAvatar::endSkinned()
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
- // if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done
- if (sShaderLevel > 0)
- {
- sRenderingSkinned = false;
- sVertexProgram->disableTexture(LLViewerShaderMgr::BUMP_MAP);
- gGL.getTexUnit(0)->activate();
- sVertexProgram->unbind();
- sShaderLevel = mShaderLevel;
- }
- else
+ if (sVertexProgram == nullptr)
{
- if(gPipeline.shadersLoaded())
- {
- // software skinning, use a basic shader for windlight.
- // TODO: find a better fallback method for software skinning.
- sVertexProgram->unbind();
- }
+ return;
}
+ // if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done
+ sRenderingSkinned = false;
+ sVertexProgram->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
+ sVertexProgram->disableTexture(LLViewerShaderMgr::BUMP_MAP);
+ gGL.getTexUnit(0)->activate();
+ sVertexProgram->unbind();
+ sShaderLevel = mShaderLevel;
+
gGL.getTexUnit(0)->activate();
}