diff options
| author | Dave Parks <davep@lindenlab.com> | 2012-04-11 12:20:32 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2012-04-11 12:20:32 -0500 | 
| commit | 31cfee6a1c7f3994a8df464d5de754163aa43cf4 (patch) | |
| tree | b56ae2997f6cbf7741cef4ffa85d5e888c97b95f /indra | |
| parent | ea335aedd5f944c0d04eb12b214a1778512d63b2 (diff) | |
| parent | 484994b43b65f19d3d64c7ea3760313277e9e138 (diff) | |
merge
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llrender/llvertexbuffer.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llvopartgroup.cpp | 21 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 8 | 
3 files changed, 22 insertions, 11 deletions
| diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index b4899209c4..879888d185 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -1207,10 +1207,10 @@ void LLVertexBuffer::updateNumVerts(S32 nverts)  	llassert(nverts >= 0); -	if (nverts >= 65535) +	if (nverts > 65536)  	{  		llwarns << "Vertex buffer overflow!" << llendl; -		nverts = 65535; +		nverts = 65536;  	}  	U32 needed_size = calcOffsets(mTypeMask, mOffsets, nverts); diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp index 5c10a80b07..6ce93d641c 100644 --- a/indra/newview/llvopartgroup.cpp +++ b/indra/newview/llvopartgroup.cpp @@ -447,14 +447,21 @@ void LLParticlePartition::addGeometryCount(LLSpatialGroup* group, U32& vertex_co  				continue;  			} -			count++; -			facep->mDistance = (facep->mCenterLocal - camera->getOrigin()) * camera->getAtAxis(); -			obj->mDepth += facep->mDistance; +			if ((facep->getGeomCount() + vertex_count) <= 65536) +			{ +				count++; +				facep->mDistance = (facep->mCenterLocal - camera->getOrigin()) * camera->getAtAxis(); +				obj->mDepth += facep->mDistance; -			mFaceList.push_back(facep); -			vertex_count += facep->getGeomCount(); -			index_count += facep->getIndicesCount(); -			llassert(facep->getIndicesCount() < 65536); +				mFaceList.push_back(facep); +				vertex_count += facep->getGeomCount(); +				index_count += facep->getIndicesCount(); +				llassert(facep->getIndicesCount() < 65536); +			} +			else +			{ +				facep->clearVertexBuffer(); +			}  		}  		obj->mDepth /= count; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 080d1f774a..16b61496a6 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -5089,6 +5089,7 @@ void LLGeometryManager::addGeometryCount(LLSpatialGroup* group, U32 &vertex_coun  	mFaceList.clear();  	//for each drawable +  	for (LLSpatialGroup::element_iter drawable_iter = group->getData().begin(); drawable_iter != group->getData().end(); ++drawable_iter)  	{  		LLDrawable* drawablep = *drawable_iter; @@ -5109,11 +5110,14 @@ void LLGeometryManager::addGeometryCount(LLSpatialGroup* group, U32 &vertex_coun  			//sum up face verts and indices  			drawablep->updateFaceSize(i);  			LLFace* facep = drawablep->getFace(i); -			if (facep->hasGeometry() && facep->getPixelArea() > FORCE_CULL_AREA) + +			 +			if (facep->hasGeometry() && facep->getPixelArea() > FORCE_CULL_AREA &&  +				facep->getGeomCount() + vertex_count <= 65536)  			{  				vertex_count += facep->getGeomCount();  				index_count += facep->getIndicesCount(); -				llassert(facep->getIndicesCount() < 65536); +				  				//remember face (for sorting)  				mFaceList.push_back(facep);  			} | 
