diff options
| author | Dave Parks <davep@lindenlab.com> | 2011-11-10 14:48:48 -0600 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2011-11-10 14:48:48 -0600 | 
| commit | 76bd8cee1120ac531d56b9897b135e9c1af1bb16 (patch) | |
| tree | 11878ae7f4cf36d38bcaa119478e5aadeaffdd66 | |
| parent | c8f558f6775d62f03d6caab19668df80e95e8a8b (diff) | |
SH-2644 Fix debug display that shows selection triangle count and streaming cost
| -rw-r--r-- | indra/llmath/llvolume.cpp | 14 | ||||
| -rw-r--r-- | indra/llmath/llvolume.h | 2 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.h | 2 | ||||
| -rwxr-xr-x | indra/newview/llviewerobject.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.h | 4 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 11 | ||||
| -rwxr-xr-x | indra/newview/llvovolume.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llvovolume.h | 2 | 
9 files changed, 30 insertions, 17 deletions
| diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index 1a95f9cd46..da0fa32963 100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -4305,15 +4305,25 @@ S32 LLVolume::getNumTriangleIndices() const  } -S32 LLVolume::getNumTriangles() const +S32 LLVolume::getNumTriangles(S32* vcount) const  {  	U32 triangle_count = 0; +	U32 vertex_count = 0;  	for (S32 i = 0; i < getNumVolumeFaces(); ++i)  	{ -		triangle_count += getVolumeFace(i).mNumIndices/3; +		const LLVolumeFace& face = getVolumeFace(i); +		triangle_count += face.mNumIndices/3; + +		vertex_count += face.mNumVertices;  	} + +	if (vcount) +	{ +		*vcount = vertex_count; +	} +	  	return triangle_count;  } diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index f0e59a3c00..afd1ec5eed 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -990,7 +990,7 @@ public:  	S32 getNumTriangleIndices() const;  	static void getLoDTriangleCounts(const LLVolumeParams& params, S32* counts); -	S32 getNumTriangles() const; +	S32 getNumTriangles(S32* vcount = NULL) const;  	void generateSilhouetteVertices(std::vector<LLVector3> &vertices,   									std::vector<LLVector3> &normals,  diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 2971ee710a..830a7778ac 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -6524,7 +6524,7 @@ F32 LLObjectSelection::getSelectedObjectStreamingCost(S32* total_bytes, S32* vis  	return cost;  } -U32 LLObjectSelection::getSelectedObjectTriangleCount() +U32 LLObjectSelection::getSelectedObjectTriangleCount(S32* vcount)  {  	U32 count = 0;  	for (list_t::iterator iter = mList.begin(); iter != mList.end(); ++iter) @@ -6534,7 +6534,7 @@ U32 LLObjectSelection::getSelectedObjectTriangleCount()  		if (object)  		{ -			count += object->getTriangleCount(); +			count += object->getTriangleCount(vcount);  		}  	} diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index 166616e13e..87ada5ac6b 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -286,7 +286,7 @@ public:  	S32 getSelectedObjectRenderCost();  	F32 getSelectedObjectStreamingCost(S32* total_bytes = NULL, S32* visible_bytes = NULL); -	U32 getSelectedObjectTriangleCount(); +	U32 getSelectedObjectTriangleCount(S32* vcount = NULL);  	S32 getTECount();  	S32 getRootObjectCount(); diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index d81e67bfe2..b8772971aa 100755 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -3219,12 +3219,12 @@ F32 LLViewerObject::getLinksetPhysicsCost()  	return mLinksetPhysicsCost;  } -F32 LLViewerObject::getStreamingCost(S32* bytes, S32* visible_bytes) +F32 LLViewerObject::getStreamingCost(S32* bytes, S32* visible_bytes, F32* unscaled_value) const  {  	return 0.f;  } -U32 LLViewerObject::getTriangleCount() +U32 LLViewerObject::getTriangleCount(S32* vcount) const  {  	return 0;  } diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index a77725c1ca..c8152e1539 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -340,8 +340,8 @@ public:  	virtual void setScale(const LLVector3 &scale, BOOL damped = FALSE); -	virtual F32 getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL); -	virtual U32 getTriangleCount(); +	virtual F32 getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL, F32* unscaled_value = NULL) const; +	virtual U32 getTriangleCount(S32* vcount = NULL) const;  	virtual U32 getHighLODTriangleCount();  	void setObjectCost(F32 cost); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 55834f5d99..8af83246da 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -489,6 +489,7 @@ public:  			{  				F32 cost = 0.f;  				S32 count = 0; +				S32 vcount = 0;  				S32 object_count = 0;  				S32 total_bytes = 0;  				S32 visible_bytes = 0; @@ -510,7 +511,9 @@ public:  								S32 bytes = 0;	  								S32 visible = 0;  								cost += object->getStreamingCost(&bytes, &visible); -								count += object->getTriangleCount(); +								S32 vt = 0; +								count += object->getTriangleCount(&vt); +								vcount += vt;  								total_bytes += bytes;  								visible_bytes += visible;  							} @@ -521,15 +524,15 @@ public:  				{  					label = "Selection";  					cost = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectStreamingCost(&total_bytes, &visible_bytes); -					count = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectTriangleCount(); +					count = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectTriangleCount(&vcount);  					object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount();  				}  				addText(xpos,ypos, llformat("%s streaming cost: %.1f", label, cost));  				ypos += y_inc; -				addText(xpos, ypos, llformat("    %.3f KTris, %.1f/%.1f KB, %d objects", -										count/1000.f, visible_bytes/1024.f, total_bytes/1024.f, object_count)); +				addText(xpos, ypos, llformat("    %.3f KTris, %.3f KVerts, %.1f/%.1f KB, %d objects", +										count/1000.f, vcount/1000.f, visible_bytes/1024.f, total_bytes/1024.f, object_count));  				ypos += y_inc;  			} diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index b75a0a799a..827c5b9cb5 100755 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3266,13 +3266,13 @@ void LLVOVolume::updateRenderComplexity()  	mRenderComplexity_current = 0;  } -U32 LLVOVolume::getTriangleCount() const +U32 LLVOVolume::getTriangleCount(S32* vcount) const  {  	U32 count = 0;  	LLVolume* volume = getVolume();  	if (volume)  	{ -		count = volume->getNumTriangles(); +		count = volume->getNumTriangles(vcount);  	}  	return count; diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index b6347526ee..64457975f8 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -133,7 +133,7 @@ public:  				U32 	getRenderCost(texture_cost_t &textures) const;  	/*virtual*/	F32		getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL, F32* unscaled_value = NULL) const; -	/*virtual*/ U32		getTriangleCount() const; +	/*virtual*/ U32		getTriangleCount(S32* vcount = NULL) const;  	/*virtual*/ U32		getHighLODTriangleCount();  	/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end,   										  S32 face = -1,                        // which face to check, -1 = ALL_SIDES | 
