diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp index 6ce141ad373fed8075787b2b4ea75914c23242d1..375f8a65e16a7a9758a1fa4ca8717ef8e294f620 100644 --- a/indra/llinventory/llsettingssky.cpp +++ b/indra/llinventory/llsettingssky.cpp @@ -1472,7 +1472,10 @@ F32 LLSettingsSky::getTotalReflectionProbeAmbiance(F32 cloud_shadow_scale) const // without brightening dark/interior spaces F32 probe_ambiance = getReflectionProbeAmbiance(); - probe_ambiance += (1.f - probe_ambiance) * getCloudShadow()*cloud_shadow_scale; + if (probe_ambiance > 0.f) + { + probe_ambiance += (1.f - probe_ambiance) * getCloudShadow() * cloud_shadow_scale; + } return probe_ambiance; } diff --git a/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl b/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl index a3b48e08980691fbc6ee86a931e6661b0d79241e..3cca84ca146050d2bc357b55c7e1d78bf3bb7d3a 100644 --- a/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl @@ -93,16 +93,11 @@ vec3 legacy_adjust_no_brighten(vec3 c) vec3 legacy_adjust(vec3 c) { -#if 1 vec3 desat = rgb2hsv(c.rgb); desat.g *= 1.0-(1.0-desat.b)*0.5; - //desat.g = max(desat.g-0.1*c.b-0.1, 0.0); desat.b += (1.0-desat.b)*0.1f; desat.rgb = hsv2rgb(desat); return desat; -#else - return c; -#endif } vec3 legacy_adjust_post(vec3 c) diff --git a/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl index 62bb09e94b73c983302104822158a29da311159a..e5341386bd422e46dd19562869b83fecf6bdc6ea 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl @@ -411,7 +411,8 @@ void main() applyLegacyEnv(color, legacyenv, spec, pos.xyz, norm.xyz, env); float cur_glare = max(max(legacyenv.r, legacyenv.g), legacyenv.b); - cur_glare *= env*4.0; + cur_glare = clamp(cur_glare, 0, 1); + cur_glare *= env; glare += cur_glare; } diff --git a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl index e1b18935e80e7ef0dc7630334aa70a71bb511d37..55a43f76d0f5b6b7b701d6a3ace12c7e160bdf69 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl @@ -752,6 +752,8 @@ void sampleReflectionProbesLegacy(inout vec3 ambenv, inout vec3 glossenv, inout legacyenv = mix(legacyenv, ssr.rgb, w); } #endif + + glossenv = clamp(glossenv, vec3(0), vec3(10)); } void applyGlossEnv(inout vec3 color, vec3 glossenv, vec4 spec, vec3 pos, vec3 norm) diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index a9da887220348754e1c5b2c04e57c2ec5ea000bc..e8f70cd576d469555be7a2674013748d42fd298a 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -264,6 +264,11 @@ void LLDrawPoolWLSky::renderSkyCloudsDeferred(const LLVector3& camPosLocal, F32 F32 cloud_variance = psky ? psky->getCloudVariance() : 0.0f; F32 blend_factor = psky ? psky->getBlendFactor() : 0.0f; + if (psky->getCloudScrollRate().isExactlyZero()) + { + blend_factor = 0.f; + } + // if we even have sun disc textures to work with... if (cloud_noise || cloud_noise_next) { diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index 3a5695e113c06eb9773825b65c702eaea75b9302..03a0b741b9a6b7f92f683bf79659b7d8bf94ceb7 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -815,7 +815,7 @@ const F64Seconds LLEnvironment::TRANSITION_SLOW(10.0f); const F64Seconds LLEnvironment::TRANSITION_ALTITUDE(5.0f); const LLUUID LLEnvironment::KNOWN_SKY_SUNRISE("01e41537-ff51-2f1f-8ef7-17e4df760bfb"); -const LLUUID LLEnvironment::KNOWN_SKY_MIDDAY("d0401f82-56b9-f3ef-c6aa-13b589f7fdad"); +const LLUUID LLEnvironment::KNOWN_SKY_MIDDAY("bd2e6d30-6e16-3253-e3e6-549e30b536ca"); const LLUUID LLEnvironment::KNOWN_SKY_LEGACY_MIDDAY("6c83e853-e7f8-cad7-8ee6-5f31c453721c"); const LLUUID LLEnvironment::KNOWN_SKY_SUNSET("084e26cd-a900-28e8-08d0-64a9de5c15e2"); const LLUUID LLEnvironment::KNOWN_SKY_MIDNIGHT("8a01b97a-cb20-c1ea-ac63-f7ea84ad0090"); @@ -1649,8 +1649,16 @@ void LLEnvironment::updateCloudScroll() if (mCurrentEnvironment->getSky() && !mCloudScrollPaused) { - LLVector2 cloud_delta = static_cast<F32>(delta_t)* (mCurrentEnvironment->getSky()->getCloudScrollRate()) / 100.0; - mCloudScrollDelta += cloud_delta; + LLVector2 rate = mCurrentEnvironment->getSky()->getCloudScrollRate(); + if (rate.isExactlyZero()) + { + mCloudScrollDelta.setZero(); + } + else + { + LLVector2 cloud_delta = static_cast<F32>(delta_t) * (mCurrentEnvironment->getSky()->getCloudScrollRate()) / 100.0; + mCloudScrollDelta += cloud_delta; + } } } diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp index 0e3491a204088541e6615e71136a073fa0eb717f..c00679c05c814bd23380a45b14d5a44ffead3c6a 100644 --- a/indra/newview/llsettingsvo.cpp +++ b/indra/newview/llsettingsvo.cpp @@ -726,8 +726,20 @@ void LLSettingsVOSky::applySpecial(void *ptarget, bool force) } else { - shader->uniform3fv(LLShaderMgr::AMBIENT_LINEAR, linearColor3v(getAmbientColor() / 3.f)); // note magic number 3.f comes from SLIDER_SCALE_SUN_AMBIENT - shader->uniform3fv(LLShaderMgr::AMBIENT, LLVector3(ambient.mV)); + if (psky->getReflectionProbeAmbiance() == 0.f) + { + LLVector3 ambcol(ambient.mV); + F32 cloud_shadow = psky->getCloudShadow(); + LLVector3 tmpAmbient = ambcol + ((LLVector3::all_one - ambcol) * cloud_shadow * 0.5f); + + shader->uniform3fv(LLShaderMgr::AMBIENT_LINEAR, linearColor3v(tmpAmbient)); + shader->uniform3fv(LLShaderMgr::AMBIENT, tmpAmbient.mV); + } + else + { + shader->uniform3fv(LLShaderMgr::AMBIENT_LINEAR, linearColor3v(getAmbientColor() / 3.f)); // note magic number 3.f comes from SLIDER_SCALE_SUN_AMBIENT + shader->uniform3fv(LLShaderMgr::AMBIENT, LLVector3(ambient.mV)); + } } shader->uniform3fv(LLShaderMgr::BLUE_HORIZON_LINEAR, linearColor3v(getBlueHorizon() / 2.f)); // note magic number of 2.f comes from SLIDER_SCALE_BLUE_HORIZON_DENSITY diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 73a06714d118e01c8853bebee0b0f5458c3cecb5..b927dd8e4b5942156c30c3c2434ae2eac7156d4c 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -9290,6 +9290,9 @@ class LLWorldEnvSettings : public view_listener_t } else if (event_name == "region") { + // reset probe data when reverting back to region sky setting + gPipeline.mReflectionMapManager.reset(); + LLEnvironment::instance().clearEnvironment(LLEnvironment::ENV_LOCAL); LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::TRANSITION_INSTANT); defocusEnvFloaters();