how to estimate the polygon budget?

Started by
5 comments, last by Hodgman 11 years, 7 months ago
Hi,

I'm starting a game with a friend, and the artists asked me the polygon budget they should use for all 3d models.

How can I estimate accurently the polygon budget for a particular device/GPU?...

The only thing that comes to my mind is to make a test increasing the number of polygons until it drops the framerate to some non-acceptable rate.... but I don't know if there's a less try-and-error way to do this.

Thanks!
"lots of shoulddas, coulddas, woulddas in the air, thinking about things they shouldda couldda wouldda donne, however all those shoulddas coulddas woulddas ran away when they saw the little did to come"
Advertisement
Decide on the lowest level of hardware you want to support, run a benchmark of what a typical scene in your game would look like performance-wise on that hardware and tune the specs of that scene until you reach your performance limit (ie. your frame time budget).

Your poly budget will be only one aspect of this though, so you'll have to create a balance of which aspect gets a higher priority.
Just try to experiment with some settings and do some mixing and matching until you've found a balance you're happy with.

I gets all your texture budgets!

thanks Radikalizm,

What other aspects would be involved?..

I think that maybe another thing to consider is the number of animated characters on the scene (if they're being animated, then it consumes more time, and I would have to lower the poly budget)... but I'm kind of newbie on this, so I'd like to know in your experience what other things should I consider when deciding this.

Thanks!
"lots of shoulddas, coulddas, woulddas in the air, thinking about things they shouldda couldda wouldda donne, however all those shoulddas coulddas woulddas ran away when they saw the little did to come"
Well, pretty much everything you add to your game requires a part of your frame time budget, be it animation, lighting, AI, audio, physics, etc.

I don't know what kind of game you're making nor do I know the details of the backend for your game or the efficiency of your implementations, so finding out where the hot spots are in your game loop is something you'll need to do yourself by careful profiling and benchmarking.

I gets all your texture budgets!

Also most of the polygons wont probably even be visible at once so you should take that into account.

o3o

I tell my artists "as little as possible". Most modern games' assets are really careless with their polygons (and more often, textures).

You don't need super-high-resolution anything. That's even more true of animated models, where movement obscures details. If you really need detail, use normalmapping, parallaxmapping/parallax occlusion mapping, or geometry/tessellation programs (in increasing order of desperation).

Modern GPUs can handle on the order of 1,000,000 polygons on screen without hurting performance (which is typically a fillrate issue). Still, I set 500,000 as a hard maximum, and try not to exceed 100,000 to be more friendly to lesser machines. In a typical game, I probably get by with around 10,000-50,000 on average. It's true that there are cases where you need a lot of geometry, but it's very rare that you need as much as most people think.

You'll need to divy those numbers up for what kind of game you have. A good heuristic is to make your main character the most detailed, if you have one.

[size="1"]And a Unix user said rm -rf *.* and all was null and void...|There's no place like 127.0.0.1|The Application "Programmer" has unexpectedly quit. An error of type A.M. has occurred.
[size="2"]

In most of the games that I've worked on, the art budgets have been chosen after experience on the previous game... So yeah, trial and error, and scientific testing of your engine/hardware. Set up some benchmarks testing different types of models/shaders on different GPUs.

Polygon budget also is not that important - there are many other factors to consider, e.g. --
I think that maybe another thing to consider is the number of animated characters on the scene (if they're being animated, then it consumes more time, and I would have to lower the poly budget)
This is a good example where "vertex budget" is more important than "polygon budget".
So you could replace "poly budget" with "vertex budget". You could also then compare your static-vertex shader with your animated-vertex shader, and measure how many "Static vertices" every 1 "animated vertex" is worth in cost.

Some other important guidelines:
-- Avoid pixel-sized triangles. Every triangle should cover at least 4 pixels at normal viewing distances. The pixel shader always runs on groups of 4 pixels at a time, so if your artists use pixel-sized triangles, then your pixel shader cost will increase by 4x. This means that using appropriate low-poly LOD models actually increases your pixel shading performance (as well as vertex shading performance)!
-- Avoid over-draw. Overlapping polygons are a complete waste of pixel-shading time. On our last project, we told the artists to reduce polygon count as much as they could... however, this meant that when they made a billboard, instead of creating a metal border with the advert cut into the centre, they instead just made two overlapping polygons (where the background was slightly larger, making a "border" around the smaller one). This saved them a few polygons, but doubled the pixel shading cost!
-- Avoid draw-calls. Every draw-call or "sub mesh" needs to contain a certain number of vertices and/or cover a certain amount of pixels to be efficient. Draw-calls that don't do enough GPU work aren't worth their overhead, and can cause pipeline bubbles. e.g. on my last game, we found one case where 4 draw-calls with 100 tris each was more expensive than 2 draw-calls with 300 tris each.

This topic is closed to new replies.

Advertisement