From 3c6b666ccdb00cf4c8744f11069b2394f8e76267 Mon Sep 17 00:00:00 2001 From: Dave Houlton Date: Thu, 9 Apr 2020 18:30:33 -0600 Subject: [PATCH 1/5] SL-12975, unfix alpha and undo non-fix magic number of refracted portion of water Fresnel --- .../app_settings/shaders/class1/deferred/waterF.glsl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl index ceb4b8033d..a157e9c017 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl @@ -152,7 +152,7 @@ void main() spec = pow(spec, 128.0); //figure out distortion vector (ripply) - vec2 distort2 = distort+wavef.xy*refScale*0.16/max(dmod*df1, 1.0); + vec2 distort2 = distort+wavef.xy*refScale/max(dmod*df1, 1.0); vec4 fb = texture2D(screenTex, distort2); @@ -172,7 +172,13 @@ void main() vec3 screenspacewavef = normalize((norm_mat*vec4(wavef, 1.0)).xyz); //frag_data[0] = color; - frag_data[0] = color; + + // TODO: The non-obvious assignment below is copied from the pre-EEP WL shader code + // Unfortunately, fixing it causes a mismatch for EEP, and so it remains... for now + // SL-12975 (unfix pre-EEP broken alpha) + frag_data[0] = vec4(color.rgb, color); // Effectively, color.rgbr + + frag_data[1] = vec4(0); // speccolor, spec frag_data[2] = vec4(encode_normal(screenspacewavef.xyz), 0.05, 0);// normalxy, 0, 0 } From 483c459e2e013e3bf1c813c3bb5030d0c0631963 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Sat, 11 Apr 2020 00:23:08 +0300 Subject: [PATCH 2/5] SL-13029 Environment update was not applying properly --- indra/newview/llenvironment.cpp | 88 ++++++++++++++++++++++----------- indra/newview/llenvironment.h | 1 + 2 files changed, 60 insertions(+), 29 deletions(-) diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index 1c551ed9a8..7cd9503e4d 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -2791,6 +2791,37 @@ void LLEnvironment::saveToSettings() } } +void LLEnvironment::loadSkyWaterFromSettings(const LLSD &env_data, bool &valid, bool &assets_present) +{ + if (env_data.has("sky_id")) + { + // causes asset loaded callback and an update + setEnvironment(ENV_LOCAL, env_data["sky_id"].asUUID()); + valid = true; + assets_present = true; + } + else if (env_data.has("sky_llsd")) + { + LLSettingsSky::ptr_t sky = std::make_shared(env_data["sky_llsd"]); + setEnvironment(ENV_LOCAL, sky); + valid = true; + } + + if (env_data.has("water_id")) + { + // causes asset loaded callback and an update + setEnvironment(ENV_LOCAL, env_data["water_id"].asUUID()); + valid = true; + assets_present = true; + } + else if (env_data.has("water_llsd")) + { + LLSettingsWater::ptr_t sky = std::make_shared(env_data["water_llsd"]); + setEnvironment(ENV_LOCAL, sky); + valid = true; + } +} + bool LLEnvironment::loadFromSettings() { if (!gSavedSettings.getBOOL("EnvironmentPersistAcrossLogin")) @@ -2839,13 +2870,32 @@ bool LLEnvironment::loadFromSettings() } bool valid = false; + bool has_assets = false; if (env_data.has("day_id")) { - S32 length = env_data["day_length"].asInteger(); - S32 offset = env_data["day_offset"].asInteger(); - setEnvironment(ENV_LOCAL, env_data["day_id"].asUUID(), LLSettingsDay::Seconds(length), LLSettingsDay::Seconds(offset)); - valid = true; + LLSettingsDay::Seconds length = LLSettingsDay::Seconds(env_data["day_length"].asInteger()); + LLSettingsDay::Seconds offset = LLSettingsDay::Seconds(env_data["day_offset"].asInteger()); + LLUUID assetId = env_data["day_id"].asUUID(); + + LLSettingsVOBase::getSettingsAsset(assetId, + [this, length, offset, env_data](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) + { + // Day should be always applied first, + // otherwise it will override sky or water that was set earlier + // so wait for asset to load before applying sky/water + onSetEnvAssetLoaded(ENV_LOCAL, asset_id, settings, length, offset, TRANSITION_DEFAULT, status, NO_VERSION); + bool valid = false, has_assets = false; + loadSkyWaterFromSettings(env_data, valid, has_assets); + if (!has_assets && valid) + { + // Settings were loaded from file without having an asset, needs update + // otherwise update will be done by asset callback + updateEnvironment(TRANSITION_DEFAULT, true); + } + }); + // bail early, everything have to be done at callback + return true; } else if (env_data.has("day_llsd")) { @@ -2856,33 +2906,13 @@ bool LLEnvironment::loadFromSettings() valid = true; } - if (env_data.has("sky_id")) - { - setEnvironment(ENV_LOCAL, env_data["sky_id"].asUUID()); - valid = true; - } - else if (env_data.has("sky_llsd")) - { - LLSettingsSky::ptr_t sky = std::make_shared(env_data["sky_llsd"]); - setEnvironment(ENV_LOCAL, sky); - valid = true; - } + loadSkyWaterFromSettings(env_data, valid, has_assets); - if (env_data.has("water_id")) + if (valid && !has_assets) { - setEnvironment(ENV_LOCAL, env_data["water_id"].asUUID()); - valid = true; - } - else if (env_data.has("water_llsd")) - { - LLSettingsWater::ptr_t sky = std::make_shared(env_data["water_llsd"]); - setEnvironment(ENV_LOCAL, sky); - valid = true; - } - - if (valid) - { - updateEnvironment(TRANSITION_INSTANT, true); + // Settings were loaded from file without having an asset, needs update + // otherwise update will be done by asset callback + updateEnvironment(TRANSITION_DEFAULT, true); } return valid; } diff --git a/indra/newview/llenvironment.h b/indra/newview/llenvironment.h index cf8231168f..91c4b85135 100644 --- a/indra/newview/llenvironment.h +++ b/indra/newview/llenvironment.h @@ -444,6 +444,7 @@ private: void onSetExperienceEnvAssetLoaded(LLUUID experience_id, LLSettingsBase::ptr_t setting, F32 transition_time, S32 status); void listenExperiencePump(const LLSD &message); + void loadSkyWaterFromSettings(const LLSD &env_data, bool &valid, bool &assets_present); // for use in loadFromSettings() }; From ee88ebf9e924882d0ac5baf0908fc9d6f437cfa2 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 13 Apr 2020 16:48:25 +0300 Subject: [PATCH 3/5] SL-13029 Fixed load order --- indra/newview/llenvironment.cpp | 2 -- indra/newview/llstartup.cpp | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index 7cd9503e4d..0e1c4f9434 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -851,8 +851,6 @@ void LLEnvironment::initSingleton() } LLEventPumps::instance().obtain(PUMP_EXPERIENCE).listen(LISTENER_NAME, [this](LLSD message) { listenExperiencePump(message); return false; }); - - loadFromSettings(); } void LLEnvironment::cleanupSingleton() diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 8093a3a589..a1d1e85492 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1878,7 +1878,11 @@ bool idle_startup() } display_startup(); - + + // Load stored local environment if needed. Only should be done once at least + // initial region data got loaded to avoid race condition with region's environment + LLEnvironment::instance().loadFromSettings(); + // *TODO : Uncomment that line once the whole grid migrated to SLM and suppress it from LLAgent::handleTeleportFinished() (llagent.cpp) //check_merchant_status(); From ff27f6c8f77cc910f240b057b58fffa49023bdc1 Mon Sep 17 00:00:00 2001 From: Dave Houlton Date: Tue, 14 Apr 2020 12:20:04 -0600 Subject: [PATCH 4/5] SL-13019, fix broken varying linkage on MacOS --- .../shaders/class2/deferred/softenLightV.glsl | 9 +++++++++ .../shaders/class2/windlight/atmosphericsVarsF.glsl | 1 - 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl index 8b8b338f68..bd11aa3f05 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl @@ -31,10 +31,19 @@ uniform vec2 screen_res; VARYING vec2 vary_fragcoord; +// forwards +void setAtmosAttenuation(vec3 c); +void setAdditiveColor(vec3 c); + void main() { //transform vertex vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0); gl_Position = pos; + + // appease OSX GLSL compiler/linker by touching all the varyings we said we would + setAtmosAttenuation(vec3(1)); + setAdditiveColor(vec3(0)); + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; } diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl index ea37610502..d758f85d71 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl @@ -24,7 +24,6 @@ */ -VARYING vec3 vary_SunlitColor; VARYING vec3 vary_AdditiveColor; VARYING vec3 vary_AtmosAttenuation; From d7f1c88c35849e56f5b352f13c16a08467d1533b Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 20 Apr 2020 14:09:16 -0400 Subject: [PATCH 5/5] Increment viewer version to 6.4.1 following promotion of DRTVWR-440 --- indra/newview/VIEWER_VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 19b860c187..4c77920fd2 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -6.4.0 +6.4.1