13
Apr
08

Avatar Rendering Costs

With the recent release of the 1.20 release candidate, a new UI look is headed our way, plus support for 3D controllers and scripted glow. But these features pale in comparison to a new and somewhat controversial feature: avatar rendering costs.

If you select Rendering → Info Displays → Avatar Rendering Cost from the Advanced menu in your client (press Ctrl+Alt+D to show the Advanced menu if necessary), numbers will appear over each avatar. These are their rendering costs, which can go from 1 to about 10,000 or 20,000. The lower scores appear green, moderate scores (about 1,000) are yellow, and anything over about 2,000 is red.

I spent a little time experimenting with attachments, and found out some of what makes ARC’s go through the roof (and surprisingly, things that have little or no effect on them).

An avatar by itself, with no attachments, has an ARC of 1. Each avatar attachment (as opposed to HUD attachment) increases the cost by 10. Every individual texture object brings it up by five.

What that means is that if all your attachments have the plywood texture (or any single texture, but textures with alpha channels impose additional costs as mentioned below), the added cost is 5. But if you change a prim to another texture, that’s 5 more points. If you make a prim into a scupltie*, you add another texture (the sculpt texture) to your attachment pool, and another 5 points to your ARC. If you make another prim into a sculptie with the same sculpt texture, it will not increase your ARC.

Texturing features add more complexity to this formula. As far as I know, texture rotation, offsets and scaling have no effect on the ARC. However, glow and shiny add 1 point for every prim they are used on. Bump mapping bumps the ARC up by 4 for each prim it is used on. Planar mapping adds 1 point for every face it is used on. Transparency, whether it is applied through the Transparency spinbox or an alpha texture, adds 4 points per face. Full bright does not affect the ARC.

Each flexiprim adds 8 points to the ARC. Lights do not contribute to the ARC, so a single-sphere facelight will only cost you 19 points (10 for the attachment + 5 for the facelight texture + 4 for transparency).

Every prim that emits particles adds 16 to the ARC, making bling a costly affair. As revealed by Kitty Barnett’s exploration of the viewer source code, prims with any dimension greater than 1 meter add the sum of their dimensions (rounded down) to the ARC. (This exploration also reveals that the ARC is referred to as a “shame” index.)

Tateru Nino has also reported on this, and the comments bring a fair bit of insight into just how high ARC’s can be. The story itself has an anecdote about a single skirt (probably full of flexiprims with alpha textures on each face) that put even a basic avatar well into red country.

So, to sum up, prim counts have little to no effect on avatar rendering costs, but transparent faces, flexiprims, and particle emitters are huge contributors.

Here’s something interesting (my basic avatar has an ARC of 730, but zooming out lowers this for some reason):

Three sixes

*Don’t try this unless you detach the object first. The client will crash if you try to change the shape of an attached prim (VWR-6415 in the Public JIRA).

Advertisements

2 Responses to “Avatar Rendering Costs”


  1. 2008-04-13 at 6:43 am

    Zooming out engages the Level-of-Detail (LoD) algorithms, simplifying some of the visible geometry.

  2. 2008-06-19 at 3:33 am

    Somehow i missed the point. Probably lost in translation 🙂 Anyway … nice blog to visit.

    cheers, Louisianan.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: