Don't recalculate lighting every frame. Fix altitude transitions. On track switch ignore time threshold on blender.
parent
8b9ff4487b
commit
1f9b8f59af
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue