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 /indra | |
| parent | 4370d0263301a60988335e99d37f4b584f160f77 (diff) | |
Partial fix for Path-387. Path-287 Viewer perfomance tweaks.
Diffstat (limited to 'indra')
| -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); | 
