diff options
author | mobserveur <mobserveur@gmail.co[alias]> | 2025-03-22 15:21:11 +0100 |
---|---|---|
committer | Erik Kundiman <erik@megapahit.org> | 2025-03-22 22:27:15 +0800 |
commit | faab4af12b583b48cfdd9f6e41dad7bba06c3970 (patch) | |
tree | 70b2a8f196d05e0dad7aa99e9d39a0be9faa4fc9 /indra | |
parent | f4f821fbc85286447b69eb2933dd3ec8b878f0a5 (diff) |
Water exclusion seems to be at the origin of poor performance with antilasing combind with hdr mode.
We remove this from pipeline.cpp for now as a temporary fix. Technically we revert pipeline.cpp to the previous version.
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/pipeline.cpp | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index e441e189ad..362930a71e 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -431,7 +431,6 @@ void LLPipeline::init() stop_glerror(); //create render pass pools - getPool(LLDrawPool::POOL_WATEREXCLUSION); getPool(LLDrawPool::POOL_ALPHA_PRE_WATER); getPool(LLDrawPool::POOL_ALPHA_POST_WATER); getPool(LLDrawPool::POOL_SIMPLE); @@ -674,8 +673,6 @@ void LLPipeline::cleanup() // don't delete wl sky pool it was handled above in the for loop //delete mWLSkyPool; mWLSkyPool = NULL; - delete mWaterExclusionPool; - mWaterExclusionPool = nullptr; releaseGLBuffers(); @@ -910,15 +907,6 @@ bool LLPipeline::allocateScreenBufferInternal(U32 resX, U32 resY) mPostMap.allocate(resX, resY, screenFormat); - // The water exclusion mask needs its own depth buffer so we can take care of the problem of multiple water planes. - // Should we ever make water not just a plane, it also aids with that as well as the water planes will be rendered into the mask. - // Why do we do this? Because it saves us some janky logic in the exclusion shader when we generate the mask. - // Regardless, this should always only be an R8 texture unless we choose to start having multiple kinds of exclusion that 8 bits can't handle. - // - Geenz 2025-02-06 - bool success = mWaterExclusionMask.allocate(resX, resY, GL_R8, true); - - assert(success); - // used to scale down textures // See LLViwerTextureList::updateImagesCreateTextures and LLImageGL::scaleDown mDownResMap.allocate(1024, 1024, GL_RGBA); @@ -1178,8 +1166,6 @@ void LLPipeline::releaseGLBuffers() mSceneMap.release(); - mWaterExclusionMask.release(); - mPostMap.release(); mFXAAMap.release(); @@ -1690,10 +1676,6 @@ LLDrawPool *LLPipeline::findPool(const U32 type, LLViewerTexture *tex0) poolp = mPBRAlphaMaskPool; break; - case LLDrawPool::POOL_WATEREXCLUSION: - poolp = mWaterExclusionPool; - break; - default: llassert(0); LL_ERRS() << "Invalid Pool Type in LLPipeline::findPool() type=" << type << LL_ENDL; @@ -4090,8 +4072,6 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera, bool do_occlusion) #endif } -// Render all of our geometry that's required after our deferred pass. -// This is gonna be stuff like alpha, water, etc. void LLPipeline::renderGeomPostDeferred(LLCamera& camera) { LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL; @@ -4110,10 +4090,6 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera) bool done_atmospherics = LLPipeline::sRenderingHUDs; //skip atmospherics on huds bool done_water_haze = done_atmospherics; - bool done_water_exclusion = false; - - // do water exclusion just before water pass. - U32 water_exclusion_pass = LLDrawPool::POOL_WATEREXCLUSION; // do atmospheric haze just before post water alpha U32 atmospherics_pass = LLDrawPool::POOL_ALPHA_POST_WATER; @@ -4152,12 +4128,6 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera) cur_type = poolp->getType(); - if (cur_type >= water_exclusion_pass && !done_water_exclusion) - { // do water exclusion against depth buffer before rendering alpha - doWaterExclusionMask(); - done_water_exclusion = true; - } - if (cur_type >= atmospherics_pass && !done_atmospherics) { // do atmospherics against depth buffer before rendering alpha doAtmospherics(); @@ -5273,17 +5243,6 @@ void LLPipeline::addToQuickLookup( LLDrawPool* new_poolp ) } break; - case LLDrawPool::POOL_WATEREXCLUSION: - if (mWaterExclusionPool) - { - llassert(0); - LL_WARNS() << "LLPipeline::addPool(): Ignoring duplicate Water Exclusion Pool" << LL_ENDL; - } - else - { - mWaterExclusionPool = new_poolp; - } - break; default: llassert(0); @@ -5406,11 +5365,6 @@ void LLPipeline::removeFromQuickLookup( LLDrawPool* poolp ) mPBRAlphaMaskPool = NULL; break; - case LLDrawPool::POOL_WATEREXCLUSION: - llassert(poolp == mWaterExclusionPool); - mWaterExclusionPool = nullptr; - break; - default: llassert(0); LL_WARNS() << "Invalid Pool Type in LLPipeline::removeFromQuickLookup() type=" << poolp->getType() << LL_ENDL; @@ -8912,7 +8866,6 @@ void LLPipeline::renderDeferredLighting() LLPipeline::RENDER_TYPE_FULLBRIGHT_ALPHA_MASK, LLPipeline::RENDER_TYPE_TERRAIN, LLPipeline::RENDER_TYPE_WATER, - LLPipeline::RENDER_TYPE_WATEREXCLUSION, END_RENDER_TYPES); renderGeomPostDeferred(*LLViewerCamera::getInstance()); @@ -9051,8 +9004,6 @@ void LLPipeline::doWaterHaze() static LLStaticHashedString above_water_str("above_water"); haze_shader.uniform1i(above_water_str, sUnderWaterRender ? -1 : 1); - haze_shader.bindTexture(LLShaderMgr::WATER_EXCLUSIONTEX, &mWaterExclusionMask); - if (LLPipeline::sUnderWaterRender) { LLGLDepthTest depth(GL_FALSE); @@ -9083,17 +9034,6 @@ void LLPipeline::doWaterHaze() } } -void LLPipeline::doWaterExclusionMask() -{ - mWaterExclusionMask.bindTarget(); - glClearColor(1, 1, 1, 1); - mWaterExclusionMask.clear(); - mWaterExclusionPool->render(); - - mWaterExclusionMask.flush(); - glClearColor(0, 0, 0, 0); -} - void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep) { //construct frustum |