summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRider Linden <rider@lindenlab.com>2018-06-19 16:46:12 -0700
committerRider Linden <rider@lindenlab.com>2018-06-19 16:46:12 -0700
commit1f9b8f59afceeb8201780b679659f64845dcd7c1 (patch)
treee2cb6d3d913c4de00c201c501ed22516d3205ebb
parent8b9ff4487bdc4becef270197f86c6f0bbfd324d1 (diff)
Don't recalculate lighting every frame. Fix altitude transitions. On track switch ignore time threshold on blender.
-rw-r--r--indra/llinventory/llsettingsbase.cpp4
-rw-r--r--indra/llinventory/llsettingsbase.h7
-rw-r--r--indra/newview/llenvironment.cpp15
-rw-r--r--indra/newview/llvosky.cpp4
4 files changed, 21 insertions, 9 deletions
diff --git a/indra/llinventory/llsettingsbase.cpp b/indra/llinventory/llsettingsbase.cpp
index 24e808c92a..db30a25a4c 100644
--- a/indra/llinventory/llsettingsbase.cpp
+++ b/indra/llinventory/llsettingsbase.cpp
@@ -610,10 +610,12 @@ void LLSettingsBlenderTimeDelta::applyTimeDelta(const LLSettingsBase::Seconds& t
if (mTimeSpent > mBlendSpan)
{
+ mIgnoreTimeDelta = false;
triggerComplete();
return;
}
- if (mTimeDeltaPassed < mTimeDeltaThreshold)
+
+ if ((mTimeDeltaPassed < mTimeDeltaThreshold) && (!mIgnoreTimeDelta))
{
return;
}
diff --git a/indra/llinventory/llsettingsbase.h b/indra/llinventory/llsettingsbase.h
index f2fa78e41f..81158d64a7 100644
--- a/indra/llinventory/llsettingsbase.h
+++ b/indra/llinventory/llsettingsbase.h
@@ -387,7 +387,8 @@ public:
mLastUpdate(0.0f),
mTimeSpent(0.0f),
mTimeDeltaThreshold(0.0f),
- mTimeDeltaPassed(0.0f)
+ mTimeDeltaPassed(0.0f),
+ mIgnoreTimeDelta(false)
{
mTimeStart = LLSettingsBase::Seconds(LLDate::now().secondsSinceEpoch());
mLastUpdate = mTimeStart;
@@ -421,6 +422,9 @@ public:
return mTimeDeltaThreshold;
}
+ inline void setIgnoreTimeDeltaThreshold(bool val) { mIgnoreTimeDelta = val; }
+ inline bool getIgnoreTimeDeltaThreshold() const { return mIgnoreTimeDelta; }
+
protected:
LLSettingsBase::BlendFactor calculateBlend(const LLSettingsBase::TrackPosition& spanpos, const LLSettingsBase::TrackPosition& spanlen) const;
@@ -430,6 +434,7 @@ protected:
LLSettingsBase::Seconds mTimeStart;
LLSettingsBase::Seconds mTimeDeltaThreshold;
LLSettingsBase::Seconds mTimeDeltaPassed;
+ bool mIgnoreTimeDelta;
};
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp
index 938cf857ee..e3a030225d 100644
--- a/indra/newview/llenvironment.cpp
+++ b/indra/newview/llenvironment.cpp
@@ -164,7 +164,7 @@ namespace
return;
}
- mTrackTransitionStart = mTarget->buildDerivedClone();
+ LLSettingsBase::ptr_t pstartsetting = mTarget->buildDerivedClone();
mTrackNo = use_trackno;
LLSettingsBase::Seconds now = getAdjustedNow() + LLEnvironment::TRANSITION_ALTITUDE;
@@ -177,7 +177,11 @@ namespace
LLSettingsBase::BlendFactor blendf = calculateBlend(targetpos, targetspan);
pendsetting->blend((*bounds.second).second, blendf);
- reset(mTrackTransitionStart, pendsetting, LLEnvironment::TRANSITION_ALTITUDE);
+// pstartsetting->setValue(LLSettingsSky::SETTING_AMBIENT, LLColor3(0.0, 1.0, 0.0));
+// pendsetting->setValue(LLSettingsSky::SETTING_AMBIENT, LLColor3(1.0, 0.0, 0.0));
+
+ setIgnoreTimeDeltaThreshold(true); // for the next span ignore the time delta threshold.
+ reset(pstartsetting, pendsetting, LLEnvironment::TRANSITION_ALTITUDE);
}
protected:
@@ -185,12 +189,12 @@ namespace
{
if (trackno == 0)
{ // We are dealing with the water track. There is only ever one.
- return 0;
+ return trackno;
}
- for (S32 test = trackno; test == 0; --test)
+ for (S32 test = trackno; test != 0; --test)
{ // Find the track below the requested one with data.
- LLSettingsDay::CycleTrack_t &track = mDay->getCycleTrack(mTrackNo);
+ LLSettingsDay::CycleTrack_t &track = mDay->getCycleTrack(test);
if (!track.empty())
return test;
@@ -226,7 +230,6 @@ namespace
S32 mTrackNo;
LLSettingsBase::Seconds mCycleLength;
LLSettingsBase::Seconds mCycleOffset;
- LLSettingsBase::ptr_t mTrackTransitionStart;
void onFinishedSpan()
{
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 52b5b1a3a2..7c1fda46ff 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -633,12 +633,14 @@ bool LLVOSky::updateSky()
direction.normalize();
const F32 dot_lighting = direction * mLastLightingDirection;
+ //_WARNS("LAPRAS") << " <" << direction.getValue() << "> dot <" << mLastLightingDirection << "> = " << dot_lighting << " (threshold is " << LIGHT_DIRECTION_THRESHOLD << ")" << LL_ENDL;
+
LLColor3 delta_color;
delta_color.setVec(mLastTotalAmbient.mV[0] - total_ambient.mV[0],
mLastTotalAmbient.mV[1] - total_ambient.mV[1],
mLastTotalAmbient.mV[2] - total_ambient.mV[2]);
- bool light_direction_changed = (dot_lighting >= LIGHT_DIRECTION_THRESHOLD);
+ bool light_direction_changed = (dot_lighting < LIGHT_DIRECTION_THRESHOLD);
bool color_changed = (delta_color.length() >= COLOR_CHANGE_THRESHOLD);
mForceUpdate = mForceUpdate || light_direction_changed;