From b7d93d8adf9f604a2f345336bd0e37c08a0d10cb Mon Sep 17 00:00:00 2001 From: prep Date: Fri, 24 Feb 2012 13:16:35 -0500 Subject: Path-267: Add support for rendering of walkable objects, obstacles and material phantoms. --- indra/llrender/llrendernavprim.cpp | 7 +++---- indra/newview/llfloaterpathfindingconsole.cpp | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'indra') diff --git a/indra/llrender/llrendernavprim.cpp b/indra/llrender/llrendernavprim.cpp index 30d470729f..bd05f05751 100644 --- a/indra/llrender/llrendernavprim.cpp +++ b/indra/llrender/llrendernavprim.cpp @@ -87,8 +87,7 @@ void LLRenderNavPrim::renderTri( const LLVector3& a, const LLVector3& b, const L //============================================================================= void LLRenderNavPrim::renderNavMeshVB( LLVertexBuffer* pVBO, int vertCnt ) { - LLGLSUIDefault gls_ui; - LLGLEnable depth( GL_DEPTH_TEST ); + LLGLEnable blend( GL_BLEND ); LLGLEnable cull( GL_CULL_FACE ); glLineWidth(1.5f); LLGLSLShader::sNoFixedFunction = false; @@ -96,13 +95,13 @@ 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); + LLGLEnable smooth( GL_LINE_SMOOTH ); //pass 2 outlined pVBO->drawArrays( LLRender::TRIANGLES, 0, vertCnt ); LLGLSLShader::sNoFixedFunction = true; glLineWidth(1.0f); glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); - LLGLDisable smoothout(GL_LINE_SMOOTH); + LLGLDisable smoothout( GL_LINE_SMOOTH ); } //============================================================================= void LLRenderNavPrim::renderStar( const LLVector3& center, const float scale, int color ) const diff --git a/indra/newview/llfloaterpathfindingconsole.cpp b/indra/newview/llfloaterpathfindingconsole.cpp index 7795397803..e09bc028ce 100644 --- a/indra/newview/llfloaterpathfindingconsole.cpp +++ b/indra/newview/llfloaterpathfindingconsole.cpp @@ -248,7 +248,7 @@ void LLFloaterPathfindingConsole::onClose(bool pIsAppQuitting) { mAgentStateSlot.disconnect(); } - + LLPathingLib::getInstance()->cleanupResidual(); LLFloater::onClose(pIsAppQuitting); } -- cgit v1.2.3 From b64773bf2d18ae7cb560977e89d10d70a4483290 Mon Sep 17 00:00:00 2001 From: prep Date: Fri, 24 Feb 2012 14:34:53 -0500 Subject: Fix for nacmesh viewing on low gfx setting and llpathinglib update. --- indra/llrender/llrendernavprim.cpp | 13 ++++++++----- indra/newview/llviewerdisplay.cpp | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) (limited to 'indra') diff --git a/indra/llrender/llrendernavprim.cpp b/indra/llrender/llrendernavprim.cpp index bd05f05751..47cc996043 100644 --- a/indra/llrender/llrendernavprim.cpp +++ b/indra/llrender/llrendernavprim.cpp @@ -37,6 +37,7 @@ 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 ); @@ -51,7 +52,7 @@ void LLRenderNavPrim::renderSegment( const LLVector3& start, const LLVector3& en gGL.end(); gGL.flush(); - LLGLSLShader::sNoFixedFunction = true; + LLGLSLShader::sNoFixedFunction = ff; LLGLDisable smoothout(GL_LINE_SMOOTH); glLineWidth(1.0f); } @@ -70,7 +71,8 @@ void LLRenderNavPrim::renderTri( const LLVector3& a, const LLVector3& b, const L LLGLEnable cull(GL_CULL_FACE); LLColor4 colorA( color ); colorA*=1.25f; - gGL.color4fv( colorA.mV ); + gGL.color4fv( colorA.mV ); + bool ff = LLGLSLShader::sNoFixedFunction; LLGLSLShader::sNoFixedFunction = false; gGL.begin(LLRender::TRIANGLES); { @@ -82,14 +84,15 @@ void LLRenderNavPrim::renderTri( const LLVector3& a, const LLVector3& b, const L gGL.flush(); glLineWidth(1.0f); glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); - LLGLSLShader::sNoFixedFunction = true; + LLGLSLShader::sNoFixedFunction = ff; } //============================================================================= void LLRenderNavPrim::renderNavMeshVB( LLVertexBuffer* pVBO, int vertCnt ) { LLGLEnable blend( GL_BLEND ); LLGLEnable cull( GL_CULL_FACE ); - glLineWidth(1.5f); + glLineWidth(1.5f); + bool ff = LLGLSLShader::sNoFixedFunction; LLGLSLShader::sNoFixedFunction = false; //pass 1 filled pVBO->setBuffer( LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_COLOR | LLVertexBuffer::MAP_NORMAL ); @@ -98,7 +101,7 @@ void LLRenderNavPrim::renderNavMeshVB( LLVertexBuffer* pVBO, int vertCnt ) LLGLEnable smooth( GL_LINE_SMOOTH ); //pass 2 outlined pVBO->drawArrays( LLRender::TRIANGLES, 0, vertCnt ); - LLGLSLShader::sNoFixedFunction = true; + LLGLSLShader::sNoFixedFunction = ff; glLineWidth(1.0f); glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); LLGLDisable smoothout( GL_LINE_SMOOTH ); diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index c58783d64b..2f64424e30 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -911,6 +911,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) //NavMesh if (pathfindingConsole->isRenderNavMesh()) { + glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); llPathingLibInstance->renderNavMesh(); exclusiveDraw = true; } -- cgit v1.2.3 From 37febbcb7acd4dba4d6166ce21247bff51ed2834 Mon Sep 17 00:00:00 2001 From: prep Date: Fri, 24 Feb 2012 16:10:18 -0500 Subject: WIP: navmesh rendering on ultra. Atmospheric shaders still need to be disabled, but navmesh renders on all settings --- indra/newview/llviewerdisplay.cpp | 88 +++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 41 deletions(-) (limited to 'indra') diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 2f64424e30..42c04f3fd8 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -113,6 +113,7 @@ 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() { @@ -671,8 +672,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) if (!for_snapshot) { if (gFrameCount > 1) - { //for some reason, ATI 4800 series will error out if you - //try to generate a shadow before the first frame is through + { + //for some reason, ATI 4800 series will error out if you + //try to generate a shadow before the first frame is through gPipeline.generateSunShadow(*LLViewerCamera::getInstance()); } @@ -883,8 +885,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) } LLAppViewer::instance()->pingMainloopTimeout("Display:RenderGeom"); - bool exclusiveDraw = false; - BOOL allowRenderables = false; + bool exclusiveNavDraw = false; + bool allowRenderables = false; if (!(LLAppViewer::instance()->logoutRequestSent() && LLAppViewer::instance()->hasSavedFinalSnapshot()) && !gRestoreGL) { @@ -893,44 +895,12 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) gGL.setColorMask(true, false); if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) { - gPipeline.renderGeomDeferred(*LLViewerCamera::getInstance()); - } - else - { - //Render any navmesh geometry - LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance(); - if ( llPathingLibInstance != NULL ) - { - LLHandle 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()) - { - glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - llPathingLibInstance->renderNavMesh(); - exclusiveDraw = true; - } - //physics/exclusion shapes - if (pathfindingConsole->isRenderExclusionVolumes()) - { - llPathingLibInstance->renderNavMeshShapesVBO(); - exclusiveDraw = true; - } - //User designated path - if (pathfindingConsole->isRenderPath()) - { - llPathingLibInstance->renderPath(); - } - } - } + gPipeline.renderGeomDeferred(*LLViewerCamera::getInstance()); } + + render_navmesh( allowRenderables, exclusiveNavDraw ); - if ( !exclusiveDraw || allowRenderables ) + if ( !exclusiveNavDraw || allowRenderables ) { gPipeline.renderGeom(*LLViewerCamera::getInstance(), TRUE); } @@ -986,7 +956,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) } } - if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) + if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender ) { gPipeline.renderDeferredLighting(); } @@ -1022,6 +992,42 @@ 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 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->isRenderExclusionVolumes() ) + { + llPathingLibInstance->renderNavMeshShapesVBO(); + exclusiveNavDraw = true; + } + //User designated path + if ( pathfindingConsole->isRenderPath() ) + { + llPathingLibInstance->renderPath(); + } + } + } +} void render_hud_attachments() { LLMemType mt_ra(LLMemType::MTYPE_DISPLAY_RENDER_ATTACHMENTS); -- cgit v1.2.3