diff options
author | Dave Parks <davep@lindenlab.com> | 2023-03-13 11:16:23 -0500 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2023-03-13 11:16:23 -0500 |
commit | 8d263197f0649e3b49044d6f7c12277c2361bdba (patch) | |
tree | 5daa7783d32e2df9c5e949d37892cf7e4cca265d /indra | |
parent | 88d3cc680dd10fcb0397b366e73899c6e414ad5c (diff) |
SL-19371 Fix for occlusion culling getting stuck after teleport.
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llagent.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llspatialpartition.cpp | 11 | ||||
-rw-r--r-- | indra/newview/llspatialpartition.h | 2 | ||||
-rw-r--r-- | indra/newview/pipeline.cpp | 2 |
4 files changed, 3 insertions, 14 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 6113c30a84..a68dba98bb 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -3959,8 +3959,6 @@ bool LLAgent::teleportCore(bool is_local) gTeleportDisplay = TRUE; LL_INFOS("Teleport") << "Non-local, setting teleport state to TELEPORT_START" << LL_ENDL; gAgent.setTeleportState( LLAgent::TELEPORT_START ); - - LLSpatialPartition::sTeleportRequested = TRUE; } make_ui_sound("UISndTeleportOut"); diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 92fccfcfd6..fc9b3093e8 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -64,8 +64,6 @@ bool LLSpatialGroup::sNoDelete = false; static F32 sLastMaxTexPriority = 1.f; static F32 sCurMaxTexPriority = 1.f; -bool LLSpatialPartition::sTeleportRequested = false; - //static counter for frame to switch LOD on void sg_assert(BOOL expr) @@ -1295,8 +1293,6 @@ void drawBoxOutline(const LLVector4a& pos, const LLVector4a& size) class LLOctreeDirty : public OctreeTraveler { public: - LLOctreeDirty(bool no_rebuild) : mNoRebuild(no_rebuild){} - virtual void visit(const OctreeNode* state) { LLSpatialGroup* group = (LLSpatialGroup*) state->getListener(0); @@ -1309,7 +1305,7 @@ public: { continue; } - if (!mNoRebuild && drawable->getVObj().notNull() && !group->getSpatialPartition()->mRenderByGroup) + if (drawable->getVObj().notNull() && !group->getSpatialPartition()->mRenderByGroup) { gPipeline.markRebuild(drawable, LLDrawable::REBUILD_ALL, TRUE); } @@ -1321,9 +1317,6 @@ public: traverse(bridge->mOctree); } } - -private: - BOOL mNoRebuild; }; void LLSpatialPartition::restoreGL() @@ -1332,7 +1325,7 @@ void LLSpatialPartition::restoreGL() void LLSpatialPartition::resetVertexBuffers() { - LLOctreeDirty dirty(sTeleportRequested); + LLOctreeDirty dirty; dirty.traverse(mOctree); } diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index 9b2cb0d44c..053ce9e60b 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -433,8 +433,6 @@ public: U32 mVertexDataMask; F32 mSlopRatio; //percentage distance must change before drawables receive LOD update (default is 0.25); bool mDepthMask; //if TRUE, objects in this partition will be written to depth during alpha rendering - - static bool sTeleportRequested; //started to issue a teleport request }; // class for creating bridges between spatial partitions diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index e6ad42c23b..18b0192346 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -2424,7 +2424,7 @@ void LLPipeline::doOcclusion(LLCamera& camera) gGL.setColorMask(true, true); } - if (LLPipeline::sUseOcclusion > 1 && !LLSpatialPartition::sTeleportRequested && + if (LLPipeline::sUseOcclusion > 1 && (sCull->hasOcclusionGroups() || LLVOCachePartition::sNeedsOcclusionCheck)) { LLVertexBuffer::unbind(); |