Merge branch 'master' of https://bitbucket.org/lindenlab/viewer
commit
6f3797fe3e
|
|
@ -1 +1 @@
|
|||
6.4.0
|
||||
6.4.1
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@
|
|||
*/
|
||||
|
||||
|
||||
VARYING vec3 vary_SunlitColor;
|
||||
VARYING vec3 vary_AdditiveColor;
|
||||
VARYING vec3 vary_AtmosAttenuation;
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
@ -2797,6 +2795,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<LLSettingsVOSky>(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<LLSettingsVOWater>(env_data["water_llsd"]);
|
||||
setEnvironment(ENV_LOCAL, sky);
|
||||
valid = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool LLEnvironment::loadFromSettings()
|
||||
{
|
||||
if (!gSavedSettings.getBOOL("EnvironmentPersistAcrossLogin"))
|
||||
|
|
@ -2845,13 +2874,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"))
|
||||
{
|
||||
|
|
@ -2862,33 +2910,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<LLSettingsVOSky>(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<LLSettingsVOWater>(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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -455,6 +455,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()
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2659,7 +2659,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();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue