diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index c131cb886f4b2f1d202e9289ff6635890f8694cd..1e631a2272db3f671b4a6d0951498b23c52f01a3 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -630,7 +630,7 @@ void LLVOSky::initAtmospherics(void) dome_radius = LLWLParamManager::getInstance()->getDomeRadius(); dome_offset_ratio = LLWLParamManager::getInstance()->getDomeOffset(); sunlight_color = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("sunlight_color", error)); - ambient = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("ambient", error)); + ambient = LLColor3(LLWLParamManager::getInstance()->mCurParams.getAmbient()); //lightnorm = LLWLParamManager::getInstance()->mCurParams.getVector("lightnorm", error); gamma = LLWLParamManager::getInstance()->mCurParams.getFloat("gamma", error); blue_density = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("blue_density", error)); diff --git a/indra/newview/llwlparamset.cpp b/indra/newview/llwlparamset.cpp index 066cb9a0ace352fa61aca7f4204323633b77d652..cd7a32abdd44729a2654fb7a823d02f7f960d4eb 100644 --- a/indra/newview/llwlparamset.cpp +++ b/indra/newview/llwlparamset.cpp @@ -284,6 +284,11 @@ void LLWLParamSet::setEastAngle(float val) mParamValues["east_angle"] = val; } +void LLWLParamSet::setAmbient(const LLVector4& val) +{ + set("ambient", val); +} + void LLWLParamSet::mix(LLWLParamSet& src, LLWLParamSet& dest, F32 weight) { // set up the iterators @@ -379,6 +384,19 @@ void LLWLParamSet::mix(LLWLParamSet& src, LLWLParamSet& dest, F32 weight) setSunAngle((1 - weight) * srcSunAngle + weight * destSunAngle); setEastAngle((1 - weight) * srcEastAngle + weight * destEastAngle); + + // ambient + + LLVector4 srcAmbient = src.getAmbient(); + LLVector4 destAmbient = dest.getAmbient(); + LLVector4 rsltAmbient; + + for (int i = 0; i < LENGTHOFVECTOR4; ++i) + { + rsltAmbient.mV[i] = srcAmbient.mV[i] + ((destAmbient.mV[i] - srcAmbient.mV[i]) * weight); + } + + setAmbient(rsltAmbient); // now setup the sun properly diff --git a/indra/newview/llwlparamset.h b/indra/newview/llwlparamset.h index 6e5f1d3a4bc22daf5396a665d52803a77a7f1b59..9874f0f2e05f36ae647e2bf38b5f2e4f4f0c5439 100644 --- a/indra/newview/llwlparamset.h +++ b/indra/newview/llwlparamset.h @@ -136,6 +136,9 @@ public: void setEastAngle(F32 val); F32 getEastAngle(); + + void setAmbient(const LLVector4& val); + LLVector4 getAmbient(); @@ -207,6 +210,11 @@ inline F32 LLWLParamSet::getEastAngle() { return (F32) mParamValues["east_angle"].asReal(); } +inline LLVector4 LLWLParamSet::getAmbient() { + bool error; + return mParamValues.has("ambient") ? getVector("ambient", error) : LLVector4(0.5f, 0.75f, 1.0f, 1.19f); +} + inline void LLWLParamSet::setEnableCloudScrollX(bool val) { mParamValues["enable_cloud_scroll"][0] = val;