summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorJonathan "Geenz" Goodman <geenz@geenzo.com>2024-02-08 11:39:35 -0800
committerJonathan "Geenz" Goodman <geenz@geenzo.com>2024-02-08 11:39:35 -0800
commit97d2b216212b3e106bb9129689e8eb162f9f68f5 (patch)
treec1cdbcb13ac049827dcf1720f85022bf510ff7ee /indra
parent192e77344f44d4a2d6bc765403b27f611b106240 (diff)
#671 Setup the viewer to respect the MirrorsEnabled simulator feature.
Diffstat (limited to 'indra')
-rw-r--r--indra/llrender/llshadermgr.cpp8
-rw-r--r--indra/newview/llheroprobemanager.cpp12
-rw-r--r--indra/newview/llheroprobemanager.h3
-rw-r--r--indra/newview/llpanelvolume.cpp8
-rw-r--r--indra/newview/llviewershadermgr.cpp2
-rw-r--r--indra/newview/pipeline.cpp6
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;