diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llenvironment.cpp | 48 |
1 files changed, 45 insertions, 3 deletions
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index 1bc35b44bb..5e7e9937cd 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -888,9 +888,6 @@ void LLEnvironment::updateGLVariablesForSettings(LLGLSLShader *shader, const LLS bool found_in_settings = psetting->mSettings.has(it.first); bool found_in_legacy_settings = !found_in_settings && psetting->mSettings.has(LLSettingsSky::SETTING_LEGACY_HAZE) && psetting->mSettings[LLSettingsSky::SETTING_LEGACY_HAZE].has(it.first); - if (!found_in_settings && !found_in_legacy_settings) - continue; - if (found_in_settings) { value = psetting->mSettings[it.first]; @@ -899,6 +896,51 @@ void LLEnvironment::updateGLVariablesForSettings(LLGLSLShader *shader, const LLS { value = psetting->mSettings[LLSettingsSky::SETTING_LEGACY_HAZE][it.first]; } + else if (psetting->getSettingsType() == "sky") + { + // Legacy atmospherics is a special case, + // these values either have non zero defaults when they are not present + // in LLSD or need to be acounted for (reset) even if they are not present + // Todo: consider better options, for example make LLSettingsSky init these options + // Todo: we should reset shaders for all missing fields, not just these ones + LLSettingsSky::ptr_t skyp = std::static_pointer_cast<LLSettingsSky>(psetting); + if (it.first == LLSettingsSky::SETTING_BLUE_DENSITY) + { + value = skyp->getBlueDensity().getValue(); + } + else if (it.first == LLSettingsSky::SETTING_BLUE_HORIZON) + { + value = skyp->getBlueHorizon().getValue(); + } + else if (it.first == LLSettingsSky::SETTING_DENSITY_MULTIPLIER) + { + value = skyp->getDensityMultiplier(); + } + else if (it.first == LLSettingsSky::SETTING_DISTANCE_MULTIPLIER) + { + value = skyp->getDistanceMultiplier(); + } + else if (it.first == LLSettingsSky::SETTING_HAZE_DENSITY) + { + value = skyp->getHazeDensity(); + } + else if (it.first == LLSettingsSky::SETTING_HAZE_HORIZON) + { + value = skyp->getHazeHorizon(); + } + else if (it.first == LLSettingsSky::SETTING_AMBIENT) + { + value = skyp->getAmbientColor().getValue(); + } + else + { + continue; + } + } + else + { + continue; + } LLSD::Type setting_type = value.type(); stop_glerror(); |