Skip to content
Snippets Groups Projects
Commit 72270213 authored by Graham Linden graham@lindenlab.com's avatar Graham Linden graham@lindenlab.com
Browse files

Add 3p package for adv atmospherics to autobuild.

Mark legacy atmospherics code with ifdefs.

Fix up legacy uplift to include new atmospherics settings.
parent 31017934
No related branches found
No related tags found
No related merge requests found
Showing
with 1065 additions and 285 deletions
......@@ -59,21 +59,57 @@
<string>libatmosphere</string>
<key>platforms</key>
<map>
<key>darwin</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>3950f04d10efd9596093e45f2a265ce1</string>
<key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/14058/88070/libatmosphere-1.0.0.100-darwin-512856.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
</map>
<key>darwin64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>9901421858f72005b1afeacc6d0480bf</string>
<key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/14057/88064/libatmosphere-1.0.0.100-darwin64-512856.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
</map>
<key>windows</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>61532e0f9ec8212964df6944a92a71b4</string>
<key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/14060/88090/libatmosphere-1.0.0.100-windows-512856.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
</map>
<key>windows64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>b6fa628aafcdd006d17e799825fbeb91</string>
<string>6b80692f7fc15ce9348eeee03efb1e24</string>
<key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/13879/86217/libatmosphere-1.0.0.100-windows64-512753.tar.bz2</string>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/14059/88084/libatmosphere-1.0.0.100-windows64-512856.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
</map>
</map>
<key>version</key>
<string>1.0.0.512753</string>
<string>1.0.0.512856</string>
</map>
<key>apr_suite</key>
<map>
......
......@@ -268,10 +268,27 @@ LLSD LLSettingsDay::defaults()
LLSD dfltsetting;
dfltsetting[SETTING_NAME] = "_default_";
dfltsetting[SETTING_TRACKS] = LLSDArray(
LLSDArray(LLSDMap(SETTING_KEYKFRAME, LLSD::Real(0.0f))(SETTING_KEYNAME, "_default_"))
(LLSDMap(SETTING_KEYKFRAME, LLSD::Real(0.0f))(SETTING_KEYNAME, "_default_")));
dfltsetting[SETTING_FRAMES] = LLSD::emptyMap();
LLSD waterTrack;
waterTrack[SETTING_KEYKFRAME] = 0.0f;
waterTrack[SETTING_KEYNAME] = "_default_";
LLSD skyTrack;
skyTrack[SETTING_KEYKFRAME] = 0.0f;
skyTrack[SETTING_KEYNAME] = "_default_";
LLSD tracks;
tracks.append(LLSDArray(waterTrack));
tracks.append(LLSDArray(skyTrack));
dfltsetting[SETTING_TRACKS] = tracks;
LLSD frames(LLSD::emptyMap());
frames["water:_defaults_"] = LLSettingsWater::defaults();
frames["sky:_defaults_"] = LLSettingsSky::defaults();
dfltsetting[SETTING_FRAMES] = frames;
return dfltsetting;
}
......@@ -281,6 +298,8 @@ void LLSettingsDay::blend(const LLSettingsBase::ptr_t &other, F64 mix)
LL_ERRS("DAYCYCLE") << "Day cycles are not blendable!" << LL_ENDL;
}
#pragma optimize("", off)
namespace
{
bool validateDayCycleTrack(LLSD &value)
......@@ -298,6 +317,8 @@ namespace
S32 index = 0;
while (index < (*track).size())
{
LLSD& elem = (*track)[index];
++framecount;
if (index >= LLSettingsDay::FRAME_MAX)
{
......@@ -305,40 +326,46 @@ namespace
continue;
}
if (!(*track)[index].has(LLSettingsDay::SETTING_KEYKFRAME) ||
!(*track)[index][LLSettingsDay::SETTING_KEYKFRAME].isReal())
if (!elem.has(LLSettingsDay::SETTING_KEYKFRAME))
{
(*track).erase(index);
continue;
}
if (!elem[LLSettingsDay::SETTING_KEYKFRAME].isReal())
{
(*track).erase(index);
continue;
}
if (!(*track)[index].has(LLSettingsDay::SETTING_KEYNAME) &&
!(*track)[index].has(LLSettingsDay::SETTING_KEYID))
if (!elem.has(LLSettingsDay::SETTING_KEYNAME) &&
!elem.has(LLSettingsDay::SETTING_KEYID))
{
(*track).erase(index);
continue;
}
F32 frame = (*track)[index][LLSettingsDay::SETTING_KEYKFRAME].asReal();
F32 frame = elem[LLSettingsDay::SETTING_KEYKFRAME].asReal();
if ((frame < 0.0) || (frame > 1.0))
{
frame = llclamp(frame, 0.0f, 1.0f);
(*track)[index][LLSettingsDay::SETTING_KEYKFRAME] = frame;
elem[LLSettingsDay::SETTING_KEYKFRAME] = frame;
}
++index;
}
}
framecount -= value[0].size();
int waterTracks = value[0].size();
int skyTracks = framecount - waterTracks;
if (value[0].size() < 1)
if (waterTracks < 1)
{
LL_WARNS("SETTINGS") << "Missing water track" << LL_ENDL;
return false;
}
if (framecount < 1)
if (skyTracks < 1)
{
LL_WARNS("SETTINGS") << "Missing sky tracks" << LL_ENDL;
return false;
......@@ -404,6 +431,7 @@ namespace
}
}
#pragma optimize("", on)
LLSettingsDay::validation_list_t LLSettingsDay::getValidationList() const
{
return LLSettingsDay::validationList();
......
......@@ -54,9 +54,14 @@ const F32 LLSettingsSky::NIGHTTIME_ELEVATION_COS((F32)sin(NIGHTTIME_ELEVATION*DE
//=========================================================================
const std::string LLSettingsSky::SETTING_AMBIENT("ambient");
const std::string LLSettingsSky::SETTING_BLOOM_TEXTUREID("bloom_id");
const std::string LLSettingsSky::SETTING_BLUE_DENSITY("blue_density");
const std::string LLSettingsSky::SETTING_BLUE_HORIZON("blue_horizon");
const std::string LLSettingsSky::SETTING_DENSITY_MULTIPLIER("density_multiplier");
const std::string LLSettingsSky::SETTING_DISTANCE_MULTIPLIER("distance_multiplier");
const std::string LLSettingsSky::SETTING_HAZE_DENSITY("haze_density");
const std::string LLSettingsSky::SETTING_HAZE_HORIZON("haze_horizon");
const std::string LLSettingsSky::SETTING_BLOOM_TEXTUREID("bloom_id");
const std::string LLSettingsSky::SETTING_CLOUD_COLOR("cloud_color");
const std::string LLSettingsSky::SETTING_CLOUD_POS_DENSITY1("cloud_pos_density1");
const std::string LLSettingsSky::SETTING_CLOUD_POS_DENSITY2("cloud_pos_density2");
......@@ -64,14 +69,12 @@ const std::string LLSettingsSky::SETTING_CLOUD_SCALE("cloud_scale");
const std::string LLSettingsSky::SETTING_CLOUD_SCROLL_RATE("cloud_scroll_rate");
const std::string LLSettingsSky::SETTING_CLOUD_SHADOW("cloud_shadow");
const std::string LLSettingsSky::SETTING_CLOUD_TEXTUREID("cloud_id");
const std::string LLSettingsSky::SETTING_DENSITY_MULTIPLIER("density_multiplier");
const std::string LLSettingsSky::SETTING_DISTANCE_MULTIPLIER("distance_multiplier");
const std::string LLSettingsSky::SETTING_DOME_OFFSET("dome_offset");
const std::string LLSettingsSky::SETTING_DOME_RADIUS("dome_radius");
const std::string LLSettingsSky::SETTING_GAMMA("gamma");
const std::string LLSettingsSky::SETTING_GLOW("glow");
const std::string LLSettingsSky::SETTING_HAZE_DENSITY("haze_density");
const std::string LLSettingsSky::SETTING_HAZE_HORIZON("haze_horizon");
const std::string LLSettingsSky::SETTING_LIGHT_NORMAL("lightnorm");
const std::string LLSettingsSky::SETTING_MAX_Y("max_y");
const std::string LLSettingsSky::SETTING_MOON_ROTATION("moon_rotation");
......@@ -246,12 +249,12 @@ LLSettingsSky::validation_list_t LLSettingsSky::validationList()
// copy constructor for LLSDArray. Directly binding the LLSDArray as
// a parameter without first wrapping it in a pure LLSD object will result
// in deeply nested arrays like this [[[[[[[[[[v1,v2,v3]]]]]]]]]]
#if SUPPORT_LEGACY_ATMOSPHERICS
validation.push_back(Validator(SETTING_AMBIENT, true, LLSD::TypeArray,
boost::bind(&Validator::verifyVectorMinMax, _1,
LLSD(LLSDArray(0.0f)(0.0f)(0.0f)("*")),
LLSD(LLSDArray(3.0f)(3.0f)(3.0f)("*")))));
validation.push_back(Validator(SETTING_BLOOM_TEXTUREID, true, LLSD::TypeUUID));
validation.push_back(Validator(SETTING_BLUE_DENSITY, true, LLSD::TypeArray,
boost::bind(&Validator::verifyVectorMinMax, _1,
LLSD(LLSDArray(0.0f)(0.0f)(0.0f)("*")),
......@@ -260,6 +263,18 @@ LLSettingsSky::validation_list_t LLSettingsSky::validationList()
boost::bind(&Validator::verifyVectorMinMax, _1,
LLSD(LLSDArray(0.0f)(0.0f)(0.0f)("*")),
LLSD(LLSDArray(2.0f)(2.0f)(2.0f)("*")))));
validation.push_back(Validator(SETTING_DENSITY_MULTIPLIER, true, LLSD::TypeReal,
boost::bind(&Validator::verifyFloatRange, _1, LLSD(LLSDArray(0.0f)(0.0009f)))));
validation.push_back(Validator(SETTING_DISTANCE_MULTIPLIER, true, LLSD::TypeReal,
boost::bind(&Validator::verifyFloatRange, _1, LLSD(LLSDArray(0.0f)(100.0f)))));
validation.push_back(Validator(SETTING_HAZE_DENSITY, true, LLSD::TypeReal,
boost::bind(&Validator::verifyFloatRange, _1, LLSD(LLSDArray(0.0f)(4.0f)))));
validation.push_back(Validator(SETTING_HAZE_HORIZON, true, LLSD::TypeReal,
boost::bind(&Validator::verifyFloatRange, _1, LLSD(LLSDArray(0.0f)(1.0f)))));
#endif
validation.push_back(Validator(SETTING_BLOOM_TEXTUREID, true, LLSD::TypeUUID));
validation.push_back(Validator(SETTING_CLOUD_COLOR, true, LLSD::TypeArray,
boost::bind(&Validator::verifyVectorMinMax, _1,
LLSD(LLSDArray(0.0f)(0.0f)(0.0f)("*")),
......@@ -281,10 +296,7 @@ LLSettingsSky::validation_list_t LLSettingsSky::validationList()
validation.push_back(Validator(SETTING_CLOUD_SHADOW, true, LLSD::TypeReal,
boost::bind(&Validator::verifyFloatRange, _1, LLSD(LLSDArray(0.0f)(1.0f)))));
validation.push_back(Validator(SETTING_CLOUD_TEXTUREID, false, LLSD::TypeUUID));
validation.push_back(Validator(SETTING_DENSITY_MULTIPLIER, true, LLSD::TypeReal,
boost::bind(&Validator::verifyFloatRange, _1, LLSD(LLSDArray(0.0f)(0.0009f)))));
validation.push_back(Validator(SETTING_DISTANCE_MULTIPLIER, true, LLSD::TypeReal,
boost::bind(&Validator::verifyFloatRange, _1, LLSD(LLSDArray(0.0f)(100.0f)))));
validation.push_back(Validator(SETTING_DOME_OFFSET, false, LLSD::TypeReal,
boost::bind(&Validator::verifyFloatRange, _1, LLSD(LLSDArray(0.0f)(1.0f)))));
validation.push_back(Validator(SETTING_DOME_RADIUS, false, LLSD::TypeReal,
......@@ -295,10 +307,7 @@ LLSettingsSky::validation_list_t LLSettingsSky::validationList()
boost::bind(&Validator::verifyVectorMinMax, _1,
LLSD(LLSDArray(0.2f)("*")(-2.5f)("*")),
LLSD(LLSDArray(20.0f)("*")(0.0f)("*")))));
validation.push_back(Validator(SETTING_HAZE_DENSITY, true, LLSD::TypeReal,
boost::bind(&Validator::verifyFloatRange, _1, LLSD(LLSDArray(0.0f)(4.0f)))));
validation.push_back(Validator(SETTING_HAZE_HORIZON, true, LLSD::TypeReal,
boost::bind(&Validator::verifyFloatRange, _1, LLSD(LLSDArray(0.0f)(1.0f)))));
validation.push_back(Validator(SETTING_LIGHT_NORMAL, false, LLSD::TypeArray,
boost::bind(&Validator::verifyVectorNormalized, _1, 3)));
validation.push_back(Validator(SETTING_MAX_Y, true, LLSD::TypeReal,
......@@ -330,6 +339,51 @@ LLSettingsSky::validation_list_t LLSettingsSky::validationList()
return validation;
}
LLSD LLSettingsSky::rayleighConfigDefault()
{
LLSD dflt_rayleigh;
dflt_rayleigh[SETTING_DENSITY_PROFILE_WIDTH] = 0.0f; // 0 -> the entire atmosphere
dflt_rayleigh[SETTING_DENSITY_PROFILE_EXP_TERM] = 1.0f;
dflt_rayleigh[SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR] = -1.0f / 8000.0f;
dflt_rayleigh[SETTING_DENSITY_PROFILE_LINEAR_TERM] = 0.0f;
dflt_rayleigh[SETTING_DENSITY_PROFILE_CONSTANT_TERM] = 0.0f;
return dflt_rayleigh;
}
LLSD LLSettingsSky::absorptionConfigDefault()
{
// absorption (ozone) has two linear ramping zones
LLSD dflt_absorption_layer_a;
dflt_absorption_layer_a[SETTING_DENSITY_PROFILE_WIDTH] = 25000.0f; // 0 -> the entire atmosphere
dflt_absorption_layer_a[SETTING_DENSITY_PROFILE_EXP_TERM] = 0.0f;
dflt_absorption_layer_a[SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR] = 0.0f;
dflt_absorption_layer_a[SETTING_DENSITY_PROFILE_LINEAR_TERM] = -1.0f / 25000.0f;
dflt_absorption_layer_a[SETTING_DENSITY_PROFILE_CONSTANT_TERM] = -2.0f / 3.0f;
LLSD dflt_absorption_layer_b;
dflt_absorption_layer_b[SETTING_DENSITY_PROFILE_WIDTH] = 0.0f; // 0 -> remainder of the atmosphere
dflt_absorption_layer_b[SETTING_DENSITY_PROFILE_EXP_TERM] = 0.0f;
dflt_absorption_layer_b[SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR] = 0.0f;
dflt_absorption_layer_b[SETTING_DENSITY_PROFILE_LINEAR_TERM] = -1.0f / 15000.0f;
dflt_absorption_layer_b[SETTING_DENSITY_PROFILE_CONSTANT_TERM] = 8.0f / 3.0f;
LLSD dflt_absorption;
dflt_absorption.append(dflt_absorption_layer_a);
dflt_absorption.append(dflt_absorption_layer_b);
return dflt_absorption;
}
LLSD LLSettingsSky::mieConfigDefault()
{
LLSD dflt_mie;
dflt_mie[SETTING_DENSITY_PROFILE_WIDTH] = 0.0f; // 0 -> the entire atmosphere
dflt_mie[SETTING_DENSITY_PROFILE_EXP_TERM] = 1.0f;
dflt_mie[SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR] = -1.0f / 1200.0f;
dflt_mie[SETTING_DENSITY_PROFILE_LINEAR_TERM] = 0.0f;
dflt_mie[SETTING_DENSITY_PROFILE_CONSTANT_TERM] = 0.0f;
dflt_mie[SETTING_MIE_ANISOTROPY_FACTOR] = 0.9f;
return dflt_mie;
}
LLSD LLSettingsSky::defaults()
{
......@@ -341,23 +395,28 @@ LLSD LLSettingsSky::defaults()
LLQuaternion moonquat = ~sunquat;
// Magic constants copied form dfltsetting.xml
#if SUPPORT_LEGACY_ATMOSPHERICS
dfltsetting[SETTING_AMBIENT] = LLColor4::white.getValue();
dfltsetting[SETTING_BLUE_DENSITY] = LLColor4(0.2447, 0.4487, 0.7599, 0.0).getValue();
dfltsetting[SETTING_BLUE_HORIZON] = LLColor4(0.4954, 0.4954, 0.6399, 0.0).getValue();
dfltsetting[SETTING_DENSITY_MULTIPLIER] = LLSD::Real(0.0001);
dfltsetting[SETTING_DISTANCE_MULTIPLIER] = LLSD::Real(0.8000);
dfltsetting[SETTING_HAZE_DENSITY] = LLSD::Real(0.6999);
dfltsetting[SETTING_HAZE_HORIZON] = LLSD::Real(0.1899);
#endif
dfltsetting[SETTING_CLOUD_COLOR] = LLColor4(0.4099, 0.4099, 0.4099, 0.0).getValue();
dfltsetting[SETTING_CLOUD_POS_DENSITY1] = LLColor4(1.0000, 0.5260, 1.0000, 0.0).getValue();
dfltsetting[SETTING_CLOUD_POS_DENSITY2] = LLColor4(1.0000, 0.5260, 1.0000, 0.0).getValue();
dfltsetting[SETTING_CLOUD_SCALE] = LLSD::Real(0.4199);
dfltsetting[SETTING_CLOUD_SCROLL_RATE] = LLSDArray(10.1999)(10.0109);
dfltsetting[SETTING_CLOUD_SHADOW] = LLSD::Real(0.2699);
dfltsetting[SETTING_DENSITY_MULTIPLIER] = LLSD::Real(0.0001);
dfltsetting[SETTING_DISTANCE_MULTIPLIER] = LLSD::Real(0.8000);
dfltsetting[SETTING_DOME_OFFSET] = LLSD::Real(0.96f);
dfltsetting[SETTING_DOME_RADIUS] = LLSD::Real(15000.f);
dfltsetting[SETTING_GAMMA] = LLSD::Real(1.0);
dfltsetting[SETTING_GLOW] = LLColor4(5.000, 0.0010, -0.4799, 1.0).getValue();
dfltsetting[SETTING_HAZE_DENSITY] = LLSD::Real(0.6999);
dfltsetting[SETTING_HAZE_HORIZON] = LLSD::Real(0.1899);
dfltsetting[SETTING_LIGHT_NORMAL] = LLVector3(0.0000, 0.9126, -0.4086).getValue();
dfltsetting[SETTING_MAX_Y] = LLSD::Real(1605);
dfltsetting[SETTING_MOON_ROTATION] = moonquat.getValue();
......@@ -377,46 +436,9 @@ LLSD LLSettingsSky::defaults()
dfltsetting[SETTING_SKY_BOTTOM_RADIUS] = 6360.0f;
dfltsetting[SETTING_SKY_TOP_RADIUS] = 6420.0f;
dfltsetting[SETTING_SUN_ARC_RADIANS] = 0.00935f / 2.0f;
LLSD dflt_rayleigh;
dflt_rayleigh[SETTING_DENSITY_PROFILE_WIDTH] = 0.0f; // 0 -> the entire atmosphere
dflt_rayleigh[SETTING_DENSITY_PROFILE_EXP_TERM] = 1.0f;
dflt_rayleigh[SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR] = -1.0f / 8000.0f;
dflt_rayleigh[SETTING_DENSITY_PROFILE_LINEAR_TERM] = 0.0f;
dflt_rayleigh[SETTING_DENSITY_PROFILE_CONSTANT_TERM] = 0.0f;
dfltsetting[SETTING_RAYLEIGH_CONFIG] = dflt_rayleigh;
LLSD dflt_mie;
dflt_mie[SETTING_DENSITY_PROFILE_WIDTH] = 0.0f; // 0 -> the entire atmosphere
dflt_mie[SETTING_DENSITY_PROFILE_EXP_TERM] = 1.0f;
dflt_mie[SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR] = -1.0f / 1200.0f;
dflt_mie[SETTING_DENSITY_PROFILE_LINEAR_TERM] = 0.0f;
dflt_mie[SETTING_DENSITY_PROFILE_CONSTANT_TERM] = 0.0f;
dflt_mie[SETTING_MIE_ANISOTROPY_FACTOR] = 0.9f;
dfltsetting[SETTING_MIE_CONFIG] = dflt_mie;
// absorption (ozone) has two linear ramping zones
LLSD dflt_absorption_a;
dflt_absorption_a[SETTING_DENSITY_PROFILE_WIDTH] = 25000.0f; // 0 -> the entire atmosphere
dflt_absorption_a[SETTING_DENSITY_PROFILE_EXP_TERM] = 0.0f;
dflt_absorption_a[SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR] = 0.0f;
dflt_absorption_a[SETTING_DENSITY_PROFILE_LINEAR_TERM] = -1.0f / 25000.0f;
dflt_absorption_a[SETTING_DENSITY_PROFILE_CONSTANT_TERM] = -2.0f / 3.0f;
LLSD dflt_absorption_b;
dflt_absorption_b[SETTING_DENSITY_PROFILE_WIDTH] = 0.0f; // 0 -> remainder of the atmosphere
dflt_absorption_b[SETTING_DENSITY_PROFILE_EXP_TERM] = 0.0f;
dflt_absorption_b[SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR] = 0.0f;
dflt_absorption_b[SETTING_DENSITY_PROFILE_LINEAR_TERM] = -1.0f / 15000.0f;
dflt_absorption_b[SETTING_DENSITY_PROFILE_CONSTANT_TERM] = 8.0f / 3.0f;
LLSD wtf;
wtf.append(dflt_absorption_a);
wtf.append(dflt_absorption_b);
dfltsetting[SETTING_ABSORPTION_CONFIG] = wtf;
dfltsetting[SETTING_RAYLEIGH_CONFIG] = rayleighConfigDefault();
dfltsetting[SETTING_MIE_CONFIG] = mieConfigDefault();
dfltsetting[SETTING_ABSORPTION_CONFIG] = absorptionConfigDefault();
return dfltsetting;
}
......@@ -560,6 +582,9 @@ LLSD LLSettingsSky::translateLegacySettings(LLSD legacy)
{
LLSD newsettings(defaults());
// AdvancedAtmospherics TODO
// These need to be translated into density profile info in the new settings format...
#if SUPPORT_LEGACY_ATMOSPHERICS
if (legacy.has(SETTING_AMBIENT))
{
newsettings[SETTING_AMBIENT] = LLColor3(legacy[SETTING_AMBIENT]).getValue();
......@@ -572,6 +597,39 @@ LLSD LLSettingsSky::translateLegacySettings(LLSD legacy)
{
newsettings[SETTING_BLUE_HORIZON] = LLColor3(legacy[SETTING_BLUE_HORIZON]).getValue();
}
if (legacy.has(SETTING_DENSITY_MULTIPLIER))
{
newsettings[SETTING_DENSITY_MULTIPLIER] = LLSD::Real(legacy[SETTING_DENSITY_MULTIPLIER][0].asReal());
}
if (legacy.has(SETTING_DISTANCE_MULTIPLIER))
{
newsettings[SETTING_DISTANCE_MULTIPLIER] = LLSD::Real(legacy[SETTING_DISTANCE_MULTIPLIER][0].asReal());
}
if (legacy.has(SETTING_HAZE_DENSITY))
{
newsettings[SETTING_HAZE_DENSITY] = LLSD::Real(legacy[SETTING_HAZE_DENSITY][0].asReal());
}
if (legacy.has(SETTING_HAZE_HORIZON))
{
newsettings[SETTING_HAZE_HORIZON] = LLSD::Real(legacy[SETTING_HAZE_HORIZON][0].asReal());
}
#endif
if (!legacy.has(SETTING_RAYLEIGH_CONFIG))
{
newsettings[SETTING_RAYLEIGH_CONFIG] = rayleighConfigDefault();
}
if (!legacy.has(SETTING_ABSORPTION_CONFIG))
{
newsettings[SETTING_ABSORPTION_CONFIG] = absorptionConfigDefault();
}
if (!legacy.has(SETTING_MIE_CONFIG))
{
newsettings[SETTING_MIE_CONFIG] = mieConfigDefault();
}
if (legacy.has(SETTING_CLOUD_COLOR))
{
newsettings[SETTING_CLOUD_COLOR] = LLColor3(legacy[SETTING_CLOUD_COLOR]).getValue();
......@@ -607,14 +665,8 @@ LLSD LLSettingsSky::translateLegacySettings(LLSD legacy)
{
newsettings[SETTING_CLOUD_SHADOW] = LLSD::Real(legacy[SETTING_CLOUD_SHADOW][0].asReal());
}
if (legacy.has(SETTING_DENSITY_MULTIPLIER))
{
newsettings[SETTING_DENSITY_MULTIPLIER] = LLSD::Real(legacy[SETTING_DENSITY_MULTIPLIER][0].asReal());
}
if (legacy.has(SETTING_DISTANCE_MULTIPLIER))
{
newsettings[SETTING_DISTANCE_MULTIPLIER] = LLSD::Real(legacy[SETTING_DISTANCE_MULTIPLIER][0].asReal());
}
if (legacy.has(SETTING_GAMMA))
{
newsettings[SETTING_GAMMA] = legacy[SETTING_GAMMA][0].asReal();
......@@ -623,14 +675,7 @@ LLSD LLSettingsSky::translateLegacySettings(LLSD legacy)
{
newsettings[SETTING_GLOW] = LLColor3(legacy[SETTING_GLOW]).getValue();
}
if (legacy.has(SETTING_HAZE_DENSITY))
{
newsettings[SETTING_HAZE_DENSITY] = LLSD::Real(legacy[SETTING_HAZE_DENSITY][0].asReal());
}
if (legacy.has(SETTING_HAZE_HORIZON))
{
newsettings[SETTING_HAZE_HORIZON] = LLSD::Real(legacy[SETTING_HAZE_HORIZON][0].asReal());
}
if (legacy.has(SETTING_LIGHT_NORMAL))
{
newsettings[SETTING_LIGHT_NORMAL] = LLVector3(legacy[SETTING_LIGHT_NORMAL]).getValue();
......@@ -648,6 +693,44 @@ LLSD LLSettingsSky::translateLegacySettings(LLSD legacy)
newsettings[SETTING_SUNLIGHT_COLOR] = LLColor4(legacy[SETTING_SUNLIGHT_COLOR]).getValue();
}
if (legacy.has(SETTING_PLANET_RADIUS))
{
newsettings[SETTING_PLANET_RADIUS] = LLSD::Real(legacy[SETTING_PLANET_RADIUS].asReal());
}
else
{
newsettings[SETTING_PLANET_RADIUS] = 6360.0f;
}
if (legacy.has(SETTING_SKY_BOTTOM_RADIUS))
{
newsettings[SETTING_SKY_BOTTOM_RADIUS] = LLSD::Real(legacy[SETTING_SKY_BOTTOM_RADIUS].asReal());
}
else
{
newsettings[SETTING_SKY_BOTTOM_RADIUS] = 6360.0f;
}
if (legacy.has(SETTING_SKY_TOP_RADIUS))
{
newsettings[SETTING_SKY_TOP_RADIUS] = LLSD::Real(legacy[SETTING_SKY_TOP_RADIUS].asReal());
}
else
{
newsettings[SETTING_SKY_TOP_RADIUS] = 6420.0f;
}
if (legacy.has(SETTING_SUN_ARC_RADIANS))
{
newsettings[SETTING_SUN_ARC_RADIANS] = LLSD::Real(legacy[SETTING_SUN_ARC_RADIANS].asReal());
}
else
{
newsettings[SETTING_SUN_ARC_RADIANS] = 0.00935f / 2.0f;
}
if (legacy.has(SETTING_LEGACY_EAST_ANGLE) && legacy.has(SETTING_LEGACY_SUN_ANGLE))
{ // convert the east and sun angles into a quaternion.
F32 azimuth = legacy[SETTING_LEGACY_EAST_ANGLE].asReal();
......@@ -716,6 +799,8 @@ void LLSettingsSky::calculateHeavnlyBodyPositions()
void LLSettingsSky::calculateLightSettings()
{
#if SUPPORT_LEGACY_ATMOSPHERICS
LLColor3 vary_HazeColor;
LLColor3 vary_SunlightColor;
LLColor3 vary_AmbientColor;
......@@ -804,6 +889,8 @@ void LLSettingsSky::calculateLightSettings()
mFadeColor = mTotalAmbient + (mSunDiffuse + mMoonDiffuse) * 0.5f;
mFadeColor.setAlpha(0);
#endif
}
......
......@@ -31,13 +31,20 @@
#include "llsettingsbase.h"
#include "v4coloru.h"
#define SUPPORT_LEGACY_ATMOSPHERICS 1
class LLSettingsSky: public LLSettingsBase
{
public:
static const std::string SETTING_AMBIENT;
static const std::string SETTING_BLOOM_TEXTUREID;
static const std::string SETTING_BLUE_DENSITY;
static const std::string SETTING_BLUE_HORIZON;
static const std::string SETTING_DENSITY_MULTIPLIER;
static const std::string SETTING_DISTANCE_MULTIPLIER;
static const std::string SETTING_HAZE_DENSITY;
static const std::string SETTING_HAZE_HORIZON;
static const std::string SETTING_BLOOM_TEXTUREID;
static const std::string SETTING_CLOUD_COLOR;
static const std::string SETTING_CLOUD_POS_DENSITY1;
static const std::string SETTING_CLOUD_POS_DENSITY2;
......@@ -45,14 +52,10 @@ class LLSettingsSky: public LLSettingsBase
static const std::string SETTING_CLOUD_SCROLL_RATE;
static const std::string SETTING_CLOUD_SHADOW;
static const std::string SETTING_CLOUD_TEXTUREID;
static const std::string SETTING_DENSITY_MULTIPLIER;
static const std::string SETTING_DISTANCE_MULTIPLIER;
static const std::string SETTING_DOME_OFFSET;
static const std::string SETTING_DOME_RADIUS;
static const std::string SETTING_GAMMA;
static const std::string SETTING_GLOW;
static const std::string SETTING_HAZE_DENSITY;
static const std::string SETTING_HAZE_HORIZON;
static const std::string SETTING_GLOW;
static const std::string SETTING_LIGHT_NORMAL;
static const std::string SETTING_MAX_Y;
static const std::string SETTING_MOON_ROTATION;
......@@ -96,7 +99,13 @@ class LLSettingsSky: public LLSettingsBase
static LLSD defaults();
LLUUID getBloomTextureId() const
{
return mSettings[SETTING_BLOOM_TEXTUREID].asUUID();
}
//---------------------------------------------------------------------
#if SUPPORT_LEGACY_ATMOSPHERICS
LLColor3 getAmbientColor() const
{
return LLColor3(mSettings[SETTING_AMBIENT]);
......@@ -107,11 +116,6 @@ class LLSettingsSky: public LLSettingsBase
setValue(SETTING_AMBIENT, val);
}
LLUUID getBloomTextureId() const
{
return mSettings[SETTING_BLOOM_TEXTUREID].asUUID();
}
LLColor3 getBlueDensity() const
{
return LLColor3(mSettings[SETTING_BLUE_DENSITY]);
......@@ -132,6 +136,47 @@ class LLSettingsSky: public LLSettingsBase
setValue(SETTING_BLUE_HORIZON, val);
}
F32 getDensityMultiplier() const
{
return mSettings[SETTING_DENSITY_MULTIPLIER].asReal();
}
void setDensityMultiplier(F32 val)
{
setValue(SETTING_DENSITY_MULTIPLIER, val);
}
F32 getDistanceMultiplier() const
{
return mSettings[SETTING_DISTANCE_MULTIPLIER].asReal();
}
void setDistanceMultiplier(F32 val)
{
setValue(SETTING_DISTANCE_MULTIPLIER, val);
}
F32 getHazeDensity() const
{
return mSettings[SETTING_HAZE_DENSITY].asReal();
}
void setHazeDensity(F32 val)
{
setValue(SETTING_HAZE_DENSITY, val);
}
F32 getHazeHorizon() const
{
return mSettings[SETTING_HAZE_HORIZON].asReal();
}
void setHazeHorizon(F32 val)
{
setValue(SETTING_HAZE_HORIZON, val);
}
#endif
LLColor3 getCloudColor() const
{
return LLColor3(mSettings[SETTING_CLOUD_COLOR]);
......@@ -209,26 +254,7 @@ class LLSettingsSky: public LLSettingsBase
setValue(SETTING_CLOUD_SHADOW, val);
}
F32 getDensityMultiplier() const
{
return mSettings[SETTING_DENSITY_MULTIPLIER].asReal();
}
void setDensityMultiplier(F32 val)
{
setValue(SETTING_DENSITY_MULTIPLIER, val);
}
F32 getDistanceMultiplier() const
{
return mSettings[SETTING_DISTANCE_MULTIPLIER].asReal();
}
void setDistanceMultiplier(F32 val)
{
setValue(SETTING_DISTANCE_MULTIPLIER, val);
}
F32 getDomeOffset() const
{
return DOME_OFFSET;
......@@ -262,26 +288,6 @@ class LLSettingsSky: public LLSettingsBase
setValue(SETTING_GLOW, val);
}
F32 getHazeDensity() const
{
return mSettings[SETTING_HAZE_DENSITY].asReal();
}
void setHazeDensity(F32 val)
{
setValue(SETTING_HAZE_DENSITY, val);
}
F32 getHazeHorizon() const
{
return mSettings[SETTING_HAZE_HORIZON].asReal();
}
void setHazeHorizon(F32 val)
{
setValue(SETTING_HAZE_HORIZON, val);
}
LLVector3 getLightNormal() const
{
return LLVector3(mSettings[SETTING_LIGHT_NORMAL]);
......@@ -450,6 +456,10 @@ class LLSettingsSky: public LLSettingsBase
static validation_list_t absorptionValidationList();
static validation_list_t mieValidationList();
static LLSD rayleighConfigDefault();
static LLSD absorptionConfigDefault();
static LLSD mieConfigDefault();
static const F32 NIGHTTIME_ELEVATION;
static const F32 NIGHTTIME_ELEVATION_COS;
......
......@@ -33,9 +33,7 @@ in vec3 view_dir;
uniform vec3 cameraPosLocal;
uniform vec3 sun_direction;
uniform vec2 sun_size;
uniform sampler2D cloud_noise_texture;
uniform sampler2D transmittance_texture;
uniform sampler3D scattering_texture;
uniform sampler3D mie_scattering_texture;
......
/**
* @file WLSkyF.glsl
* @file advancedAtmoF.glsl
*
* $LicenseInfo:firstyear=2005&license=viewerlgpl$
* Second Life Viewer Source Code
......@@ -29,37 +29,43 @@ out vec4 frag_color;
#define frag_color gl_FragColor
#endif
/////////////////////////////////////////////////////////////////////////
// The fragment shader for the sky
/////////////////////////////////////////////////////////////////////////
in vec3 view_dir;
VARYING vec4 vary_HazeColor;
uniform vec3 cameraPosLocal;
uniform vec3 sun_direction;
uniform vec2 sun_size;
uniform sampler2D cloud_noise_texture;
uniform vec4 gamma;
uniform sampler2D transmittance_texture;
uniform sampler3D scattering_texture;
uniform sampler3D mie_scattering_texture;
/// Soft clips the light with a gamma correction
vec3 scaleSoftClip(vec3 light) {
//soft clip effect:
light = 1. - clamp(light, vec3(0.), vec3(1.));
light = 1. - pow(light, gamma.xxx);
return light;
}
vec3 GetSolarLuminance();
vec3 GetSkyLuminance(vec3 camPos, vec3 view_dir, float shadow_length, vec3 sun_dir, out vec3 transmittance);
vec3 GetSkyLuminanceToPoint(vec3 camPos, vec3 pos, float shadow_length, vec3 sun_dir, out vec3 transmittance);
vec3 GetSunAndSkyIlluminance(vec3 pos, vec3 norm, vec3 sun_dir, out vec3 sky_irradiance);
void main()
{
// Potential Fill-rate optimization. Add cloud calculation
// back in and output alpha of 0 (so that alpha culling kills
// the fragment) if the sky wouldn't show up because the clouds
// are fully opaque.
vec3 view_direction = normalize(view_dir);
vec3 camPos = cameraPosLocal;
vec3 transmittance;
vec3 radiance = GetSkyLuminance(camPos, view_direction, 0.0f, sun_direction, transmittance);
vec4 color;
color = vary_HazeColor;
color *= 2.;
radiance *= transmittance;
/// Gamma correct for WL (soft clip effect).
frag_color.rgb = scaleSoftClip(color.rgb);
frag_color.a = 1.0;
// If the view ray intersects the Sun, add the Sun radiance.
if (dot(view_direction, sun_direction) >= sun_size.y)
{
radiance = radiance + transmittance * GetSolarLuminance();
}
vec3 color = vec3(1.0) - exp(-radiance);
color = pow(color, vec3(1.0 / 2.2));
frag_color.rgb = color;
frag_color.a = 1.0;
}
/**
* @file WLSkyV.glsl
* @file advancedAtmoV.glsl
*
* $LicenseInfo:firstyear=2005&license=viewerlgpl$
* Second Life Viewer Source Code
......@@ -27,130 +27,17 @@ uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
// SKY ////////////////////////////////////////////////////////////////////////
// The vertex shader for creating the atmospheric sky
///////////////////////////////////////////////////////////////////////////////
// Output parameters
VARYING vec4 vary_HazeColor;
// Inputs
uniform vec3 camPosLocal;
uniform vec4 lightnorm;
uniform vec4 sunlight_color;
uniform vec4 ambient;
uniform vec4 blue_horizon;
uniform vec4 blue_density;
uniform float haze_horizon;
uniform float haze_density;
uniform float cloud_shadow;
uniform float density_multiplier;
uniform float max_y;
uniform vec4 glow;
uniform vec4 cloud_color;
out vec3 view_dir;
void main()
{
// World / view / projection
gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
// Get relative position
vec3 P = position.xyz - camPosLocal.xyz + vec3(0,50,0);
//vec3 P = position.xyz + vec3(0,50,0);
// Set altitude
if (P.y > 0.)
{
P *= (max_y / P.y);
}
else
{
P *= (-32000. / P.y);
}
// Can normalize then
vec3 Pn = normalize(P);
float Plen = length(P);
// Initialize temp variables
vec4 temp1 = vec4(0.);
vec4 temp2 = vec4(0.);
vec4 blue_weight;
vec4 haze_weight;
vec4 sunlight = sunlight_color;
vec4 light_atten;
// Sunlight attenuation effect (hue and brightness) due to atmosphere
// this is used later for sunlight modulation at various altitudes
light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y);
// Calculate relative weights
temp1 = blue_density + haze_density;
blue_weight = blue_density / temp1;
haze_weight = haze_density / temp1;
// Compute sunlight from P & lightnorm (for long rays like sky)
temp2.y = max(0., max(0., Pn.y) * 1.0 + lightnorm.y );
temp2.y = 1. / temp2.y;
sunlight *= exp( - light_atten * temp2.y);
// Distance
temp2.z = Plen * density_multiplier;
// Transparency (-> temp1)
// ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati
// compiler gets confused.
temp1 = exp(-temp1 * temp2.z);
// Compute haze glow
temp2.x = dot(Pn, lightnorm.xyz);
temp2.x = 1. - temp2.x;
// temp2.x is 0 at the sun and increases away from sun
temp2.x = max(temp2.x, .001);
// Set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
temp2.x *= glow.x;
// Higher glow.x gives dimmer glow (because next step is 1 / "angle")
temp2.x = pow(temp2.x, glow.z);
// glow.z should be negative, so we're doing a sort of (1 / "angle") function
// Add "minimum anti-solar illumination"
temp2.x += .25;
// Haze color above cloud
vary_HazeColor = ( blue_horizon * blue_weight * (sunlight + ambient)
+ (haze_horizon * haze_weight) * (sunlight * temp2.x + ambient)
);
// Increase ambient when there are more clouds
vec4 tmpAmbient = ambient;
tmpAmbient += (1. - tmpAmbient) * cloud_shadow * 0.5;
// Dim sunlight by cloud shadow percentage
sunlight *= (1. - cloud_shadow);
// Haze color below cloud
vec4 additiveColorBelowCloud = ( blue_horizon * blue_weight * (sunlight + tmpAmbient)
+ (haze_horizon * haze_weight) * (sunlight * temp2.x + tmpAmbient)
);
// Final atmosphere additive
vary_HazeColor *= (1. - temp1);
// Attenuate cloud color by atmosphere
temp1 = sqrt(temp1); //less atmos opacity (more transparency) below clouds
// At horizon, blend high altitude sky color towards the darker color below the clouds
vary_HazeColor += (additiveColorBelowCloud - vary_HazeColor) * (1. - sqrt(temp1));
// won't compile on mac without this being set
//vary_AtmosAttenuation = vec3(0.0,0.0,0.0);
// this will be normalized in the frag shader...
view_dir = position.xyz - camPosLocal.xyz;
}
......@@ -137,5 +137,61 @@
<real>0.65999996662139893</real>
<real>0.2199999988079071</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,5 +137,61 @@
<real>0.89999997615814209</real>
<real>0.29999998211860657</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,5 +137,61 @@
<real>1.1399999856948853</real>
<real>0.37999999523162842</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,5 +137,61 @@
<real>0.89999997615813498</real>
<real>0.29999998211860301</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,5 +137,61 @@
<real>2.369999885559082</real>
<real>0.78999996185302734</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,6 +137,62 @@
<real>2.8385701179504395</real>
<real>1</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,5 +137,61 @@
<real>0.89999995470046912</real>
<real>0.29999997496605069</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,5 +137,61 @@
<real>0.66003586768772493</real>
<real>0.22001197576412324</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,5 +137,61 @@
<real>1.1699999570846558</real>
<real>0.38999998569488525</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,5 +137,61 @@
<real>3</real>
<real>1</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,5 +137,61 @@
<real>1.2300000190734863</real>
<real>0.40999999642372131</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,5 +137,61 @@
<real>3</real>
<real>1</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
......@@ -137,5 +137,61 @@
<real>3</real>
<real>1</real>
</array>
<key>planet_radius</key>
<real>6360.0</real>
<key>sky_min_radius</key>
<real>6360.0</real>
<key>sky_max_radius</key>
<real>6420.0</real>
<key>rayleigh_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>absorption_config</key>
<map>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
<key>mie_config</key>
<map>
<key>anisotropy</key>
<real>0.5f</real>
<key>density</key>
<map>
<key>width</key>
<real>0.0</real>
<key>exp_term</key>
<real>1.0</real>
<key>exp_scale</key>
<real>-0.00001</real>
<key>linear_term</key>
<real>0.0</real>
<key>constant_term</key>
<real>1.0</real>
</map>
</map>
</map>
</llsd>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment