summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorXiaohong Bao <bao@lindenlab.com>2013-10-30 11:37:53 -0600
committerXiaohong Bao <bao@lindenlab.com>2013-10-30 11:37:53 -0600
commit787ff3937d697526284e8d0a812a7353ad916dea (patch)
treeb2580fd3169b91d11910858f5c983359c43d6bdb /indra
parent84bd9f980b3b65d609d1a8611d6ad99587d9aafe (diff)
fix for SH-4584: Interesting: objectprojectionAreaCutOFF hides large objects on adjacent regions.
Diffstat (limited to 'indra')
-rwxr-xr-xindra/newview/llviewerregion.cpp4
-rwxr-xr-xindra/newview/llvocache.cpp9
-rwxr-xr-xindra/newview/llvocache.h2
3 files changed, 6 insertions, 9 deletions
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 23660dd3ce..cbce2674a7 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1071,6 +1071,8 @@ F32 LLViewerRegion::updateVisibleEntries(F32 max_time)
const U32 cur_frame = LLViewerOctreeEntryData::getCurrentFrame();
bool needs_update = ((cur_frame - mImpl->mLastCameraUpdate) > 5) && ((camera_origin - mImpl->mLastCameraOrigin).lengthSquared() > 10.f);
U32 last_update = mImpl->mLastCameraUpdate;
+ LLVector4a local_origin;
+ local_origin.load3((camera_origin - getOriginAgent()).mV);
//process visible entries
for(LLVOCacheEntry::vocache_entry_set_t::iterator iter = mImpl->mVisibleEntries.begin(); iter != mImpl->mVisibleEntries.end();)
@@ -1149,7 +1151,7 @@ F32 LLViewerRegion::updateVisibleEntries(F32 max_time)
continue;
}
- vo_entry->calcSceneContribution(camera_origin, needs_update, last_update);
+ vo_entry->calcSceneContribution(local_origin, needs_update, last_update);
mImpl->mWaitingList.insert(vo_entry);
}
}
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index 72270eec46..b1c7423b49 100755
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -383,20 +383,15 @@ bool LLVOCacheEntry::isRecentlyVisible() const
return vis;
}
-void LLVOCacheEntry::calcSceneContribution(const LLVector3& camera_origin, bool needs_update, U32 last_update)
+void LLVOCacheEntry::calcSceneContribution(const LLVector4a& camera_origin, bool needs_update, U32 last_update)
{
if(!needs_update && getVisible() >= last_update)
{
return; //no need to update
}
- const LLVector4a& center = getPositionGroup();
-
- LLVector4a origin;
- origin.load3(camera_origin.mV);
-
LLVector4a lookAt;
- lookAt.setSub(center, origin);
+ lookAt.setSub(getPositionGroup(), camera_origin);
F32 squared_dist = lookAt.dot3(lookAt).getF32();
if(squared_dist > 0.f)
diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h
index 3ee9dcaac8..446111620d 100755
--- a/indra/newview/llvocache.h
+++ b/indra/newview/llvocache.h
@@ -93,7 +93,7 @@ public:
S32 getHitCount() const { return mHitCount; }
S32 getCRCChangeCount() const { return mCRCChangeCount; }
- void calcSceneContribution(const LLVector3& camera_origin, bool needs_update, U32 last_update);
+ void calcSceneContribution(const LLVector4a& camera_origin, bool needs_update, U32 last_update);
void setSceneContribution(F32 scene_contrib) {mSceneContrib = scene_contrib;}
F32 getSceneContribution() const { return mSceneContrib;}