From 1b4814f0e5784b3c339328cccde070dc7c20606b Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Thu, 28 Nov 2024 20:19:51 +0200 Subject: viewer#3170 Fix tonemaping slider At the moment slider is in general settings, not per environment --- indra/llinventory/llsettingssky.cpp | 9 --------- indra/llinventory/llsettingssky.h | 2 -- 2 files changed, 11 deletions(-) (limited to 'indra/llinventory') diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp index f773b64bde..17d259a163 100644 --- a/indra/llinventory/llsettingssky.cpp +++ b/indra/llinventory/llsettingssky.cpp @@ -1180,7 +1180,6 @@ void LLSettingsSky::loadValuesFromLLSD() mHDRMax = 2.0f; mHDRMin = 0.5f; mHDROffset = 1.0f; - mTonemapMix = 1.0f; mSunTextureId = settings[SETTING_SUN_TEXTUREID].asUUID(); mMoonTextureId = settings[SETTING_MOON_TEXTUREID].asUUID(); @@ -2056,14 +2055,6 @@ F32 LLSettingsSky::getHDROffset() const return mHDROffset; } -F32 LLSettingsSky::getTonemapMix() const -{ - if (mCanAutoAdjust) - return 0.0f; - - return mTonemapMix; -} - void LLSettingsSky::setGamma(F32 val) { mGamma = val; diff --git a/indra/llinventory/llsettingssky.h b/indra/llinventory/llsettingssky.h index 8d73c35ff3..f61f8af116 100644 --- a/indra/llinventory/llsettingssky.h +++ b/indra/llinventory/llsettingssky.h @@ -212,7 +212,6 @@ public: F32 getHDRMin() const; F32 getHDRMax() const; F32 getHDROffset() const; - F32 getTonemapMix() const; void setGamma(F32 val); @@ -385,7 +384,6 @@ protected: F32 mCloudVariance; F32 mCloudShadow; F32 mCloudScale; - F32 mTonemapMix; F32 mHDROffset; F32 mHDRMax; F32 mHDRMin; -- cgit v1.3 From c02baded8464781fcb208676610727e677ac6907 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Geenz\" Goodman" Date: Thu, 28 Nov 2024 17:57:30 -0500 Subject: #3170 Fix for tonemapping not working with PBR skies. --- indra/llinventory/llsettingssky.cpp | 17 +++++++++++++++++ indra/llinventory/llsettingssky.h | 3 +++ indra/newview/llsettingsvo.cpp | 6 ++++++ indra/newview/pipeline.cpp | 12 +----------- 4 files changed, 27 insertions(+), 11 deletions(-) (limited to 'indra/llinventory') diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp index 17d259a163..50b458de14 100644 --- a/indra/llinventory/llsettingssky.cpp +++ b/indra/llinventory/llsettingssky.cpp @@ -1180,6 +1180,7 @@ void LLSettingsSky::loadValuesFromLLSD() mHDRMax = 2.0f; mHDRMin = 0.5f; mHDROffset = 1.0f; + mTonemapMix = 1.0f; mSunTextureId = settings[SETTING_SUN_TEXTUREID].asUUID(); mMoonTextureId = settings[SETTING_MOON_TEXTUREID].asUUID(); @@ -2055,6 +2056,22 @@ F32 LLSettingsSky::getHDROffset() const return mHDROffset; } +F32 LLSettingsSky::getTonemapMix() const +{ + if (mCanAutoAdjust) + return 0.0f; + + return mTonemapMix; +} + +void LLSettingsSky::setTonemapMix(F32 mix) +{ + if (mCanAutoAdjust) + return; + + mTonemapMix = mix; +} + void LLSettingsSky::setGamma(F32 val) { mGamma = val; diff --git a/indra/llinventory/llsettingssky.h b/indra/llinventory/llsettingssky.h index f61f8af116..4c635fd946 100644 --- a/indra/llinventory/llsettingssky.h +++ b/indra/llinventory/llsettingssky.h @@ -212,6 +212,8 @@ public: F32 getHDRMin() const; F32 getHDRMax() const; F32 getHDROffset() const; + F32 getTonemapMix() const; + void setTonemapMix(F32 mix); void setGamma(F32 val); @@ -384,6 +386,7 @@ protected: F32 mCloudVariance; F32 mCloudShadow; F32 mCloudScale; + F32 mTonemapMix; F32 mHDROffset; F32 mHDRMax; F32 mHDRMin; diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp index b1bef4c4d8..836b181623 100644 --- a/indra/newview/llsettingsvo.cpp +++ b/indra/newview/llsettingsvo.cpp @@ -804,10 +804,16 @@ void LLSettingsVOSky::applySpecial(void *ptarget, bool force) static LLCachedControl sunlight_scale(gSavedSettings, "RenderSkySunlightScale", 1.5f); static LLCachedControl sunlight_hdr_scale(gSavedSettings, "RenderHDRSkySunlightScale", 1.5f); static LLCachedControl ambient_scale(gSavedSettings, "RenderSkyAmbientScale", 1.5f); + static LLCachedControl tonemap_mix_setting(gSavedSettings, "RenderTonemapMix", 1.f); // sky is a "classic" sky following pre SL 7.0 shading bool classic_mode = psky->canAutoAdjust(); + if (!classic_mode) + { + psky->setTonemapMix(tonemap_mix_setting); + } + shader->uniform1f(LLShaderMgr::SKY_SUNLIGHT_SCALE, hdr ? sunlight_hdr_scale : sunlight_scale); shader->uniform1f(LLShaderMgr::SKY_AMBIENT_SCALE, ambient_scale); shader->uniform1i(LLShaderMgr::CLASSIC_MODE, classic_mode); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 037dfd1d66..1221601c97 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -7150,17 +7150,7 @@ void LLPipeline::tonemap(LLRenderTarget* src, LLRenderTarget* dst) static LLCachedControl tonemap_type_setting(gSavedSettings, "RenderTonemapType", 0U); shader.uniform1i(tonemap_type, tonemap_type_setting); - - static LLCachedControl tonemap_mix_setting(gSavedSettings, "RenderTonemapMix", 1.f); - if (psky->canAutoAdjust()) - { - // Legacy skies - shader.uniform1f(tonemap_mix, 0.f); - } - else - { - shader.uniform1f(tonemap_mix, tonemap_mix_setting()); - } + shader.uniform1f(tonemap_mix, psky->getTonemapMix()); mScreenTriangleVB->setBuffer(); mScreenTriangleVB->drawArrays(LLRender::TRIANGLES, 0, 3); -- cgit v1.3