Skip to content
Snippets Groups Projects
Commit 94fa18bf authored by Rye Mutt's avatar Rye Mutt :bread:
Browse files

Only reset probe mip chain and render target on resolution change

parent 05752ddb
No related branches found
No related tags found
No related merge requests found
...@@ -1210,11 +1210,15 @@ void LLReflectionMapManager::initReflectionMaps() ...@@ -1210,11 +1210,15 @@ void LLReflectionMapManager::initReflectionMaps()
{ {
U32 count = LL_MAX_REFLECTION_PROBE_COUNT; U32 count = LL_MAX_REFLECTION_PROBE_COUNT;
if (mTexture.isNull() || mReflectionProbeCount != count || mReset) static LLCachedControl<U32> probe_res_cc(gSavedSettings, "RenderReflectionProbeResolution", 128);
U32 probe_resolution = nhpo2(llclamp(probe_res_cc(), (U32)64, (U32)512));
bool probe_resolution_changed = mProbeResolution != probe_resolution;
if (mTexture.isNull() || mReflectionProbeCount != count || probe_resolution_changed || mReset)
{ {
mReset = false; mReset = false;
mReflectionProbeCount = count; mReflectionProbeCount = count;
mProbeResolution = nhpo2(llclamp(gSavedSettings.getU32("RenderReflectionProbeResolution"), (U32)64, (U32)512)); mProbeResolution = probe_resolution;
mMaxProbeLOD = log2f(mProbeResolution) - 1.f; // number of mips - 1 mMaxProbeLOD = log2f(mProbeResolution) - 1.f; // number of mips - 1
mTexture = new LLCubeMapArray(); mTexture = new LLCubeMapArray();
...@@ -1259,7 +1263,10 @@ void LLReflectionMapManager::initReflectionMaps() ...@@ -1259,7 +1263,10 @@ void LLReflectionMapManager::initReflectionMaps()
mDefaultProbe->mRadius = 4096.f; mDefaultProbe->mRadius = 4096.f;
mDefaultProbe->mProbeIndex = 0; mDefaultProbe->mProbeIndex = 0;
touch_default_probe(mDefaultProbe); touch_default_probe(mDefaultProbe);
}
if (probe_resolution_changed)
{
mRenderTarget.release(); mRenderTarget.release();
mMipChain.clear(); mMipChain.clear();
} }
......
...@@ -747,7 +747,6 @@ void settings_setup_listeners() ...@@ -747,7 +747,6 @@ void settings_setup_listeners()
// [/SL:KB] // [/SL:KB]
setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeLevel", handleReflectionProbeDetailChanged); setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeLevel", handleReflectionProbeDetailChanged);
setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeDetail", handleReflectionProbeDetailChanged); setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeDetail", handleReflectionProbeDetailChanged);
setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeResolution", handleReflectionProbeDetailChanged);
setting_setup_signal_listener(gSavedSettings, "RenderReflectionsEnabled", handleReflectionProbeDetailChanged); setting_setup_signal_listener(gSavedSettings, "RenderReflectionsEnabled", handleReflectionProbeDetailChanged);
setting_setup_signal_listener(gSavedSettings, "RenderScreenSpaceReflections", handleReflectionProbeDetailChanged); setting_setup_signal_listener(gSavedSettings, "RenderScreenSpaceReflections", handleReflectionProbeDetailChanged);
setting_setup_signal_listener(gSavedSettings, "RenderShaderCacheEnabled", handleSetShaderChanged); setting_setup_signal_listener(gSavedSettings, "RenderShaderCacheEnabled", handleSetShaderChanged);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment