What is your poly budget?

Started by
11 comments, last by Tillman 10 years, 9 months ago

Being a 3D artist I am often asked to join others in there game projects, from years of experience I have learned to ask these three questions first.

Have you made a 3D game before?

Can I download it?

What is your poly budget?

In truth, I really only care about the third question, I will still join a project of a beginner if thy prove thy did some research.

The answer: "modern game engines do not need poly budgets." means that the game, will not see the light of publication.

Even a number, that I consider to be too high could mean the end of the conversation, but how much is too much?

I fear that two years of working in the CGI world has numbed my understanding of the needs that game designers have.

Now I am asking those of you who have worked or have a good understanding of 3D graphics, how much polygons do you use?

I understand that it depends on the project so feel free to elaborate, if you want you can answer in a data form e.g.

XNA

3rd Person Shooter.

Hero 5000 Polygons(10 000 Tri)

Edit: Bones 22

Enemy 4000 Polygons

Edit: Bones 18

Large prop: Building 500 000 Poly

Mid Prop: Tree 10 000 - 8 000 Poly (Static mesh)

Small Prop: Gun 2500 Poly

Ps: If we could use unlimited polygons, I will be one of the first to right a atom based game engine.

Advertisement

Over 9 thousand triangles per character.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

I like to look at the wireframe of the entire scene as rendered in the engine and overlay the pixel grid. That way, you always have the relation between triangle size and pixel size which IMO is equally important. For example, if you have a high poly mushroom in a close up shot, everything is fine. If you have a high poly mushroom and a good LOD system that switches to, say, a billboard, you are fine too. If you only have the high poly mushroom and covered an entire forrest with it, then it will show up in the rendered wireframe and you will notice, that the "triangle density" is way too high. And you will even see it if 90% of the mushrooms are hidden from view.

I know this can't be used as an initial guideline for modelling the asset, but it gives good intell on whether the designers misused the asset or if a stronger LOD is needed after all.


I like to look at the wireframe of the entire scene as rendered in the engine and overlay the pixel grid.

This is very useful when working with a whole seen, but as a modeler I usually make the models and this is then added to the scene by a level designer.

What I am looking for is a good by the rule of thumb value, to keep in mind when working.

Obviously its not an unbounded number, but for the most part we haven't been limited in the number of triangles we draw for years on the desktop -- that is, you can pretty much always use as many triangles as is necessary to make things look good, as long as you're not being gratuitous -- especially now with hardware tessellation. On the desktop PC, you're more often limited by the number of draw calls you make, not how many triangles are coming out the other end. On mobile platforms, fill rate is often the limiting factor (e.g. tegra 2). On current consoles, I'd wager its VRAM and shader throughput that are limiting factors, but I don't work on consoles and its only a guess.

That said, half a million polygons for a building is excessive, most buildings just don't have that kind of geometric detail -- particularly if you're not breaking that render up with some form of BSP scheme you're just wasting a ton of resources on things you won't see anyway.

throw table_exception("(? ???)? ? ???");


use as many triangles as is necessary to make things look good, as long as you're not being gratuitous -- especially now with hardware tessellation.

Tessellation is added onto the original mesh and doesn't count to the poly budget, instead the poly budget defines the tessellation e.g.

A model of a 1000 quads will turn into 4000 at first then 16000.

If the poly budget is not considered then the artist could make the mistake of using 5000 quads, thinking that only one level of tessellation would be used.

Now the 5000 turns to 20000 to 80000.

This happens a lot, if you are coding the game by yourself this isn't a problem, but when working in a large team this will set you back by as much as a whole day.


half a million polygons for a building is excessive

This only begs the question of how much polygons should be added into a single mesh buffer at most?

XNA

750,000 on my most detailed model, with lots of culling. Mid size ships are between 30,000 and 70,000, can have several dozen of these on screen during large battles

On low-end hardware (HD4000) my GPU-accelerated fractal algorithm for planets is set to draw just a little over a million triangles, whereas on high-end PCs it can be cranked to push over 4 million triangles.

Various other effects (particles effects, stars/parallax) render several thousand more tris.

For mobile devices (e.g. HD4000) in total I push somewhere between one or two million triangles (unfortunately this comes at the cost of pushing 1080p framerates under 20 fps, though 720p is still very smooth). On more powerful desktops with good graphics cards I can push 5+ million on 1080p with no framerate drops. I haven't yet tested this on any ultra-powerful desktop machines, my hardware is a little dated. I suspect some new machines could do millions more tris.

