Skip to main content
GameDev.net gamedev.net
🔒 Locked

How many triangles can your engine handle

Started by lv Jun 29, 2004 at 7:10 AM 20 replies 7.9k views
Original Post
lv
lv
Hello I am interrested in knowing how many triangles/polygon your engine can handle render in one frame(after culling only the vertices really sended to the gpu) when it is used in agame(with KI and all the other stuff) Of course i know that i can not get a numer here because it is very depending on the hardware. But an approximate number on an "newer" pc(for example 2GHZ,Radeon9700,512MBDDR) It would really help me to check how much optimization my engine still needs. thx
jollyjeffers
jollyjeffers
Mine handles about 225,000 per second @ 1500fps [grin] but its a 2D game running under the debug runtimes (on a 3ghz/R9800 system).

Sorry, I know it wasn't the immediate answer you're looking for... but couldn't help but reply with my suitably low-scoring engine!

Jack
<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ |
technobot
technobot
Quote:
Original post by lv
It would really help me to check how much optimization my engine still needs.

Figure out your target framerate and target system(s). Profile your game on those systems. If the desired framerate is acheived, you're done. Otherwise, use the profiling data you've gathered to identify the largest bottleneck, then optimize it away. Repeat until done.

EDIT:
You asked how much optimization your engine needs, so this is the answer you get. Had you asked how much optimization your engine can receive (assumming it does nothing but graphics - otherwise it gets more complicated), I would direct you to visit the sites of the manufacturers of the various cards you're targeting. They should have detailed performance estimates for their cards (i.e. theoretical maxima for vertex and pixel throughput). How much performance other people get in their engines is really not that relevant. You must learn to ask good questions if you want good answers. Hope this helped.
Michael K.
Trienco
Trienco
Quote:
Original post by lv
Of course i know that i can not get a numer here because it is very depending on the hardware.


and thats the problem. its not even so much a question of hardware, but what the engine is doing. most here could throw together an "engine" pushing a scene with a million or more triangles at good fps on fx cards and higher.

but nobody wants a crappy looking engine with "naked" polygons. so unless you specify ALL the features you expect (like 3 textures per polygon + fancy normal/bumpmapping, stencil shadows, complex lighting and whatnot all numbers are pretty useless).

so, if i say i can push 2.75 million at 30fps, what would that help if your engine is supposed to do a lot more complex stuff and fancy texturing?

if its fast enough its fine, if not it needs optimizing.
f@dzhttp://festini.device-zero.de
Etnu
Etnu
Looking like crap, or looking good?

Looking good (using moderately complex shaders and multiple textures on every surface), I can push about 15 million triangles per second on a Geforce FX 5900 + Athlon XP 2000+.

Looking like crap (no shaders, single texture), I can push around 30 million triangles per second.

My average scene runs about 100,000 - 250,000 triangles.
---------------------------Hello, and Welcome to some arbitrary temporal location in the space-time continuum.
lv
lv
Quote:
if its fast enough its fine, if not it needs optimizing.

or to cut down the model`s triangle count

But thanks for your answers i think that i still need a lot more optimization to get to the 100.000 Tris Etnu mentioned and i have not really complex shaders or something like this.

Raloth
Raloth
I can do 200 million if it's a pretransformed triangle strip with an index buffer of 0,0,0,0,0,0,...

Conclusion: Triangles don't mean squat.
____________________________________________________________AAAAA: American Association Against Adobe AcrobatYou know you hate PDFs...
Etnu
Etnu
I don't think even with that that any video card on the market can push that many tris.
---------------------------Hello, and Welcome to some arbitrary temporal location in the space-time continuum.
technobot
technobot
Quote:
Original post by lv
Quote:
if its fast enough its fine, if not it needs optimizing.

or to cut down the model`s triangle count

Unless you don't mind reducing the visual quality, you should try to optimize first.
Quote:
Original post by Raloth
I can do 200 million if it's a pretransformed triangle strip with an index buffer of 0,0,0,0,0,0,...

Conclusion: Triangles don't mean squat.

If you're index buffer is 0,0,0,0,0,0,... then you're essentially sending 0 triangles, since new cards discard degenerate triangles entirely. So your conclusion means squat.

Note: please don't take my sarcasm personally. It's just the way I am.
Michael K.
Raloth
Raloth
I'm just saying, you can do a lot without that many triangles. With fancy pixel shader effects you can dramatically improve the look of your game without any additional triangles (bumpmaps, normalmaps).
____________________________________________________________AAAAA: American Association Against Adobe AcrobatYou know you hate PDFs...
lv
lv
maybe i should say it more clearly.
If you have coded a game how many triangles do you send to the
gpu in one frame.

