FIRE-32688 - Area Search Improvements
Part 1: These changes prevent some of the aggressive culling that has prevented area search from working. They work best in combination with changes to the aggressive culling that better fit the viewer's memory footprint. These changes are committed separately to make it easier to change themmaster
parent
c04f13968e
commit
6eb96153e6
|
|
@ -173,6 +173,7 @@ FSAreaSearch::FSAreaSearch(const LLSD& key) :
|
|||
mRequestNeedsSent(false),
|
||||
mRlvBehaviorCallbackConnection()
|
||||
{
|
||||
LLViewerRegion::sFSAreaSearchActive = true;
|
||||
mFactoryMap["area_search_list_panel"] = LLCallbackMap(createPanelList, this);
|
||||
mFactoryMap["area_search_find_panel"] = LLCallbackMap(createPanelFind, this);
|
||||
mFactoryMap["area_search_filter_panel"] = LLCallbackMap(createPanelFilter, this);
|
||||
|
|
@ -188,6 +189,7 @@ FSAreaSearch::FSAreaSearch(const LLSD& key) :
|
|||
|
||||
FSAreaSearch::~FSAreaSearch()
|
||||
{
|
||||
LLViewerRegion::sFSAreaSearchActive = false;
|
||||
if (!gIdleCallbacks.deleteFunction(idle, this))
|
||||
{
|
||||
LL_WARNS("FSAreaSearch") << "FSAreaSearch::~FSAreaSearch() failed to delete callback" << LL_ENDL;
|
||||
|
|
|
|||
|
|
@ -106,6 +106,7 @@
|
|||
const S32 MAX_CAP_REQUEST_ATTEMPTS = 30;
|
||||
const U32 DEFAULT_MAX_REGION_WIDE_PRIM_COUNT = 15000;
|
||||
|
||||
BOOL LLViewerRegion::sFSAreaSearchActive = FALSE;
|
||||
BOOL LLViewerRegion::sVOCacheCullingEnabled = FALSE;
|
||||
S32 LLViewerRegion::sLastCameraUpdated = 0;
|
||||
S32 LLViewerRegion::sNewObjectCreationThrottle = -1;
|
||||
|
|
|
|||
|
|
@ -478,6 +478,7 @@ public:
|
|||
std::vector<U32> mMapAvatars;
|
||||
std::vector<LLUUID> mMapAvatarIDs;
|
||||
|
||||
static BOOL sFSAreaSearchActive; // <FS:Beq/> FIRE-32688 Area Search improvements
|
||||
static BOOL sVOCacheCullingEnabled; //vo cache culling enabled or not.
|
||||
static S32 sLastCameraUpdated;
|
||||
|
||||
|
|
|
|||
|
|
@ -432,6 +432,7 @@ F32 LLVOCacheEntry::getSquaredPixelThreshold(bool is_front)
|
|||
|
||||
bool LLVOCacheEntry::isAnyVisible(const LLVector4a& camera_origin, const LLVector4a& local_camera_origin, F32 dist_threshold)
|
||||
{
|
||||
if( LLViewerRegion::sFSAreaSearchActive ) { return true; } // <FS:Beq/> FIRE-32688 Area Search improvements
|
||||
LLOcclusionCullingGroup* group = (LLOcclusionCullingGroup*)getGroup();
|
||||
if(!group)
|
||||
{
|
||||
|
|
@ -928,7 +929,10 @@ S32 LLVOCachePartition::cull(LLCamera &camera, bool do_occlusion)
|
|||
|
||||
//process back objects selection
|
||||
selectBackObjects(camera, LLVOCacheEntry::getSquaredPixelThreshold(mFrontCull),
|
||||
do_occlusion && use_object_cache_occlusion);
|
||||
// <FS:Beq> FIRE-32688 Area Search improvements
|
||||
// do_occlusion && use_object_cache_occlusion);
|
||||
do_occlusion && use_object_cache_occlusion && !LLViewerRegion::sFSAreaSearchActive);
|
||||
// </FS:Beq>
|
||||
return 0; //nothing changed, reduce frequency of culling
|
||||
}
|
||||
}
|
||||
|
|
@ -942,7 +946,10 @@ S32 LLVOCachePartition::cull(LLCamera &camera, bool do_occlusion)
|
|||
camera.calcRegionFrustumPlanes(region_agent, gAgentCamera.mDrawDistance);
|
||||
|
||||
mFrontCull = TRUE;
|
||||
LLVOCacheOctreeCull culler(&camera, mRegionp, region_agent, do_occlusion && use_object_cache_occlusion,
|
||||
// <FS:Beq> FIRE-32688 Area Search improvements
|
||||
// LLVOCacheOctreeCull culler(&camera, mRegionp, region_agent, do_occlusion && use_object_cache_occlusion,
|
||||
LLVOCacheOctreeCull culler(&camera, mRegionp, region_agent, do_occlusion && use_object_cache_occlusion && !LLViewerRegion::sFSAreaSearchActive,
|
||||
// </FS:Beq>
|
||||
LLVOCacheEntry::getSquaredPixelThreshold(mFrontCull), this);
|
||||
culler.traverse(mOctree);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue