diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 13 | ||||
| -rw-r--r-- | indra/newview/llheroprobemanager.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/llheroprobemanager.h | 1 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/pipeline.h | 1 | 
5 files changed, 22 insertions, 3 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 6a84f64030..e707e1eb5e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10399,7 +10399,18 @@      <key>Type</key>      <string>S32</string>      <key>Value</key> -    <real>1</real> +    <integer>2</integer> +  </map> +  <key>RenderHeroProbeConservativeUpdateMultiplier</key> +  <map> +    <key>Comment</key> +    <string>How many probe updates to wait until it's time to update faces that are not directly facing the camera.  Acts as a multiplier.  E.g., frames to the periphery of the camera updating once every 3 updates, vs ones directly facing the camera updating every update.</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>S32</string> +    <key>Value</key> +    <integer>16</integer>    </map>      <key>RenderReflectionProbeVolumes</key>      <map> diff --git a/indra/newview/llheroprobemanager.cpp b/indra/newview/llheroprobemanager.cpp index 3adf460432..a00b6d6b5d 100644 --- a/indra/newview/llheroprobemanager.cpp +++ b/indra/newview/llheroprobemanager.cpp @@ -165,7 +165,12 @@ void LLHeroProbeManager::update()              {                  float shouldUpdate = cam_direction * cubeFaces[i] * 0.5 + 0.5; -                int updateRate = fmaxf(1, (1 - shouldUpdate) * 8); +                int updateRate = ceilf((1 - shouldUpdate) * gPipeline.RenderHeroProbeConservativeUpdateMultiplier); +                 +                // Chances are this is a face that's non-visible to the camera when it's being reflected. +                // Set it to 0.  It will be skipped below. +                if (updateRate == gPipeline.RenderHeroProbeConservativeUpdateMultiplier) +                    updateRate = 0;                  mFaceUpdateList[i] = updateRate;              } diff --git a/indra/newview/llheroprobemanager.h b/indra/newview/llheroprobemanager.h index 038a8fd45a..e430cae203 100644 --- a/indra/newview/llheroprobemanager.h +++ b/indra/newview/llheroprobemanager.h @@ -138,7 +138,6 @@ private:      std::map<int, int> mFaceUpdateList;      U32 mCurrentProbeUpdateFrame = 0; -    U32 mLowPriorityFaceThrottle = 2;      std::vector<LLVOVolume*>                       mHeroVOList;      LLVOVolume*                                 mNearestHero; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index e3e2da3b30..94ec5c0817 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -200,6 +200,7 @@ S32 LLPipeline::RenderScreenSpaceReflectionGlossySamples;  S32 LLPipeline::RenderBufferVisualization;  bool LLPipeline::RenderMirrors;  S32 LLPipeline::RenderHeroProbeUpdateRate; +S32 LLPipeline::RenderHeroProbeConservativeUpdateMultiplier;  LLTrace::EventStatHandle<S64> LLPipeline::sStatBatchSize("renderbatchsize");  const U32 LLPipeline::MAX_BAKE_WIDTH = 512; @@ -561,6 +562,7 @@ void LLPipeline::init()  	connectRefreshCachedSettingsSafe("RenderBufferVisualization");      connectRefreshCachedSettingsSafe("RenderMirrors");      connectRefreshCachedSettingsSafe("RenderHeroProbeUpdateRate"); +    connectRefreshCachedSettingsSafe("RenderHeroProbeConservativeUpdateMultiplier");  	gSavedSettings.getControl("RenderAutoHideSurfaceAreaLimit")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));  } @@ -1074,6 +1076,7 @@ void LLPipeline::refreshCachedSettings()          LLViewerShaderMgr::instance()->setShaders();      }      RenderHeroProbeUpdateRate = gSavedSettings.getS32("RenderHeroProbeUpdateRate"); +    RenderHeroProbeConservativeUpdateMultiplier = gSavedSettings.getS32("RenderHeroProbeConservativeUpdateMultiplier");      sReflectionProbesEnabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderReflectionsEnabled") && gSavedSettings.getBOOL("RenderReflectionsEnabled");  	RenderSpotLight = nullptr; diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index fe00c52e6d..817750b4a1 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -1057,6 +1057,7 @@ public:  	static S32 RenderBufferVisualization;  	static bool RenderMirrors;  	static S32 RenderHeroProbeUpdateRate; +    static S32 RenderHeroProbeConservativeUpdateMultiplier;  };  void render_bbox(const LLVector3 &min, const LLVector3 &max); | 
