From c15baecbfbc9baffdeb6ec53b7e4090470514657 Mon Sep 17 00:00:00 2001 From: Graham Linden Date: Mon, 10 Jun 2019 14:54:47 -0700 Subject: SL-11370 Modify culling logic to exclude objects correctly in < Mid graphics. --- indra/newview/pipeline.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'indra/newview/pipeline.cpp') diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 7e819c0a52..d4c25a4ebc 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -9360,8 +9360,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) updateCull(camera, mSky); stateSort(camera, mSky); - gPipeline.grabReferences(mSky); - renderGeom(camera, TRUE); gPipeline.popRenderTypeMask(); @@ -9395,7 +9393,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) LLGLDisable cull(GL_CULL_FACE); updateCull(camera, mReflectedObjects, -water_clip, &plane); stateSort(camera, mReflectedObjects); - gPipeline.grabReferences(mReflectedObjects); renderGeom(camera); } @@ -9472,11 +9469,25 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) clip_plane.disable(); } - updateCull(camera, mRefractedObjects, water_clip, &plane); - stateSort(camera, mRefractedObjects); - gPipeline.grabReferences(mRefractedObjects); + if (detail > 0) + { + if (detail < 4) + { + clearRenderTypeMask(LLPipeline::RENDER_TYPE_PARTICLES, END_RENDER_TYPES); + if (detail < 3) + { + clearRenderTypeMask(LLPipeline::RENDER_TYPE_AVATAR, END_RENDER_TYPES); + if (detail < 2) + { + clearRenderTypeMask(LLPipeline::RENDER_TYPE_VOLUME, END_RENDER_TYPES); + } + } + } - renderGeom(camera); + updateCull(camera, mRefractedObjects, water_clip, &plane); + stateSort(camera, mRefractedObjects); + renderGeom(camera); + } if (LLGLSLShader::sNoFixedFunction) { -- cgit v1.2.3