So i do not want to know how many 0|0|0 tris you can send.
Etnu
Etnu
Again, as every person has replied: IT DEPENDS ON THE SCENE.

Triangle count is no better an indication of performance than frame rate is.

When I render JUST my UI, it draws 45 triangles (total) at 2400 FPS. That's only 108,000 triangles per second. WTF?

Look at the total amount of time required to render each frame. That's really the only performance measurement that matters.
---------------------------Hello, and Welcome to some arbitrary temporal location in the space-time continuum.
Promit
Promit
What we're trying to say is that your question is bad.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Charles B
Charles B
Yes polycount used to be meaningful some years ago, but today the only asnwer should rather be as much as needed to let no polygonal outline kill the overall realism. And it's usually far less than what a card can do in theory. Leave the polycount perfs for unoptimized engines.

Beyond the absurd boundaries of having triangles of 10 pixels of less, what counts is let geometry or other kind of data be put into the texture layers.

Self shadowing, displacement maps render the polycount issue nearly pointless.
"Coding math tricks in asm is more fun than Java"
kburkhart84
kburkhart84
The best answer I can give you is to another question. Don't compare your engine to others for one. You will lose confidence because there is always something better. Two, don't go by FPS or polycounts anyway. If yours looks awesome and goes 30fps, the competition looks crap, goes 60fps and puts more polys on the screen, yours is still better. besides, 30 fps is enough anyway. Instead of counting polys, as was before posted, shade, light and bumpmap a few. A few special effects and something fun to play will be better anyway. Make it look cool and run fast enough. Who cares about the rest.

*edit, I don't have much a a real engine. I have a group of classes that represent OpenGL and Game objects to make it easier. I have objects for window with OpenGL, textures, OGL display lists, OpenGL fog, the lighing system, input, a soundsystem, etc... So it is kind of an engine. With good textures and a little know how, my classes can be used to create something good looking and fast, but I have never counted my polygons because I dont't care too much about how it compares.


Jimmy Valavanis
Jimmy Valavanis
Just a note:

If you are using Direct3D then you can achieve
about 50% gain of speed (depending on the scene you render)
if you render triangles with the same texture in a single DrawPrimitive call.

That is:
// First non-optimized method
-----------------------------
// Draw 100 polygons with 100 triangles each
for i := 0 to 99 do
D3DDevice7.DrawPrimitive(D3DPT_TRIANGLELIST, D3DDXFVF_VERTEX, Vertexes[i*100*3], 300, 0);

// Second optimized method
-----------------------------
// Draw one polygon with 10000 triangles
is much slower than
D3DDevice7.DrawPrimitive(D3DPT_TRIANGLELIST, D3DDXFVF_VERTEX, Vertexes[0], 30000, 0);

My Engine gives about 60 fps with 200.000 triangles drawn per
frame (~12 million triangles per sec) using the second optimized vesrion and only 42-45 fps (~9 million triangles per sec)
using the first non-optimized version.
(AMD2600+ GeForce4800Ti)

Fruny
Fruny
My engine can do a sustained NaN triangles per second, 120 FPS, at 1600x1200x32, on a S3 Trio.
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan
DigitalDelusion
DigitalDelusion
Quote:
Original post by Fruny
My engine can do a sustained NaN triangles per second, 120 FPS, at 1600x1200x32, on a S3 Trio.


Darn! have you stolen my well guarded "black screen" rendering technology?
HardDrop - hard link shell extension."Tread softly because you tread on my dreams" - Yeats
Fruny
Fruny
Quote:
Original post by DigitalDelusion
Darn! have you stolen my well guarded "black screen" rendering technology?


These are not the pixels you are looking for.
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan
DigitalDelusion
DigitalDelusion
Quote:
Original post by Fruny
These are not the pixels you are looking for.


I guess they're in another castle then.

Anyhow to get a bit on-topic again let's just reiterate what has been said thus far.

Today tri count isn't really a good measurement espically not in modern engines where pixel and vertex shaders take up much more work than the geometry multitexturing etc.

With that said, tri-count does count if you get bandwith limited so good culling is needed, but on the other hand if you cull at a to low level you're wasting CPU cycles and not utilizing your GPU to its maximum.

This really is a jungle isn't it?
HardDrop - hard link shell extension."Tread softly because you tread on my dreams" - Yeats

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.