diff options
| author | Xiaohong Bao <bao@lindenlab.com> | 2013-11-06 09:42:06 -0700 | 
|---|---|---|
| committer | Xiaohong Bao <bao@lindenlab.com> | 2013-11-06 09:42:06 -0700 | 
| commit | 463a8930c8bddd8740478f6400561a48220ee584 (patch) | |
| tree | 61899b258e36ab0f6692d35645a22f21e7496759 | |
| parent | 0ce7008521b776451c0ce38299fa87c9e64c63cd (diff) | |
re-organize the code of processing the debug setting "ObjectProjectionAreaCutOff"
| -rwxr-xr-x | indra/newview/app_settings/settings.xml | 2 | ||||
| -rwxr-xr-x | indra/newview/llviewerregion.cpp | 8 | ||||
| -rwxr-xr-x | indra/newview/llvocache.cpp | 22 | ||||
| -rwxr-xr-x | indra/newview/llvocache.h | 1 | 
4 files changed, 20 insertions, 13 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 09d74a7f5e..c87da95d41 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -7125,7 +7125,7 @@        <real>0.75</real>      </array>    </map> -  <key>ObjectProjectionAreaCutOFF</key> +  <key>ObjectProjectionAreaCutOff</key>    <map>      <key>Comment</key>      <string>Threshold in number of pixels of the projection area in screen of object bounding sphere. Objects smaller than this threshold are not rendered.</string> diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index fe420fe551..56e0142dd6 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1166,8 +1166,6 @@ void LLViewerRegion::updateVisibleEntries(F32 max_time)  void LLViewerRegion::createVisibleObjects(F32 max_time)  { -	static LLCachedControl<F32> projection_area_cutoff(gSavedSettings,"ObjectProjectionAreaCutOFF"); -  	if(mDead)  	{  		return; @@ -1179,10 +1177,8 @@ void LLViewerRegion::createVisibleObjects(F32 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; - +	F32 projection_threshold = LLVOCacheEntry::getSquaredObjectScreenAreaThreshold(); +	  	S32 throttle = sNewObjectCreationThrottle;  	BOOL has_new_obj = FALSE;  	LLTimer update_timer;	 diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index be7ff00c05..d0061fc777 100755 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -358,6 +358,19 @@ void LLVOCacheEntry::updateDebugSettings()  	sBackAngleTanSquared = squared_back_angle;  } +//static  +F32 LLVOCacheEntry::getSquaredObjectScreenAreaThreshold() +{ +	static LLCachedControl<F32> projection_area_cutoff(gSavedSettings,"ObjectProjectionAreaCutOff"); + +	//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; + +	return projection_threshold; +} +  bool LLVOCacheEntry::isAnyVisible(const LLVector4a& camera_origin, F32 squared_dist_threshold)  {  	LLOcclusionCullingGroup* group = (LLOcclusionCullingGroup*)getGroup(); @@ -752,8 +765,7 @@ void LLVOCachePartition::selectBackObjects(LLCamera &camera, F32 back_sphere_rad  S32 LLVOCachePartition::cull(LLCamera &camera, bool do_occlusion)  {  	static LLCachedControl<bool> use_object_cache_occlusion(gSavedSettings,"UseObjectCacheOcclusion"); -	static LLCachedControl<F32> back_sphere_radius(gSavedSettings,"BackShpereCullingRadius"); -	static LLCachedControl<F32> projection_area_cutoff(gSavedSettings,"ObjectProjectionAreaCutOFF"); +	static LLCachedControl<F32> back_sphere_radius(gSavedSettings,"BackShpereCullingRadius");	  	if(!LLViewerRegion::sVOCacheCullingEnabled)  	{ @@ -778,10 +790,8 @@ S32 LLVOCachePartition::cull(LLCamera &camera, bool do_occlusion)  	mCulledTime[LLViewerCamera::sCurCameraID] = LLViewerOctreeEntryData::getCurrentFrame();  	//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; - +	F32 projection_threshold = LLVOCacheEntry::getSquaredObjectScreenAreaThreshold(); +	  	if(!mCullHistory && LLViewerRegion::isViewerCameraStatic())  	{  		U32 seed = llmax(mLODPeriod >> 1, (U32)4); diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h index ae32fb0cee..09766b297e 100755 --- a/indra/newview/llvocache.h +++ b/indra/newview/llvocache.h @@ -125,6 +125,7 @@ public:  	U32  getUpdateFlags() const    {return mUpdateFlags;}  	static void updateDebugSettings(); +	static F32  getSquaredObjectScreenAreaThreshold();  private:  	void updateParentBoundingInfo(const LLVOCacheEntry* child);	 | 
