diff options
author | prep <none@none> | 2012-03-07 10:34:49 -0500 |
---|---|---|
committer | prep <none@none> | 2012-03-07 10:34:49 -0500 |
commit | 34a0a98f9d9557620b7586d343e8173a43164316 (patch) | |
tree | 7d927a32b21be24c155f8077a05be2fd3e990c3b | |
parent | 4370d0263301a60988335e99d37f4b584f160f77 (diff) |
Partial fix for Path-387. Path-287 Viewer perfomance tweaks.
-rw-r--r-- | indra/llrender/llrendernavprim.cpp | 23 | ||||
-rw-r--r-- | indra/newview/llviewerdisplay.cpp | 105 | ||||
-rw-r--r-- | indra/newview/pipeline.cpp | 35 |
3 files changed, 76 insertions, 87 deletions
diff --git a/indra/llrender/llrendernavprim.cpp b/indra/llrender/llrendernavprim.cpp index 47cc996043..1114d132c7 100644 --- a/indra/llrender/llrendernavprim.cpp +++ b/indra/llrender/llrendernavprim.cpp @@ -37,9 +37,6 @@ LLRenderNavPrim gRenderNav; //=============================================================================
void LLRenderNavPrim::renderSegment( const LLVector3& start, const LLVector3& end, int color, bool overlayMode ) const
{
- bool ff = LLGLSLShader::sNoFixedFunction;
- LLGLSLShader::sNoFixedFunction = false;
- LLGLEnable smooth(GL_LINE_SMOOTH);
LLColor4 colorA( color );
glLineWidth(1.5f);
gGL.color3fv( colorA.mV );
@@ -50,16 +47,12 @@ void LLRenderNavPrim::renderSegment( const LLVector3& start, const LLVector3& en gGL.vertex3fv( end.mV );
}
gGL.end();
-
- gGL.flush();
- LLGLSLShader::sNoFixedFunction = ff;
- LLGLDisable smoothout(GL_LINE_SMOOTH);
- glLineWidth(1.0f);
+ //glLineWidth(1.0f);
}
//=============================================================================
void LLRenderNavPrim::renderTri( const LLVector3& a, const LLVector3& b, const LLVector3& c, int color, bool overlayMode ) const
{
- glLineWidth(1.5f);
+ //glLineWidth(1.5f);
if ( overlayMode )
{
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
@@ -68,12 +61,10 @@ void LLRenderNavPrim::renderTri( const LLVector3& a, const LLVector3& b, const L {
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
}
- LLGLEnable cull(GL_CULL_FACE);
+
LLColor4 colorA( color );
colorA*=1.25f;
gGL.color4fv( colorA.mV );
- bool ff = LLGLSLShader::sNoFixedFunction;
- LLGLSLShader::sNoFixedFunction = false;
gGL.begin(LLRender::TRIANGLES);
{
gGL.vertex3fv( a.mV );
@@ -81,10 +72,8 @@ void LLRenderNavPrim::renderTri( const LLVector3& a, const LLVector3& b, const L gGL.vertex3fv( c.mV );
}
gGL.end();
- gGL.flush();
- glLineWidth(1.0f);
- glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
- LLGLSLShader::sNoFixedFunction = ff;
+ //glLineWidth(1.0f);
+ //move out ...glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
}
//=============================================================================
void LLRenderNavPrim::renderNavMeshVB( LLVertexBuffer* pVBO, int vertCnt )
@@ -98,13 +87,11 @@ void LLRenderNavPrim::renderNavMeshVB( LLVertexBuffer* pVBO, int vertCnt ) pVBO->setBuffer( LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_COLOR | LLVertexBuffer::MAP_NORMAL );
pVBO->drawArrays( LLRender::TRIANGLES, 0, vertCnt );
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
- LLGLEnable smooth( GL_LINE_SMOOTH );
//pass 2 outlined
pVBO->drawArrays( LLRender::TRIANGLES, 0, vertCnt );
LLGLSLShader::sNoFixedFunction = ff;
glLineWidth(1.0f);
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
- LLGLDisable smoothout( GL_LINE_SMOOTH );
}
//=============================================================================
void LLRenderNavPrim::renderStar( const LLVector3& center, const float scale, int color ) const
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 001c23278d..95cbb9ba4c 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -113,7 +113,6 @@ void render_hud_attachments(); void render_ui_3d(); void render_ui_2d(); void render_disconnected_background(); -void render_navmesh( bool& allowRenderables, bool& exclusiveNavDraw ); void display_startup() { @@ -720,6 +719,13 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) gPipeline.generateWaterReflection(*LLViewerCamera::getInstance()); gPipeline.generateHighlight(*LLViewerCamera::getInstance()); gPipeline.renderPhysicsDisplay(); + LLHandle<LLFloaterPathfindingConsole> pathfindingConsoleHandle = LLFloaterPathfindingConsole::getInstanceHandle(); + LLFloaterPathfindingConsole *pathfindingConsole = pathfindingConsoleHandle.get(); + if ( pathfindingConsole->getHeartBeat() ) + { + gPipeline.renderNavMesh(); + } + } LLGLState::checkStates(); @@ -860,6 +866,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) stop_glerror(); + if (to_texture) { gGL.setColorMask(true, true); @@ -884,37 +891,33 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) gGL.setColorMask(true, false); } - LLAppViewer::instance()->pingMainloopTimeout("Display:RenderGeom"); - bool exclusiveNavDraw = false; - bool allowRenderables = false; - if (!(LLAppViewer::instance()->logoutRequestSent() && LLAppViewer::instance()->hasSavedFinalSnapshot()) - && !gRestoreGL) - { - LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_WORLD; - LLMemType mt_rg(LLMemType::MTYPE_DISPLAY_RENDER_GEOM); - gGL.setColorMask(true, false); - if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) - { - gPipeline.renderGeomDeferred(*LLViewerCamera::getInstance()); - } - - render_navmesh( allowRenderables, exclusiveNavDraw ); - - if ( !exclusiveNavDraw || allowRenderables ) - { - gPipeline.renderGeom(*LLViewerCamera::getInstance(), TRUE); - } - - gGL.setColorMask(true, true); - - //store this frame's modelview matrix for use - //when rendering next frame's occlusion queries - for (U32 i = 0; i < 16; i++) - { - gGLLastModelView[i] = gGLModelView[i]; - gGLLastProjection[i] = gGLProjection[i]; - } - stop_glerror(); + if (!(LLAppViewer::instance()->logoutRequestSent() && LLAppViewer::instance()->hasSavedFinalSnapshot())
+ && !gRestoreGL)
+ {
+ LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_WORLD;
+ LLMemType mt_rg(LLMemType::MTYPE_DISPLAY_RENDER_GEOM);
+ gGL.setColorMask(true, false);
+
+
+ if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender)
+ {
+ gPipeline.renderGeomDeferred(*LLViewerCamera::getInstance());
+ }
+ else
+ {
+ gPipeline.renderGeom(*LLViewerCamera::getInstance(), TRUE);
+ }
+
+ gGL.setColorMask(true, true);
+
+ //store this frame's modelview matrix for use
+ //when rendering next frame's occlusion queries
+ for (U32 i = 0; i < 16; i++)
+ {
+ gGLLastModelView[i] = gGLModelView[i];
+ gGLLastProjection[i] = gGLProjection[i];
+ }
+ stop_glerror();
} for (U32 i = 0; i < gGLManager.mNumTextureImageUnits; i++) @@ -956,6 +959,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) } } + if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender ) { gPipeline.renderDeferredLighting(); @@ -992,42 +996,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) LLAppViewer::instance()->pingMainloopTimeout("Display:Done"); } -void render_navmesh( bool& allowRenderables, bool& exclusiveNavDraw ) -{ - //Render any navmesh geometry - LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance(); - if ( llPathingLibInstance != NULL ) - { - LLHandle<LLFloaterPathfindingConsole> pathfindingConsoleHandle = LLFloaterPathfindingConsole::getInstanceHandle(); - if (!pathfindingConsoleHandle.isDead()) - { - LLFloaterPathfindingConsole *pathfindingConsole = pathfindingConsoleHandle.get(); - //Determine if we can should overlay the navmesh ontop of the scenes typical renderables - allowRenderables = pathfindingConsole->isRenderWorld(); - - //NavMesh - if ( pathfindingConsole->isRenderNavMesh() ) - { - glClearColor(0,0,0,0); - glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - LLGLDisable lighting(GL_LIGHTING); - llPathingLibInstance->renderNavMesh(); - exclusiveNavDraw = true; - } - //physics/exclusion shapes - if ( pathfindingConsole->isRenderAnyShapes() ) - { - llPathingLibInstance->renderNavMeshShapesVBO( pathfindingConsole->getRenderShapeFlags() ); - exclusiveNavDraw = true; - } - //User designated path - if ( pathfindingConsole->isRenderPath() ) - { - llPathingLibInstance->renderPath(); - } - } - } -} void render_hud_attachments() { LLMemType mt_ra(LLMemType::MTYPE_DISPLAY_RENDER_ATTACHMENTS); @@ -1266,7 +1234,6 @@ void render_ui(F32 zoom_factor, int subfield) { render_disconnected_background(); } - render_ui_2d(); LLGLState::checkStates(); } diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 70cf09caca..2c61f70ef4 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -105,6 +105,7 @@ #include "llcurl.h" #include "llnotifications.h" #include "LLPathingLib.h" +#include "llfloaterpathfindingconsole.h" #ifdef _DEBUG // Debug indices is disabled for now for debug performance - djs 4/24/02 @@ -4327,6 +4328,40 @@ void LLPipeline::renderDebug() LLMemType mt(LLMemType::MTYPE_PIPELINE); assertInitialized(); +
+ //Render any navmesh geometry
+ LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance();
+ if ( llPathingLibInstance != NULL )
+ {
+ LLHandle<LLFloaterPathfindingConsole> pathfindingConsoleHandle = LLFloaterPathfindingConsole::getInstanceHandle();
+ if (!pathfindingConsoleHandle.isDead())
+ {
+ LLFloaterPathfindingConsole *pathfindingConsole = pathfindingConsoleHandle.get();
+ //Determine if we can should overlay the navmesh ontop of the scenes typical renderables
+ //allowRenderables = pathfindingConsole->isRenderWorld();
+
+ //NavMesh
+ if ( pathfindingConsole->isRenderNavMesh() )
+ {
+ glClearColor(0,0,0,0);
+ glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
+ //LLGLDisable lighting(GL_LIGHTING);
+ llPathingLibInstance->renderNavMesh();
+ gGL.flush();
+ }
+ //physics/exclusion shapes
+ if ( pathfindingConsole->isRenderAnyShapes() )
+ {
+ llPathingLibInstance->renderNavMeshShapesVBO( pathfindingConsole->getRenderShapeFlags() );
+ }
+ //User designated path
+ if ( pathfindingConsole->isRenderPath() )
+ {
+ llPathingLibInstance->renderPath();
+ }
+ }
+ }
+ gGL.color4f(1,1,1,1); |