Your numbers sound OK for performance with small tris.
Just did a test with some of my own Java renderer, and using small tris ( around 10pixels on edge length) on a 640x480 screen, I get 6,600 flat coloured tris per frame at 18.5 fps, giving 122,000 tris per second rendered (on an Athlon 1.8GHz).
[quote]I see what you’re getting at - but in that argument it’s the frame rate that is the important thing - if the polygon fill the frame, you’ll only need to draw 50-something of them a second…
[/quote]
Depends on the scene overdraw. Its usually quite rare to know beforehand that the closest poly covers the scene.
The point about fill rate is two-fold:
-
an object has 100-1000 tris. A tri has 100-1000 pixels.
So the pipeline scales by 2-3 orders of magnitude as you go from object->poly->pixel.
Your pixel pipeline has up to 1,000,000 times more influence on the time taken than the poly setup. This is also important because:
-
The slowest part of a software renderer is the system bus. For example, a 133MHz 32bit bus can shift (peak) 133,000,000*4 = 500MB per second.
A 800x600 32bit frame is 1.8MB, but it needs to be read by the CPU, written back, and then sent to the hardware, = 3 trips over the bus, so 5.4MB per frame. This alone will cost 11ms on this theoretical bus. If you have to clear the screen each frame too, thats another 7ms spent (2 bus trips), and this is without any other CPU processes running!
This bus limit is the one you will tend to hit first with a software renderer, and will probably be the bulk of the time spent while rendering.