diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp index 6cd29d7be45cdaafcde78da9fb7bde4ee8909a90..edf093261c959bce3ebf1793fb1586b9a19e1dcb 100644 --- a/indra/newview/llreflectionmapmanager.cpp +++ b/indra/newview/llreflectionmapmanager.cpp @@ -124,26 +124,6 @@ void LLReflectionMapManager::update() initReflectionMaps(); - if (!mRenderTarget.isComplete()) - { - U32 color_fmt = GL_RGB16F; - U32 targetRes = mProbeResolution * 4; // super sample - mRenderTarget.allocate(targetRes, targetRes, color_fmt, true); - } - - if (mMipChain.empty()) - { - U32 res = mProbeResolution; - U32 count = log2((F32)res) + 0.5f; - - mMipChain.resize(count); - for (int i = 0; i < count; ++i) - { - mMipChain[i].allocate(res, res, GL_RGB16F); - res /= 2; - } - } - llassert(mProbes[0] == mDefaultProbe); LLVector4a camera_pos; @@ -1267,6 +1247,28 @@ void LLReflectionMapManager::initReflectionMaps() mDefaultProbe->mProbeIndex = 0; touch_default_probe(mDefaultProbe); + mRenderTarget.release(); + mMipChain.clear(); + } + + if (!mRenderTarget.isComplete()) + { + U32 color_fmt = GL_RGB16F; + U32 targetRes = mProbeResolution * 4; // super sample + mRenderTarget.allocate(targetRes, targetRes, color_fmt, true); + } + + if (mMipChain.empty()) + { + U32 res = mProbeResolution; + U32 count = log2((F32)res) + 0.5f; + + mMipChain.resize(count); + for (int i = 0; i < count; ++i) + { + mMipChain[i].allocate(res, res, GL_RGB16F); + res /= 2; + } } if (mVertexBuffer.isNull()) diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 77678538ee0f5d389b560aadff3fc802824bb8be..0a3b397b4f0b1771c6f13b9aacd5f0f963feb956 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -754,6 +754,7 @@ void settings_setup_listeners() // [/SL:KB] setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeLevel", 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, "RenderScreenSpaceReflections", handleReflectionProbeDetailChanged); setting_setup_signal_listener(gSavedSettings, "RenderShaderCacheEnabled", handleSetShaderChanged);