SL-19644: Move GLTF transform reset out of pushBatch
parent
b21e16f27d
commit
6b83fabf72
|
|
@ -444,7 +444,7 @@ void LLRenderPass::renderRiggedGroup(LLSpatialGroup* group, U32 type, bool textu
|
|||
}
|
||||
}
|
||||
|
||||
void LLRenderPass::pushBatches(U32 type, bool texture, bool batch_textures, bool reset_gltf)
|
||||
void LLRenderPass::pushBatches(U32 type, bool texture, bool batch_textures)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL;
|
||||
std::unique_ptr<LLPerfStats::RecordAttachmentTime> ratPtr{};
|
||||
|
|
@ -465,11 +465,11 @@ void LLRenderPass::pushBatches(U32 type, bool texture, bool batch_textures, bool
|
|||
}
|
||||
}
|
||||
#endif
|
||||
pushBatch(*pparams, texture, batch_textures, reset_gltf);
|
||||
pushBatch(*pparams, texture, batch_textures);
|
||||
}
|
||||
}
|
||||
|
||||
void LLRenderPass::pushRiggedBatches(U32 type, bool texture, bool batch_textures, bool reset_gltf)
|
||||
void LLRenderPass::pushRiggedBatches(U32 type, bool texture, bool batch_textures)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL;
|
||||
LLVOAvatar* lastAvatar = nullptr;
|
||||
|
|
@ -500,12 +500,11 @@ void LLRenderPass::pushRiggedBatches(U32 type, bool texture, bool batch_textures
|
|||
lastMeshId = pparams->mSkinInfo->mHash;
|
||||
}
|
||||
|
||||
pushBatch(*pparams, texture, batch_textures, reset_gltf);
|
||||
reset_gltf = false;
|
||||
pushBatch(*pparams, texture, batch_textures);
|
||||
}
|
||||
}
|
||||
|
||||
void LLRenderPass::pushMaskBatches(U32 type, bool texture, bool batch_textures, bool reset_gltf)
|
||||
void LLRenderPass::pushMaskBatches(U32 type, bool texture, bool batch_textures)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL;
|
||||
std::unique_ptr<LLPerfStats::RecordAttachmentTime> ratPtr{};
|
||||
|
|
@ -526,12 +525,11 @@ void LLRenderPass::pushMaskBatches(U32 type, bool texture, bool batch_textures,
|
|||
}
|
||||
#endif
|
||||
LLGLSLShader::sCurBoundShaderPtr->setMinimumAlpha(pparams->mAlphaMaskCutoff);
|
||||
pushBatch(*pparams, texture, batch_textures, reset_gltf);
|
||||
reset_gltf = false;
|
||||
pushBatch(*pparams, texture, batch_textures);
|
||||
}
|
||||
}
|
||||
|
||||
void LLRenderPass::pushRiggedMaskBatches(U32 type, bool texture, bool batch_textures, bool reset_gltf)
|
||||
void LLRenderPass::pushRiggedMaskBatches(U32 type, bool texture, bool batch_textures)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL;
|
||||
LLVOAvatar* lastAvatar = nullptr;
|
||||
|
|
@ -573,8 +571,7 @@ void LLRenderPass::pushRiggedMaskBatches(U32 type, bool texture, bool batch_text
|
|||
lastMeshId = pparams->mSkinInfo->mHash;
|
||||
}
|
||||
|
||||
pushBatch(*pparams, texture, batch_textures, reset_gltf);
|
||||
reset_gltf = false;
|
||||
pushBatch(*pparams, texture, batch_textures);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -600,7 +597,7 @@ void LLRenderPass::resetGLTFTextureTransform()
|
|||
LLGLSLShader::sCurBoundShaderPtr->uniform4fv(LLShaderMgr::TEXTURE_BASE_COLOR_TRANSFORM, 2, (F32*)ignore_gltf_transform);
|
||||
}
|
||||
|
||||
void LLRenderPass::pushBatch(LLDrawInfo& params, bool texture, bool batch_textures, bool reset_gltf)
|
||||
void LLRenderPass::pushBatch(LLDrawInfo& params, bool texture, bool batch_textures)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL;
|
||||
if (!params.mCount)
|
||||
|
|
@ -609,7 +606,6 @@ void LLRenderPass::pushBatch(LLDrawInfo& params, bool texture, bool batch_textur
|
|||
}
|
||||
|
||||
applyModelMatrix(params);
|
||||
if (reset_gltf) { resetGLTFTextureTransform(); }
|
||||
|
||||
bool tex_setup = false;
|
||||
|
||||
|
|
|
|||
|
|
@ -349,17 +349,17 @@ public:
|
|||
void resetDrawOrders() { }
|
||||
|
||||
static void applyModelMatrix(const LLDrawInfo& params);
|
||||
// Use before a non-GLTF batch if it is interleaved with GLTF batches that share the same shader
|
||||
static void resetGLTFTextureTransform();
|
||||
virtual void pushBatches(U32 type, bool texture = true, bool batch_textures = false, bool reset_gltf = false);
|
||||
virtual void pushRiggedBatches(U32 type, bool texture = true, bool batch_textures = false, bool reset_gltf = false);
|
||||
virtual void pushBatches(U32 type, bool texture = true, bool batch_textures = false);
|
||||
virtual void pushRiggedBatches(U32 type, bool texture = true, bool batch_textures = false);
|
||||
void pushGLTFBatches(U32 type);
|
||||
void pushGLTFBatch(LLDrawInfo& params);
|
||||
void pushRiggedGLTFBatches(U32 type);
|
||||
void pushRiggedGLTFBatch(LLDrawInfo& params, LLVOAvatar*& lastAvatar, U64& lastMeshId);
|
||||
virtual void pushMaskBatches(U32 type, bool texture = true, bool batch_textures = false, bool reset_gltf = false);
|
||||
virtual void pushRiggedMaskBatches(U32 type, bool texture = true, bool batch_textures = false, bool reset_gltf = false);
|
||||
// reset_gltf: batch is interleaved with GLTF batches that share the same shader
|
||||
virtual void pushBatch(LLDrawInfo& params, bool texture, bool batch_textures = false, bool reset_gltf = false);
|
||||
virtual void pushMaskBatches(U32 type, bool texture = true, bool batch_textures = false);
|
||||
virtual void pushRiggedMaskBatches(U32 type, bool texture = true, bool batch_textures = false);
|
||||
virtual void pushBatch(LLDrawInfo& params, bool texture, bool batch_textures = false);
|
||||
static bool uploadMatrixPalette(LLDrawInfo& params);
|
||||
static bool uploadMatrixPalette(LLVOAvatar* avatar, LLMeshSkinInfo* skinInfo);
|
||||
virtual void renderGroup(LLSpatialGroup* group, U32 type, bool texture = true);
|
||||
|
|
|
|||
|
|
@ -1254,15 +1254,13 @@ void LLDrawPoolBump::pushBumpBatches(U32 type)
|
|||
}
|
||||
}
|
||||
|
||||
void LLDrawPoolBump::pushBatch(LLDrawInfo& params, bool texture, bool batch_textures, bool reset_gltf)
|
||||
void LLDrawPoolBump::pushBatch(LLDrawInfo& params, bool texture, bool batch_textures)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL;
|
||||
applyModelMatrix(params);
|
||||
|
||||
bool tex_setup = false;
|
||||
|
||||
if (reset_gltf) { LLRenderPass::resetGLTFTextureTransform(); }
|
||||
|
||||
if (batch_textures && params.mTextureList.size() > 1)
|
||||
{
|
||||
for (U32 i = 0; i < params.mTextureList.size(); ++i)
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public:
|
|||
LLDrawPoolBump();
|
||||
|
||||
/*virtual*/ void prerender() override;
|
||||
void pushBatch(LLDrawInfo& params, bool texture, bool batch_textures = false, bool reset_gltf = false) override;
|
||||
void pushBatch(LLDrawInfo& params, bool texture, bool batch_textures = false) override;
|
||||
|
||||
void pushBumpBatches(U32 type);
|
||||
void renderGroup(LLSpatialGroup* group, U32 type, bool texture) override;
|
||||
|
|
|
|||
|
|
@ -6797,7 +6797,8 @@ void LLPipeline::renderAlphaObjects(bool rigged)
|
|||
lastMeshId = pparams->mSkinInfo->mHash;
|
||||
}
|
||||
|
||||
mSimplePool->pushBatch(*pparams, true, true, true);
|
||||
LLRenderPass::resetGLTFTextureTransform();
|
||||
mSimplePool->pushBatch(*pparams, true, true);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -6808,7 +6809,8 @@ void LLPipeline::renderAlphaObjects(bool rigged)
|
|||
}
|
||||
else
|
||||
{
|
||||
mSimplePool->pushBatch(*pparams, true, true, true);
|
||||
LLRenderPass::resetGLTFTextureTransform();
|
||||
mSimplePool->pushBatch(*pparams, true, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6825,11 +6827,11 @@ void LLPipeline::renderMaskedObjects(U32 type, bool texture, bool batch_texture,
|
|||
gGLLastMatrix = NULL;
|
||||
if (rigged)
|
||||
{
|
||||
mAlphaMaskPool->pushRiggedMaskBatches(type+1, texture, batch_texture, true);
|
||||
mAlphaMaskPool->pushRiggedMaskBatches(type+1, texture, batch_texture);
|
||||
}
|
||||
else
|
||||
{
|
||||
mAlphaMaskPool->pushMaskBatches(type, texture, batch_texture, true);
|
||||
mAlphaMaskPool->pushMaskBatches(type, texture, batch_texture);
|
||||
}
|
||||
gGL.loadMatrix(gGLModelView);
|
||||
gGLLastMatrix = NULL;
|
||||
|
|
@ -6843,11 +6845,11 @@ void LLPipeline::renderFullbrightMaskedObjects(U32 type, bool texture, bool batc
|
|||
gGLLastMatrix = NULL;
|
||||
if (rigged)
|
||||
{
|
||||
mFullbrightAlphaMaskPool->pushRiggedMaskBatches(type+1, texture, batch_texture, true);
|
||||
mFullbrightAlphaMaskPool->pushRiggedMaskBatches(type+1, texture, batch_texture);
|
||||
}
|
||||
else
|
||||
{
|
||||
mFullbrightAlphaMaskPool->pushMaskBatches(type, texture, batch_texture, true);
|
||||
mFullbrightAlphaMaskPool->pushMaskBatches(type, texture, batch_texture);
|
||||
}
|
||||
gGL.loadMatrix(gGLModelView);
|
||||
gGLLastMatrix = NULL;
|
||||
|
|
@ -8909,6 +8911,7 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
|
|||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_PIPELINE("shadow alpha masked");
|
||||
LL_PROFILE_GPU_ZONE("shadow alpha masked");
|
||||
LLRenderPass::resetGLTFTextureTransform();
|
||||
renderMaskedObjects(LLRenderPass::PASS_ALPHA_MASK, true, true, rigged);
|
||||
}
|
||||
|
||||
|
|
@ -8925,6 +8928,7 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
|
|||
gDeferredShadowFullbrightAlphaMaskProgram.bind(rigged);
|
||||
LLGLSLShader::sCurBoundShaderPtr->uniform1f(LLShaderMgr::DEFERRED_SHADOW_TARGET_WIDTH, (float)target_width);
|
||||
LLGLSLShader::sCurBoundShaderPtr->uniform1i(LLShaderMgr::SUN_UP_FACTOR, environment.getIsSunUp() ? 1 : 0);
|
||||
LLRenderPass::resetGLTFTextureTransform();
|
||||
renderFullbrightMaskedObjects(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, true, true, rigged);
|
||||
}
|
||||
|
||||
|
|
@ -8941,6 +8945,7 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
|
|||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_PIPELINE("shadow alpha material");
|
||||
LL_PROFILE_GPU_ZONE("shadow alpha material");
|
||||
LLRenderPass::resetGLTFTextureTransform();
|
||||
renderMaskedObjects(LLRenderPass::PASS_NORMSPEC_MASK, true, false, rigged);
|
||||
renderMaskedObjects(LLRenderPass::PASS_MATERIAL_ALPHA_MASK, true, false, rigged);
|
||||
renderMaskedObjects(LLRenderPass::PASS_SPECMAP_MASK, true, false, rigged);
|
||||
|
|
|
|||
Loading…
Reference in New Issue