I'll attach the diff. It addresses cases where baddies were creating
attachments tuned to lag out viewers with wild vertex counts. With the
necklace for VWR-13868, view it in wireframe mode or turn on
render->info displays->sculpt to see why it's a really unusual asset:
at the typical resolution and view distance, it's going to have like
30 faces per pixel. It's literally got more polygons than both teams
in a typical console basketball game.

If anyone is really attached to affected assets and wants to
contribute an alternative patch, it might be possible to do something
like dropping LOD on sculpts and tori when a set is wildly expensive.
I think more time didn't go into that because the few non-griefer
assets we were given were overkill for a space the size of a room, let
alone as an attachment. There are many more tasks requiring graphics
dev time, which affect more resis.


On Wed, Jun 17, 2009 at 9:02 AM, Harleen
Gretzky<[email protected]> wrote:
> Can you elaborate on what the new rendering limits are?
>
>
> On Wed, Jun 17, 2009 at 9:35 AM, Kent Quirk (Q Linden) <[email protected]>
> wrote:
>>
>> rendering limits where we never had them before
--- linden/branches/maint-render/maint-render-8/indra/newview/llvovolume.cpp	2008/11/12 01:18:11	102189
+++ linden/branches/maint-render/maint-render-8/indra/newview/llvovolume.cpp	2008/11/12 01:26:38	102190
@@ -2151,8 +2151,11 @@
 	U32 useage = group->mSpatialPartition->mBufferUsage;
 
 	U32 max_vertices = (gSavedSettings.getS32("RenderMaxVBOSize")*1024)/LLVertexBuffer::calcStride(group->mSpatialPartition->mVertexDataMask);
+	U32 max_total = (gSavedSettings.getS32("RenderMaxNodeSize")*1024)/LLVertexBuffer::calcStride(group->mSpatialPartition->mVertexDataMask);
 	max_vertices = llmin(max_vertices, (U32) 65535);
 
+	U32 cur_total = 0;
+
 	//get all the faces into a list
 	for (LLSpatialGroup::element_iter drawable_iter = group->getData().begin(); drawable_iter != group->getData().end(); ++drawable_iter)
 	{
@@ -2178,6 +2181,16 @@
 			//sum up face verts and indices
 			drawablep->updateFaceSize(i);
 			LLFace* facep = drawablep->getFace(i);
+
+			if (cur_total > max_total)
+			{
+				facep->mVertexBuffer = NULL;
+				facep->mLastVertexBuffer = NULL;
+				continue;
+			}
+
+			cur_total += facep->getGeomCount();
+
 			if (facep->hasGeometry() && facep->mPixelArea > FORCE_CULL_AREA)
 			{
 				const LLTextureEntry* te = facep->getTextureEntry();
_______________________________________________
Policies and (un)subscribe information available here:
http://wiki.secondlife.com/wiki/SLDev
Please read the policies before posting to keep unmoderated posting privileges

Reply via email to