diff options
Diffstat (limited to 'indra/newview/lldrawpoolavatar.cpp')
| -rw-r--r-- | indra/newview/lldrawpoolavatar.cpp | 37 |
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(); } |
