Added support to disable a draw pool. When the movable option checkbox is selected we will now also cull the terrain draw pool.

master
prep 2012-05-09 15:56:06 -04:00
parent 88674e02dd
commit 92ce47a1b2
5 changed files with 30 additions and 2 deletions

View File

@ -116,6 +116,7 @@ LLDrawPool::LLDrawPool(const U32 type)
sNumDrawPools++;
mId = sNumDrawPools;
mVertexShaderLevel = 0;
mSkipRender = false;
}
LLDrawPool::~LLDrawPool()

View File

@ -77,6 +77,9 @@ public:
S32 getId() const { return mId; }
U32 getType() const { return mType; }
BOOL getSkipRenderFlag() const { return mSkipRender;}
void setSkipRenderFlag( BOOL flag ) { mSkipRender = flag; }
virtual LLViewerTexture *getDebugTexture();
virtual void beginRenderPass( S32 pass );
virtual void endRenderPass( S32 pass );
@ -113,6 +116,7 @@ protected:
S32 mVertexShaderLevel;
S32 mId;
U32 mType; // Type of draw pool
BOOL mSkipRender;
};
class LLRenderPass : public LLDrawPool

View File

@ -1003,6 +1003,10 @@ void LLFloaterPathfindingConsole::cleanupRenderableRestoreItems()
gPipeline.restorePermanentObjects( mRenderableRestoreList );
mRenderableRestoreList.clear();
}
else
{
gPipeline.skipRenderingOfTerrain( false );
}
}
void LLFloaterPathfindingConsole::setAgentState(LLPathfindingManager::EAgentState pAgentState)

View File

@ -3864,7 +3864,7 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
break;
}
p->render(i);
if ( !p->getSkipRenderFlag() ) { p->render(i); }
}
poolp->endRenderPass(i);
LLVertexBuffer::unbind();
@ -4038,7 +4038,7 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
break;
}
p->renderDeferred(i);
if ( !p->getSkipRenderFlag() ) { p->renderDeferred(i); }
}
poolp->endDeferredPass(i);
LLVertexBuffer::unbind();
@ -10139,6 +10139,8 @@ void LLPipeline::hidePermanentObjects( std::vector<U32>& restoreList )
}
}
}
skipRenderingOfTerrain( true );
}
void LLPipeline::restorePermanentObjects( const std::vector<U32>& restoreList )
@ -10183,5 +10185,21 @@ void LLPipeline::restorePermanentObjects( const std::vector<U32>& restoreList )
}
++itCurrent;
}
skipRenderingOfTerrain( false );
}
void LLPipeline::skipRenderingOfTerrain( BOOL flag )
{
pool_set_t::iterator iter = mPools.begin();
while ( iter != mPools.end() )
{
LLDrawPool* pPool = *iter;
U32 poolType = pPool->getType();
if ( hasRenderType( pPool->getType() ) && poolType == LLDrawPool::POOL_TERRAIN )
{
pPool->setSkipRenderFlag( flag );
}
++iter;
}
}

View File

@ -368,6 +368,7 @@ public:
void hidePermanentObjects( std::vector<U32>& restoreList );
void restorePermanentObjects( const std::vector<U32>& restoreList );
void skipRenderingOfTerrain( BOOL flag );
private:
void unloadShaders();