• Advertisement
Sign in to follow this  

how to estimate the polygon budget?

This topic is 1974 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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!

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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!

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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. Edited by Hodgman

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement