diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 71d3eb6f2cfe280dcdb84045d4dc91639eba845f..78e68df9c9d3049331a94c0e103d83bb601d4d9f 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -857,7 +857,10 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples) if (!mPostMap.allocate(resX, resY, GL_RGBA)) return false; if (!mPostFXMap.allocate(resX, resY, GL_RGBA)) return false; - if (RenderDepthOfField || samples > 0) +// if (RenderDepthOfField || samples > 0) +// [RLVa:KB] - @setsphere + if (RenderDepthOfField || samples > 0 || RlvActions::hasPostProcess()) +// [/RLVa:KB] { //only need mPostHelperMap for dof OR fxaa if (!mPostHelperMap.allocate(resX, resY, GL_RGBA)) return false; } @@ -7650,7 +7653,17 @@ void LLPipeline::renderFinalize() combineGlow(&mPostMap, &mPostFXMap); - renderDoF(&mPostFXMap, &mPostMap); + // [RLVa:KB] - @setsphere + LLRenderTarget* pRenderBuffer = &mPostFXMap; + if (RlvActions::hasBehaviour(RLV_BHVR_SETSPHERE)) + { + LLShaderEffectParams params(pRenderBuffer, &mPostHelperMap, false); + LLVfxManager::instance().runEffect(EVisualEffect::RlvSphere, ¶ms); + pRenderBuffer = params.m_pDstBuffer; + } +// [/RLVa:KB] + + renderDoF(pRenderBuffer, &mPostMap); gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft; gGLViewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom; diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index 3358c68b22b601d481a92f0666f2939cc91e96d6..1c6b6eff329cb1f1e6f3566ca990d59ebda71b6d 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -2139,6 +2139,13 @@ ERlvCmdRet RlvBehaviourHandler<RLV_BHVR_SETSPHERE>::onCommand(const RlvCommand& if (gRlvHandler.hasBehaviour(rlvCmd.getObjectID(), rlvCmd.getBehaviourType())) { LLVfxManager::instance().addEffect(new RlvSphereEffect(rlvCmd.getObjectID())); + if (!gPipeline.mPostHelperMap.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.mPostHelperMap.isComplete()); + } } else {