diff options
| author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2017-11-17 14:26:34 +0000 | 
|---|---|---|
| committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2017-11-17 14:26:34 +0000 | 
| commit | 84b6bce4ee9299454aca75d8f876b6582b756ff6 (patch) | |
| tree | c0ac13e49f86d9e3ea9f12e9bbb5acbf139bc82d | |
| parent | 1fd5d03847437e96fa6b5a08e08e36cb218f990f (diff) | |
SL-704 - attachment surface area now computed in bulk rather than updated incrementally. Same dubious formula.
| -rw-r--r-- | indra/newview/llspatialpartition.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.cpp | 29 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.h | 3 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 23 | 
4 files changed, 8 insertions, 57 deletions
| diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 0fd36766b3..0db1806fd8 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -856,16 +856,6 @@ void LLSpatialGroup::handleDestruction(const TreeNode* node)  		}  	} -	//clean up avatar attachment stats -	LLSpatialBridge* bridge = getSpatialPartition()->asBridge(); -	if (bridge) -	{ -		if (bridge->mAvatar.notNull()) -		{ -			bridge->mAvatar->subtractAttachmentArea(mSurfaceArea ); -		} -	} -  	clearDrawMap();  	mVertexBuffer = NULL;  	mBufferMap.clear(); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 8e24962b11..a54a56008e 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -620,7 +620,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,  	LLViewerObject(id, pcode, regionp),  	mSpecialRenderMode(0),  	mAttachmentSurfaceArea(0.f), -	mDirectAttachmentSurfaceArea(0.f),  	mAttachmentVisibleTriangleCount(0),  	mAttachmentEstTriangleCount(0.f),  	mReportedVisualComplexity(VISUAL_COMPLEXITY_UNKNOWN), @@ -7412,9 +7411,9 @@ bool LLVOAvatar::isTooComplex() const          // so that unlimited will completely disable the overly complex impostor rendering          // yes, this leaves them vulnerable to griefing objects... their choice          too_complex = (   max_render_cost > 0 -                       && (   mVisualComplexity > max_render_cost -                           || (max_attachment_area > 0.0f && mAttachmentSurfaceArea > max_attachment_area) -                           )); +                          && (mVisualComplexity > max_render_cost +                                 || (max_attachment_area > 0.0f && mAttachmentSurfaceArea > max_attachment_area) +                              ));  	}  	return too_complex; @@ -9312,10 +9311,7 @@ void LLVOAvatar::idleUpdateRenderComplexity()  		// Attachment Surface Area  		static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit", 1000.0f); -        // AXON we can consolidate mAttachmentSurfaceArea and -        // mDirectAttachmentSurfaceArea once QA establishes -        // equivalence. -		info_line = llformat("%.0f m^2", mDirectAttachmentSurfaceArea); +		info_line = llformat("%.0f m^2", mAttachmentSurfaceArea);  		if (max_render_cost != 0 && max_attachment_area != 0) // zero means don't care, so don't bother coloring based on this  		{ @@ -9331,22 +9327,13 @@ void LLVOAvatar::idleUpdateRenderComplexity()  			info_color.set(LLColor4::grey);  			info_style = LLFontGL::NORMAL;  		} +  		mText->addLine(info_line, info_color, info_style);  		updateText(); // corrects position  	}  } -void LLVOAvatar::addAttachmentArea(F32 delta_area) -{ -    mAttachmentSurfaceArea   += delta_area; -} - -void LLVOAvatar::subtractAttachmentArea(F32 delta_area) -{ -    mAttachmentSurfaceArea   = delta_area > mAttachmentSurfaceArea ? 0.0 : mAttachmentSurfaceArea - delta_area; -} -  void LLVOAvatar::updateVisualComplexity()  {  	LL_DEBUGS("AvatarRender") << "avatar " << getID() << " appearance changed" << LL_ENDL; @@ -9368,7 +9355,7 @@ void LLVOAvatar::accountRenderComplexityForObject(      {          mAttachmentVisibleTriangleCount += attached_object->recursiveGetTriangleCount();          mAttachmentEstTriangleCount += attached_object->recursiveGetEstTrianglesMax(); -        mDirectAttachmentSurfaceArea += attached_object->recursiveGetScaledSurfaceArea(); +        mAttachmentSurfaceArea += attached_object->recursiveGetScaledSurfaceArea();          textures.clear();          const LLDrawable* drawable = attached_object->mDrawable; @@ -9431,7 +9418,7 @@ void LLVOAvatar::accountRenderComplexityForObject(      {          textures.clear(); -        mDirectAttachmentSurfaceArea += attached_object->recursiveGetScaledSurfaceArea(); +        mAttachmentSurfaceArea += attached_object->recursiveGetScaledSurfaceArea();          const LLVOVolume* volume = attached_object->mDrawable->getVOVolume();          if (volume) @@ -9524,7 +9511,7 @@ void LLVOAvatar::calculateUpdateRenderComplexity()          mAttachmentVisibleTriangleCount = 0;          mAttachmentEstTriangleCount = 0.f; -        mDirectAttachmentSurfaceArea = 0.f; +        mAttachmentSurfaceArea = 0.f;          // A standalone animated object needs to be accounted for          // using its associated volume. Attached animated objects diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index f9a1d7b424..730373d79c 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -281,8 +281,6 @@ public:  	U32				getVisualComplexity()			{ return mVisualComplexity;				};		// Numbers calculated here by rendering AV  	F32				getAttachmentSurfaceArea()		{ return mAttachmentSurfaceArea;		};		// estimated surface area of attachments -    void            addAttachmentArea(F32 delta_area); -    void            subtractAttachmentArea(F32 delta_area);  	U32				getReportedVisualComplexity()					{ return mReportedVisualComplexity;				};	// Numbers as reported by the SL server  	void			setReportedVisualComplexity(U32 value)			{ mReportedVisualComplexity = value;			}; @@ -438,7 +436,6 @@ public:    private:  	F32			mAttachmentSurfaceArea; //estimated surface area of attachments -	F32			mDirectAttachmentSurfaceArea; //estimated surface area of attachments      U32			mAttachmentVisibleTriangleCount;      F32			mAttachmentEstTriangleCount;  	bool		shouldAlphaMask(); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 293c24ac4b..b12b503e78 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -4923,7 +4923,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  	group->mBuilt = 1.f;  	LLVOAvatar *rigged_av = NULL; -    LLVOAvatar *attached_av = NULL;  	LLSpatialBridge* bridge = group->getSpatialPartition()->asBridge();      LLViewerObject *vobj = NULL; @@ -4942,19 +4941,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  		}          rigged_av = bridge->mAvatar;  	} -    if (vobj) -    { -        attached_av = vobj->getAvatarAncestor(); -    } - -    if (attached_av) -    { -        attached_av->subtractAttachmentArea( group->mSurfaceArea ); -    } -    if (rigged_av && (rigged_av != attached_av)) -    { -        rigged_av->subtractAttachmentArea( group->mSurfaceArea ); -    }      if (vol_obj)      {          vol_obj->updateVisualComplexity(); @@ -5563,15 +5549,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  	}  	mFaceList.clear(); - -    if (attached_av) -    { -        attached_av->addAttachmentArea( group->mSurfaceArea ); -    } -    if (rigged_av && (rigged_av != attached_av)) -    { -        rigged_av->addAttachmentArea( group->mSurfaceArea ); -    }  }  static LLTrace::BlockTimerStatHandle FTM_REBUILD_MESH_FLUSH("Flush Mesh"); | 
