Dave,

Thanks for the analysis. The reason why the multi-texturing performance
is much better when you put everything into one geometry array is
because currently we are using vertex array for multi-textured geometry array.
So we are comparing one glDrawArray call for the one geometry array case
vs 1296 glDrawArray calls for the 1296 geometry array case. On the
Solaris platform, we do have the glMultiDrawArray to put multiple
geometry arrays in one single call, but glMultiDrawArray is an opengl
extension and might not be supported by other vendors.

In Java3D 1.3, we'll look into putting the multi-textured geometry array
back into a display list.

Thanks for bringing this up.

Charmaine Lee
Java3D Engineering Team



> MIME-Version: 1.0
> Content-Transfer-Encoding: 7bit
> X-Priority: 3
> X-MSMail-Priority: Normal
> X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200
> Date: Fri, 23 Mar 2001 00:16:01 -0500
> From: David <[EMAIL PROTECTED]>
> Subject: [JAVA3D] Java3d performance analysis (possible bug found)
> To: [EMAIL PROTECTED]
>
> 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".

===========================================================================
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