Remove RLVa @setsphere from the rendering pipeline since it's completely broken by now and needs to be re-implemented away
parent
ca5c9c9215
commit
b7490b0bc5
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -226,15 +226,6 @@ static bool handleAvatarHoverOffsetChanged(const LLSD& newvalue)
|
|||
bool handleSetShaderChanged(const LLSD& newvalue)
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
// [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();
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -349,9 +349,6 @@ bool LLPipeline::sRenderParticles; // <FS:LO> 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()) // <FS:Ansariel> 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; // <FS:CR> 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();
|
||||
|
|
|
|||
|
|
@ -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<S64> sStatBatchSize;
|
||||
|
||||
|
|
|
|||
|
|
@ -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<const LLShaderEffectParams*>(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<const LLShaderEffectParams*>(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();
|
||||
}
|
||||
|
||||
// ====================================================================================
|
||||
|
|
|
|||
|
|
@ -2148,38 +2148,39 @@ ERlvCmdRet RlvBehaviourHandler<RLV_BHVR_SETSPHERE>::onCommand(const RlvCommand&
|
|||
return RLV_RET_FAILED_LOCK;
|
||||
|
||||
ERlvCmdRet eRet = RlvBehaviourGenericHandler<RLV_OPTION_NONE_OR_MODIFIER>::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<RlvSphereEffect>(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<RlvSphereEffect>(gRlvHandler.getCurrentObject());
|
||||
// }
|
||||
//}
|
||||
return eRet;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue