diff options
| author | Jonathan "Geenz" Goodman <geenz@geenzo.com> | 2024-02-08 11:39:35 -0800 | 
|---|---|---|
| committer | Jonathan "Geenz" Goodman <geenz@geenzo.com> | 2024-02-08 11:39:35 -0800 | 
| commit | 97d2b216212b3e106bb9129689e8eb162f9f68f5 (patch) | |
| tree | c1cdbcb13ac049827dcf1720f85022bf510ff7ee | |
| parent | 192e77344f44d4a2d6bc765403b27f611b106240 (diff) | |
#671 Setup the viewer to respect the MirrorsEnabled simulator feature.
| -rw-r--r-- | indra/llrender/llshadermgr.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llheroprobemanager.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llheroprobemanager.h | 3 | ||||
| -rw-r--r-- | indra/newview/llpanelvolume.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llviewershadermgr.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 6 | 
6 files changed, 25 insertions, 14 deletions
| diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index d510e061a2..5384133220 100644 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -231,14 +231,6 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)              return FALSE;          }  	} -     -    if (features->hasHeroProbes) -    { -        if (!shader->attachFragmentObject("deferred/heroProbesUtil.glsl")) -        { -            return FALSE; -        } -    }      if (features->hasShadows)  	{ diff --git a/indra/newview/llheroprobemanager.cpp b/indra/newview/llheroprobemanager.cpp index c9728b8d93..a105fd2fa8 100644 --- a/indra/newview/llheroprobemanager.cpp +++ b/indra/newview/llheroprobemanager.cpp @@ -72,6 +72,18 @@ void LLHeroProbeManager::update()          return;      } +    // This should be moved elsewhere. +    LLSD features; +    gAgent.getRegion()->getSimulatorFeatures(features); +    if (mHasMirrors != features.has("MirrorsEnabled")) +    { +        mHasMirrors = features.has("MirrorsEnabled"); +        LLViewerShaderMgr::instance()->setShaders(); +    } + +    if (!mHasMirrors) +        return; +      LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY;      llassert(!gCubeSnapshot); // assert a snapshot is not in progress      if (LLAppViewer::instance()->logoutRequestSent()) diff --git a/indra/newview/llheroprobemanager.h b/indra/newview/llheroprobemanager.h index 7485a8cd72..5ec1101b45 100644 --- a/indra/newview/llheroprobemanager.h +++ b/indra/newview/llheroprobemanager.h @@ -72,8 +72,8 @@ public:      void unregisterViewerObject(LLVOVolume* drawablep);      bool isMirrorPass() const { return mRenderingMirror; } +    bool hasMirrors() const { return mHasMirrors; } -    LLPlane   currentMirrorClip() const { return mCurrentClipPlane; }      LLVector3 mMirrorPosition;      LLVector3 mMirrorNormal; @@ -135,6 +135,7 @@ private:      bool mReset = false;      bool mRenderingMirror = false; +    bool mHasMirrors      = false;      std::set<LLVOVolume*>               mHeroVOList;      LLVOVolume*                         mNearestHero; diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp index 6b5b691587..f64106948f 100644 --- a/indra/newview/llpanelvolume.cpp +++ b/indra/newview/llpanelvolume.cpp @@ -392,9 +392,11 @@ void LLPanelVolume::getState( )      bool probe_enabled = is_probe && editable && single_volume; -	getChildView("Probe Update Type")->setVisible(LLPipeline::RenderMirrors); -    getChildView("Probe Update Label")->setVisible(LLPipeline::RenderMirrors); -    getChildView("Probe Dynamic")->setVisible(!LLPipeline::RenderMirrors); +	bool mirrors_enabled = LLPipeline::RenderMirrors && gPipeline.mHeroProbeManager.hasMirrors(); + +	getChildView("Probe Update Type")->setVisible(mirrors_enabled); +    getChildView("Probe Update Label")->setVisible(mirrors_enabled); +    getChildView("Probe Dynamic")->setVisible(!mirrors_enabled);      getChildView("Probe Dynamic")->setEnabled(probe_enabled);      getChildView("Probe Update Type")->setEnabled(probe_enabled); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index e3c2c429da..e6cf37bc3c 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -390,7 +390,7 @@ void LLViewerShaderMgr::setShaders()      mShaderList.clear(); -    LLShaderMgr::sMirrorsEnabled = LLPipeline::RenderMirrors; +    LLShaderMgr::sMirrorsEnabled = LLPipeline::RenderMirrors && gPipeline.mHeroProbeManager.hasMirrors();      if (!gGLManager.mHasRequirements)      { diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 9fb9ade943..32c7563aa0 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1062,7 +1062,11 @@ void LLPipeline::refreshCachedSettings()      RenderScreenSpaceReflectionAdaptiveStepMultiplier = gSavedSettings.getF32("RenderScreenSpaceReflectionAdaptiveStepMultiplier");      RenderScreenSpaceReflectionGlossySamples = gSavedSettings.getS32("RenderScreenSpaceReflectionGlossySamples");  	RenderBufferVisualization = gSavedSettings.getS32("RenderBufferVisualization"); -    RenderMirrors = gSavedSettings.getBOOL("RenderMirrors"); +    if (gSavedSettings.getBOOL("RenderMirrors") != (BOOL)RenderMirrors) +    { +        RenderMirrors = gSavedSettings.getBOOL("RenderMirrors"); +        LLViewerShaderMgr::instance()->setShaders(); +    }      sReflectionProbesEnabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderReflectionsEnabled") && gSavedSettings.getBOOL("RenderReflectionsEnabled");  	RenderSpotLight = nullptr; | 
