summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRunitaiLinden <davep@lindenlab.com>2024-02-08 15:07:54 -0600
committerRunitaiLinden <davep@lindenlab.com>2024-02-08 15:07:54 -0600
commita7310ae7417b2f6e7013762a1cfe3211a163a8d7 (patch)
treea47289c7155a57112f06e841d98e24246b966d1e
parent602be267ed55dc7cb3725bff1510d59bec950d39 (diff)
#671 Nudge RenderMirrors and clear shader cache as needed based on SimulatorFeatures
-rw-r--r--indra/newview/llheroprobemanager.cpp12
-rw-r--r--indra/newview/llheroprobemanager.h2
-rw-r--r--indra/newview/llpanelvolume.cpp2
-rwxr-xr-xindra/newview/llviewerregion.cpp8
-rw-r--r--indra/newview/llviewershadermgr.cpp2
-rw-r--r--indra/newview/pipeline.cpp1
6 files changed, 11 insertions, 16 deletions
diff --git a/indra/newview/llheroprobemanager.cpp b/indra/newview/llheroprobemanager.cpp
index c66054f618..2a81919856 100644
--- a/indra/newview/llheroprobemanager.cpp
+++ b/indra/newview/llheroprobemanager.cpp
@@ -72,18 +72,6 @@ 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 9151189a92..552c5dcaab 100644
--- a/indra/newview/llheroprobemanager.h
+++ b/indra/newview/llheroprobemanager.h
@@ -72,7 +72,6 @@ public:
void unregisterViewerObject(LLVOVolume* drawablep);
bool isMirrorPass() const { return mRenderingMirror; }
- bool hasMirrors() const { return mHasMirrors; }
LLVector3 mMirrorPosition;
LLVector3 mMirrorNormal;
@@ -135,7 +134,6 @@ private:
bool mReset = false;
bool mRenderingMirror = false;
- bool mHasMirrors = false;
std::set<LLPointer<LLVOVolume>> mHeroVOList;
LLPointer<LLVOVolume> mNearestHero;
diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp
index f64106948f..8d8263448d 100644
--- a/indra/newview/llpanelvolume.cpp
+++ b/indra/newview/llpanelvolume.cpp
@@ -392,7 +392,7 @@ void LLPanelVolume::getState( )
bool probe_enabled = is_probe && editable && single_volume;
- bool mirrors_enabled = LLPipeline::RenderMirrors && gPipeline.mHeroProbeManager.hasMirrors();
+ bool mirrors_enabled = LLPipeline::RenderMirrors;
getChildView("Probe Update Type")->setVisible(mirrors_enabled);
getChildView("Probe Update Label")->setVisible(mirrors_enabled);
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index ce57585d82..cea083e07d 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -2451,6 +2451,14 @@ void LLViewerRegion::setSimulatorFeatures(const LLSD& sim_features)
gSavedSettings.setS32("max_texture_dimension_X", 1024);
gSavedSettings.setS32("max_texture_dimension_Y", 1024);
}
+
+ bool mirrors_enabled = false;
+ if (mSimulatorFeatures.has("MirrorsEnabled"))
+ {
+ mirrors_enabled = mSimulatorFeatures["MirrorsEnabled"].asBoolean();
+ }
+
+ gSavedSettings.setBOOL("RenderMirrors", mirrors_enabled);
}
//this is called when the parent is not cacheable.
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index b175172b9b..4eb934114d 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -390,7 +390,7 @@ void LLViewerShaderMgr::setShaders()
mShaderList.clear();
- LLShaderMgr::sMirrorsEnabled = LLPipeline::RenderMirrors && gPipeline.mHeroProbeManager.hasMirrors();
+ LLShaderMgr::sMirrorsEnabled = LLPipeline::RenderMirrors;
if (!gGLManager.mHasRequirements)
{
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 32c7563aa0..9d90002eb9 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1065,6 +1065,7 @@ void LLPipeline::refreshCachedSettings()
if (gSavedSettings.getBOOL("RenderMirrors") != (BOOL)RenderMirrors)
{
RenderMirrors = gSavedSettings.getBOOL("RenderMirrors");
+ LLViewerShaderMgr::instance()->clearShaderCache();
LLViewerShaderMgr::instance()->setShaders();
}
sReflectionProbesEnabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderReflectionsEnabled") && gSavedSettings.getBOOL("RenderReflectionsEnabled");