My game is highly GPU-bound in terms of performance, CPU makes little or no difference except for load times (NOTE: load times can be pretty awful for complex models on low-end machines).

When I build models I try to go for the lowest poly count that I can squeeze out of it and I use normal maps to fill in the detail. Also there are also a lot of source code examples for implementing other techniques for enhancing detail such as parallax mapping, relief mapping, cone-step mapping, etc...

These methods alter a models texture map coordinates to simulate how a raised surface will travel farther along an arc than a lower surface would. A surface further from the pivot travels a greater distance, to achieve this effect, parallax mapping moves the texture map coordinates further where the height map is "higher".

This technology even runs on mobile devices very well under OpenGL ES 2.0. With all the open source available it's pretty much in the hands of everyone now.

If the game is set up to do this then you really only have to concern yourself with the silhouette of the model since techniques that use textures to enhance a model tend to only break down at the model's edges where the surface angle is steep.

You could also make multiple versions of the same model at various levels of detail,

In layer 1, you could have the lowest resolution model,

In layer 2, a medium detail model,

In layer 3, a model that is a bit excessive.

This technique will give you options for different requirements that people may have, and it will also give you an edge with games that can implement LOD.

The only real issue here would be keeping the texture map coordinates synced up between the various levels of detail, but Blender and xNormal both can do a pretty good job of projecting the surface normals of a high poly model onto the low poly model even though the high poly doesn't have texCoords assigned.

Maybe the modeling program you prefer to use also has this feature. In Blender it's activated using the "Selected to Active" checkbox found in the "bake" section.

Even if you don't use Blender for modeling you could still use it just for this feature since it's free.

If you really want to pack in the most detail possible than you really should consider mastering the art of "modeling" normal maps as well as height maps. They tend to work very well since texture map detail is not subject to aliasing in the same the way real geometry is.

Normal maps also tend to smooth out aliasing problems on real geometry at many view angles. Just not along the model silhouette.

Consider it pure joy, my brothers and sisters, whenever you face trials of many kinds, 3 because you know that the testing of your faith produces perseverance. 4 Let perseverance finish its work so that you may be mature and complete, not lacking anything.

Tessellation is added onto the original mesh and doesn't count to the poly budget, instead the poly budget defines the tessellation e.g.

A model of a 1000 quads will turn into 4000 at first then 16000.

If the poly budget is not considered then the artist could make the mistake of using 5000 quads, thinking that only one level of tessellation would be used.

Now the 5000 turns to 20000 to 80000.

This happens a lot, if you are coding the game by yourself this isn't a problem, but when working in a large team this will set you back by as much as a whole day.

But this isn't really the problem. The real problem is the one of finding appropriate level of detail. At 1080 resolution, you have 1310720 pixels, respectively 327680 4-pixel quads. Shading happens in 4-pixel quads, both because it is practical and because the existence of ddx/ddy more or less makes it mandatory.

Which means if you have more than ~600k triangles on screen, you're necessarily starting to get abusive to the pixel shading pipeline. Long before you get anywhere close to being limited by triangle (or vertex) counts, which are in the millions, you are going to feel the effect of shading the same fragment many times and only keeping one value.

So, it doesn't matter that much whether your object that you draw maybe 10-20 times has a puny 5,000 or 50,000 triangles. What matters is whether the LOD works well enough so in the final rendered buffer triangles aren't all 1-2 pixels large (that applies not only to triangles belonging to a mushroom or to your player, but also triangles belonging to buildings and terrain).

If your model has 50k triangles, that's mighty fine. If it has 5k triangles and looks good, that's mighty fine, too. It's not yours to worry about. A 1k model seen at some distance might still have too many triangles, and it's the LOD system's task to figure this out.


750,000 on my most detailed model, with lots of culling.

Thanks for sharing your test results, it is a very useful guide line.


But this isn't really the problem. The real problem is the one of finding appropriate level of detail. At 1080 resolution, you have 1310720 pixels, respectively 327680 4-pixel quads. Shading happens in 4-pixel quads, both because it is practical and because the existence of ddx/ddy more or less makes it mandatory.
Which means if you have more than ~600k triangles on screen, you're necessarily starting to get abusive to the pixel shading pipeline. Long before you get anywhere close to being limited by triangle (or vertex) counts, which are in the millions, you are going to feel the effect of shading the same fragment many times and only keeping one value.

This is great insight, I will do some research on this.

This topic is closed to new replies.

Advertisement