From b7490b0bc5d7b11fc5c46b406926b7545fd620dc Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sat, 4 Feb 2023 15:38:26 +0100 Subject: [PATCH] Remove RLVa @setsphere from the rendering pipeline since it's completely broken by now and needs to be re-implemented away --- indra/newview/llappviewer.cpp | 5 +- indra/newview/llviewercontrol.cpp | 9 --- indra/newview/llviewershadermgr.cpp | 7 -- indra/newview/llviewershadermgr.h | 3 - indra/newview/pipeline.cpp | 114 ++++++---------------------- indra/newview/pipeline.h | 3 - indra/newview/rlveffects.cpp | 43 ++++++----- indra/newview/rlvhandler.cpp | 59 +++++++------- 8 files changed, 76 insertions(+), 167 deletions(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 9bb3b22b9a..78082c42e0 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -649,10 +649,7 @@ static void settings_modify() LLPipeline::sRenderTransparentWater = gSavedSettings.getBOOL("RenderTransparentWater"); LLPipeline::sRenderBump = TRUE; // FALSE is deprecated -- gSavedSettings.getBOOL("RenderObjectBump"); LLPipeline::sRenderDeferred = TRUE; // FALSE is deprecated -- LLPipeline::sRenderBump&& gSavedSettings.getBOOL("RenderDeferred"); -// LLRenderTarget::sUseFBO = LLPipeline::sRenderDeferred; -// [RLVa:KB] - @setsphere - LLRenderTarget::sUseFBO = LLPipeline::sRenderDeferred || (gSavedSettings.getBOOL("WindLightUseAtmosShaders") && LLPipeline::sUseDepthTexture); -// [/RLVa:KB] + LLRenderTarget::sUseFBO = LLPipeline::sRenderDeferred; LLVOSurfacePatch::sLODFactor = gSavedSettings.getF32("RenderTerrainLODFactor"); LLVOSurfacePatch::sLODFactor *= LLVOSurfacePatch::sLODFactor; //square lod factor to get exponential range of [1,4] gDebugGL = gDebugGLSession || gDebugSession; diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index b516522d69..bd6d77fc84 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -226,15 +226,6 @@ static bool handleAvatarHoverOffsetChanged(const LLSD& newvalue) bool handleSetShaderChanged(const LLSD& newvalue) // { -// [RLVa:KB] - @setenv and @setsphere - if ( (RlvActions::isRlvEnabled()) && (!RlvActions::canChangeEnvironment() || (LLVfxManager::instance().hasEffect(EVisualEffect::RlvSphere))) && - (LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))&& (!gSavedSettings.getBOOL("WindLightUseAtmosShaders")) ) - { - gSavedSettings.setBOOL("WindLightUseAtmosShaders", TRUE); - return true; - } -// [/RLVa:KB] - // changing shader level may invalidate existing cached bump maps, as the shader type determines the format of the bump map it expects - clear and repopulate the bump cache gBumpImageList.destroyGL(); gBumpImageList.restoreGL(); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 5094248495..f0d2c9c49d 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -202,9 +202,6 @@ LLGLSLShader gDeferredSkinnedFullbrightAlphaMaskProgram; LLGLSLShader gDeferredSkinnedFullbrightAlphaMaskAlphaProgram; LLGLSLShader gNormalMapGenProgram; LLGLSLShader gDeferredGenBrdfLutProgram; -// [RLVa:KB] - @setsphere -LLGLSLShader gRlvSphereProgram; -// [/RLVa:KB] // Deferred materials shaders LLGLSLShader gDeferredMaterialProgram[LLMaterial::SHADER_COUNT*2]; @@ -289,10 +286,6 @@ LLViewerShaderMgr::LLViewerShaderMgr() : mShaderList.push_back(&gDeferredWLSunProgram); mShaderList.push_back(&gDeferredPBRAlphaProgram); mShaderList.push_back(&gDeferredSkinnedPBRAlphaProgram); - -// [RLVa:KB] - @setsphere - mShaderList.push_back(&gRlvSphereProgram); -// [/RLVa:KB] } LLViewerShaderMgr::~LLViewerShaderMgr() diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h index 3ca1b3618d..a751865988 100644 --- a/indra/newview/llviewershadermgr.h +++ b/indra/newview/llviewershadermgr.h @@ -264,9 +264,6 @@ extern LLGLSLShader gDeferredFullbrightShinyProgram; extern LLGLSLShader gHUDFullbrightShinyProgram; extern LLGLSLShader gNormalMapGenProgram; extern LLGLSLShader gDeferredGenBrdfLutProgram; -// [RLVa:KB] - @setsphere -extern LLGLSLShader gRlvSphereProgram; -// [/RLVa:KB] // Deferred materials shaders extern LLGLSLShader gDeferredMaterialProgram[LLMaterial::SHADER_COUNT*2]; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 8b183a2c2f..0509e34b73 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -349,9 +349,6 @@ bool LLPipeline::sRenderParticles; // flag to hold correct, user selecte // [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0) bool LLPipeline::sRenderTextures = true; // [/SL:KB] -// [RLVa:KB] - @setsphere -bool LLPipeline::sUseDepthTexture = false; -// [/RLVa:KB] // EventHost API LLPipeline listener. static LLPipelineListener sPipelineListener; @@ -940,17 +937,14 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples) mRT->fxaaBuffer.release(); } -// if (shadow_detail > 0 || ssao || RenderDepthOfField || samples > 0) -// [RLVa:KB] - @setsphere - if (shadow_detail > 0 || ssao || RenderDepthOfField || samples > 0 || RlvActions::hasPostProcess()) -// [/RLVa:KB] - { //only need mRT->deferredLight for shadows OR ssao OR dof OR fxaa - if (!mRT->deferredLight.allocate(resX, resY, GL_RGBA16)) return false; - } - else - { - mRT->deferredLight.release(); - } + if (shadow_detail > 0 || ssao || RenderDepthOfField || samples > 0) + { //only need mRT->deferredLight for shadows OR ssao OR dof OR fxaa + if (!mRT->deferredLight.allocate(resX, resY, GL_RGBA16)) return false; + } + else + { + mRT->deferredLight.release(); + } allocateShadowBuffer(resX, resY); @@ -1067,7 +1061,7 @@ bool LLPipeline::allocateShadowBuffer(U32 resX, U32 resY) //static void LLPipeline::updateRenderTransparentWater() { - sRenderTransparentWater = gSavedSettings.getBOOL("RenderTransparentWater"); + sRenderTransparentWater = gSavedSettings.getBOOL("RenderTransparentWater"); } //static @@ -5555,7 +5549,7 @@ void LLPipeline::setupAvatarLights(bool for_edit) } } F32 backlight_mag; - if (environment.getIsSunUp()) // Factor out instance() calls + if (LLEnvironment::instance().getIsSunUp()) { backlight_mag = BACKLIGHT_DAY_MAGNITUDE_OBJECT; } @@ -7302,23 +7296,14 @@ void LLPipeline::renderPostProcess() LLVertexBuffer::unbind(); - // [RLVa:KB] - @setsphere - LLRenderTarget* pRenderBuffer = (RlvActions::hasBehaviour(RLV_BHVR_SETSPHERE)) ? &mRT->deferredLight : nullptr; - // [/RLVa:KB] - { - bool dof_enabled = + { + bool dof_enabled = (RenderDepthOfFieldInEditMode || !LLToolMgr::getInstance()->inBuildMode()) && RenderDepthOfField && !gCubeSnapshot; bool multisample = RenderFSAASamples > 1 && mRT->fxaaBuffer.isComplete() && !gCubeSnapshot; exoPostProcess::instance().multisample = multisample; // Import Vignette from Exodus -// [RLVa:KB] - @setsphere - if (multisample && !pRenderBuffer) - { - pRenderBuffer = &mRT->deferredLight; - } - // [/RLVa:KB] gViewerWindow->setup3DViewport(); @@ -7513,18 +7498,11 @@ void LLPipeline::renderPostProcess() } { // combine result based on alpha - //if (multisample) - //{ - // mRT->deferredLight.bindTarget(); - // glViewport(0, 0, mRT->deferredScreen.getWidth(), mRT->deferredScreen.getHeight()); - //} -// [RLVa:KB] - @setsphere - if (pRenderBuffer) + if (multisample) { - pRenderBuffer->bindTarget(); + mRT->deferredLight.bindTarget(); glViewport(0, 0, mRT->deferredScreen.getWidth(), mRT->deferredScreen.getHeight()); } -// [/RLVa:KB] else { gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft; @@ -7562,31 +7540,19 @@ void LLPipeline::renderPostProcess() unbindDeferredShader(*shader); - // [RLVa:KB] - @setsphere - if (pRenderBuffer) + if (multisample) { - pRenderBuffer->flush(); + mRT->deferredLight.flush(); } - // [/RLVa:KB] - //if (multisample) - //{ - // mRT->deferredLight.flush(); - //} } } else { LL_PROFILE_GPU_ZONE("no dof"); - //if (multisample) - //{ - // mRT->deferredLight.bindTarget(); - //} -// [RLVa:KB] - @setsphere - if (pRenderBuffer) + if (multisample) { - pRenderBuffer->bindTarget(); + mRT->deferredLight.bindTarget(); } - // [/RLVa:KB] LLGLSLShader* shader = &gDeferredPostNoDoFProgram; bindDeferredShader(*shader); @@ -7611,16 +7577,10 @@ void LLPipeline::renderPostProcess() unbindDeferredShader(*shader); - // [RLVa:KB] - @setsphere - if (pRenderBuffer) + if (multisample) { - pRenderBuffer->flush(); + mRT->deferredLight.flush(); } - // [/RLVa:KB] - //if (multisample) - //{ - // mRT->deferredLight.flush(); - //} } } } @@ -7768,18 +7728,9 @@ void LLPipeline::renderFinalize() LLVertexBuffer::unbind(); } -// [RLVa:KB] - @setsphere - LLRenderTarget* pRenderBuffer = (RlvActions::hasBehaviour(RLV_BHVR_SETSPHERE)) ? &mRT->deferredLight : nullptr; -// [/RLVa:KB] { llassert(!gCubeSnapshot); bool multisample = RenderFSAASamples > 1 && mRT->fxaaBuffer.isComplete(); -// [RLVa:KB] - @setsphere - if (multisample && !pRenderBuffer) - { - pRenderBuffer = &mRT->deferredLight; - } -// [/RLVa:KB] LLGLSLShader* shader = &gGlowCombineProgram; S32 width = mRT->screen.getWidth(); @@ -7787,15 +7738,6 @@ void LLPipeline::renderFinalize() S32 channel = -1; -// [RLVa:KB] - @setsphere - if (RlvActions::hasBehaviour(RLV_BHVR_SETSPHERE)) - { - LLShaderEffectParams params(pRenderBuffer, &mRT->screen, !multisample); - LLVfxManager::instance().runEffect(EVisualEffect::RlvSphere, ¶ms); - pRenderBuffer = params.m_pDstBuffer; - } -// [/RLVa:KB] - // Present everything. if (multisample) { @@ -7810,18 +7752,11 @@ void LLPipeline::renderFinalize() shader->bind(); shader->uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, width, height); - //channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mRT->deferredLight.getUsage()); - //if (channel > -1) - //{ - // mRT->deferredLight.bindTexture(0, channel); - //} -// [RLVa:KB] - @setsphere - channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, pRenderBuffer->getUsage()); + channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mRT->deferredLight.getUsage()); if (channel > -1) { - pRenderBuffer->bindTexture(0, channel); + mRT->deferredLight.bindTexture(0, channel); } -// [RLVa:KB] { LLGLDepthTest depth_test(GL_FALSE, GL_FALSE, GL_ALWAYS); @@ -7831,10 +7766,7 @@ void LLPipeline::renderFinalize() gGL.flush(); -// [RLVa:KB] - @setsphere - shader->disableTexture(LLShaderMgr::DEFERRED_DIFFUSE, pRenderBuffer->getUsage()); -// [/RLVa:KB] - //shader->disableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mRT->deferredLight.getUsage()); + shader->disableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mRT->deferredLight.getUsage()); shader->unbind(); mRT->fxaaBuffer.flush(); diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index fd09bf20c9..36c4aa986d 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -656,9 +656,6 @@ public: // [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0) static bool sRenderTextures; // [/SL:KB] -// [RLVa:KB] - @setsphere - static bool sUseDepthTexture; -// [/RLVa:KB] static LLTrace::EventStatHandle sStatBatchSize; diff --git a/indra/newview/rlveffects.cpp b/indra/newview/rlveffects.cpp index 1c5663f2af..7fe0ee46c2 100644 --- a/indra/newview/rlveffects.cpp +++ b/indra/newview/rlveffects.cpp @@ -402,29 +402,30 @@ void RlvSphereEffect::run(const LLVisualEffectParams* pParams) LL_RECORD_BLOCK_TIME(FTM_RLV_EFFECT_SPHERE); LLGLDepthTest depth(GL_FALSE, GL_FALSE); - gRlvSphereProgram.bind(); - setShaderUniforms(&gRlvSphereProgram); + // KITTYFIXME + //gRlvSphereProgram.bind(); + //setShaderUniforms(&gRlvSphereProgram); - const LLShaderEffectParams* pShaderParams = static_cast(pParams); - switch (m_eMode) - { - case ESphereMode::Blend: - case ESphereMode::ChromaticAberration: - case ESphereMode::Pixelate: - renderPass(&gRlvSphereProgram, pShaderParams); - break; - case ESphereMode::Blur: - case ESphereMode::BlurVariable: - gRlvSphereProgram.uniform2f(LLShaderMgr::RLV_EFFECT_PARAM5, 1.f, 0.f); - renderPass(&gRlvSphereProgram, pShaderParams); - gRlvSphereProgram.uniform2f(LLShaderMgr::RLV_EFFECT_PARAM5, 0.f, 1.f); - renderPass(&gRlvSphereProgram, pShaderParams); - break; - default: - llassert(true); - } + //const LLShaderEffectParams* pShaderParams = static_cast(pParams); + //switch (m_eMode) + //{ + // case ESphereMode::Blend: + // case ESphereMode::ChromaticAberration: + // case ESphereMode::Pixelate: + // renderPass(&gRlvSphereProgram, pShaderParams); + // break; + // case ESphereMode::Blur: + // case ESphereMode::BlurVariable: + // gRlvSphereProgram.uniform2f(LLShaderMgr::RLV_EFFECT_PARAM5, 1.f, 0.f); + // renderPass(&gRlvSphereProgram, pShaderParams); + // gRlvSphereProgram.uniform2f(LLShaderMgr::RLV_EFFECT_PARAM5, 0.f, 1.f); + // renderPass(&gRlvSphereProgram, pShaderParams); + // break; + // default: + // llassert(true); + //} - gRlvSphereProgram.unbind(); + //gRlvSphereProgram.unbind(); } // ==================================================================================== diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index 9c18600728..bfd2d131c0 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -2148,38 +2148,39 @@ ERlvCmdRet RlvBehaviourHandler::onCommand(const RlvCommand& return RLV_RET_FAILED_LOCK; ERlvCmdRet eRet = RlvBehaviourGenericHandler::onCommand(rlvCmd, fRefCount); - if ( (RLV_RET_SUCCESS == eRet) && (!rlvCmd.isModifier()) ) - { - if (gRlvHandler.hasBehaviour(rlvCmd.getObjectID(), rlvCmd.getBehaviourType())) - { - LLVfxManager::instance().addEffect(new RlvSphereEffect(rlvCmd.getObjectID())); + // KITTYFIXME + //if ( (RLV_RET_SUCCESS == eRet) && (!rlvCmd.isModifier()) ) + //{ + // if (gRlvHandler.hasBehaviour(rlvCmd.getObjectID(), rlvCmd.getBehaviourType())) + // { + // LLVfxManager::instance().addEffect(new RlvSphereEffect(rlvCmd.getObjectID())); - Rlv::forceAtmosphericShadersIfAvailable(); + // Rlv::forceAtmosphericShadersIfAvailable(); - // If we're not using deferred but are using Windlight shaders we need to force use of FBO and depthmap texture - if ( (!LLPipeline::sRenderDeferred) && (LLPipeline::WindLightUseAtmosShaders) && (!LLPipeline::sUseDepthTexture) ) - { - LLRenderTarget::sUseFBO = true; - LLPipeline::sUseDepthTexture = true; + // // If we're not using deferred but are using Windlight shaders we need to force use of FBO and depthmap texture + // if ( (!LLPipeline::sRenderDeferred) && (LLPipeline::WindLightUseAtmosShaders) && (!LLPipeline::sUseDepthTexture) ) + // { + // LLRenderTarget::sUseFBO = true; + // LLPipeline::sUseDepthTexture = true; - gPipeline.releaseGLBuffers(); - gPipeline.createGLBuffers(); - gPipeline.resetVertexBuffers(); - LLViewerShaderMgr::instance()->setShaders(); - } - else if (!gPipeline.mRT->deferredLight.isComplete()) - { - // In case of deferred with no shadows, no ambient occlusion, no depth of field, and no antialiasing - gPipeline.releaseGLBuffers(); - gPipeline.createGLBuffers(); - RLV_ASSERT(gPipeline.mRT->deferredLight.isComplete()); - } - } - else - { - LLVfxManager::instance().removeEffect(gRlvHandler.getCurrentObject()); - } - } + // gPipeline.releaseGLBuffers(); + // gPipeline.createGLBuffers(); + // gPipeline.resetVertexBuffers(); + // LLViewerShaderMgr::instance()->setShaders(); + // } + // else if (!gPipeline.mRT->deferredLight.isComplete()) + // { + // // In case of deferred with no shadows, no ambient occlusion, no depth of field, and no antialiasing + // gPipeline.releaseGLBuffers(); + // gPipeline.createGLBuffers(); + // RLV_ASSERT(gPipeline.mRT->deferredLight.isComplete()); + // } + // } + // else + // { + // LLVfxManager::instance().removeEffect(gRlvHandler.getCurrentObject()); + // } + //} return eRet; }