summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerregion.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llviewerregion.cpp')
-rwxr-xr-xindra/newview/llviewerregion.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 0ad4402dcc..13a71b17cf 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1157,6 +1157,8 @@ F32 LLViewerRegion::updateVisibleEntries(F32 max_time)
F32 LLViewerRegion::createVisibleObjects(F32 max_time)
{
+ static LLCachedControl<F32> projection_area_cutoff(gSavedSettings,"ObjectProjectionAreaCutOFF");
+
if(mDead)
{
return max_time;
@@ -1166,6 +1168,11 @@ F32 LLViewerRegion::createVisibleObjects(F32 max_time)
return max_time;
}
+ //object projected area threshold
+ F32 pixel_meter_ratio = LLViewerCamera::getInstance()->getPixelMeterRatio();
+ F32 projection_threshold = pixel_meter_ratio > 0.f ? projection_area_cutoff / pixel_meter_ratio : 0.f;
+ projection_threshold *= projection_threshold;
+
S32 throttle = sNewObjectCreationThrottle;
LLTimer update_timer;
for(LLVOCacheEntry::vocache_entry_priority_list_t::iterator iter = mImpl->mWaitingList.begin();
@@ -1173,6 +1180,11 @@ F32 LLViewerRegion::createVisibleObjects(F32 max_time)
{
LLVOCacheEntry* vo_entry = *iter;
+ if(vo_entry->getSceneContribution() < projection_threshold)
+ {
+ break;
+ }
+
if(vo_entry->getState() < LLVOCacheEntry::WAITING)
{
addNewObject(vo_entry);