I have a friend who is working on a project using OpenGL.  He ran an
experiment
on the same card I am using.

He drew 40 houses.  40 * 1600 polygons came out to 64,000
polygons and I got around 110 FPS.  That came out to right around 7 million
textured polygons per second.

I was amazed by that performance, so I ran some tests

Tests performed on a Geforce II GTS in Java3d.
All with 1 shape, 216 boxes with 6 sides in 1296 geometry arrays.

quads, 2 tex units : 39 fps
quads, 1 tex unit : 219 fps

triangles, 2 texture units : 39 fps
triangles, 1 texture unit : 284 fps

tristrips, 2 texture units : 39 fps
tristrips, 1 texture unit : 248 fps

(note: textures in both units are mipmapped. Changing the second unit from
MULTI_LEVEL_LINEAR to BASE_LEVEL_LINEAR did not improve performance.
Changing the perspective correction from NICEST to FASTEST also has no fps
improvement)


Now I did it with 2 shapes, one of the box sides was a different shape and
appearance
All with 2 shapes, 216 boxes with 6 sides in 1296 geometry arrays. One shape
had 1080 geometry arrays, one shape had 216 geometry arrays.

quads, 2 tex units : 24 fps
quads, 1 tex unit : 200 fps

triangles, 2 texture units : 24 fps
triangles, 1 texture unit :  280 fps

tristrips, 2 texture units : 24 fps
tristrips, 1 texture unit : 248 fps


As a final experiment I wrote a TriangleArray masher which took all the
seperate geometry arrays in a single shape and put them all in one triangle
array....

And get this.. the fps jumped to 180 with multi texturing, but had NO impact
when only using one texture unit! I also changed 2 faces to use entirely
different multi-textured shapes and the fps dropped to 170.

I don't have the numbers to prove it, but I suspect that  the overhead of
multi-texturing is much higher than it should be, and it is felt everytime
there is a geometry array sent to the card.  So adding more and different
shapes with corresponding multi-textures would result in performance
degragation far outstripping the cards own performance hit.  This
performance hit was just made worse when I sent so many multi-textured
geometry arrays to the card, even in one shape.

Conclusion.. there is a performance bug when you are multi-texturing in the
state change from one geometry array to another. (my guess is they are
rebinding the second texture unit on each geometry array, regardless if it
doesn't change)

As a final test, I increased the number of boxes to 1000, which is 1000*6*2
textured triangles (12k).  That was rendered in 180 fps, which is 2.16
million triangles per second. I am not unhappy with that performance,
although I would think it would be higher.  I am not ruling out that my
per-frame code is causing the difference.

As a final thought... The old fashioned method of multi-tetxuring required a
2nd pass. This caused about a 50 percent drop in framerates.  The result
above show that multi-tetxuring is rendering at 64 percent of a single
texture unit.  I think it should be around 80 percent.

Dave Yazel
Cosm Development Team
http://www.cosm-game.com

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to