JPCT vs JME vs Xith3D vs ... benchmark

Ok… I will have trouble to compete with that model, 3DzzD only handle 3ds (and 3dz ) files for now and this model have object with more than 65536 face wich make my converter unable to convert the obj to 3ds :frowning:

so here is my tech/bench demo :

http://demo.dzzd.net/View3D/TANK.html

only 80000 faces but within a fully unsigned Java 1.1 Applet :), once loaded you can switch to Hardware by pressing the H keys

you can download the 3ds model and its texture here :
http://demo.dzzd.net/View3D/TANK.ZIP

the software rendering have the followig feature enabled :

  • real per pixel phong shading
  • diffuse texture with advanced bilinear filtering (& more… some kind of anysio) + mipmap
  • more than double precision z (not a fixed zbuffer)
  • edge antialiasing up to 1/256em pixels precision


the hardware rendering is :

  • gouraud shading
  • diffuse texture set to high quality (but depend on your gpu setting) + mipmap
  • fixed 32 bit precision z buffer

the funny or not funny … is that on this particular model the hardare rendering is slower than the software on my AMD 1.6 + ATI X800…

EDIT:
you can go back to software rendering with S key, the framerate is printed in the java console every 200/250 frames

Cool, thanks for being nice enough to post updates. :slight_smile:

I noticed in another thread you mentioned using the in-app FPS counter to measure speed. If you are just using the model loading tests, they have debugging and a render-to-texture graphing system which is probably where some of that 60FPS difference between jME and jPCT is going to. Of course in a real application you’d not have those things (but they are pretty to look at in samples.) Also, I’d suggest using a standardized method of measuring FPS (like fraps).

very good looking demo, I tried it on my crapy computer I got 17fps (1.6Ghz + ATIX800), and it hang for 1 or 2 seconds every 10 seconds.

if you provide JME and/or xith demo I will test them too and post results back.

I would like to also test straight from LWJGL, as a speedy VBO object.

I would like to test the tank, DzzD can you please post the view settings?

like perspective if any, or is it Ortho?
intial scale, position from camera and such.

and how do I view the FPS in the tank applet demo?

I tried fraps, but it actually slows down things on my machine. With FRAPS enabled, jPCT is at 530 and JME at 480…(not only judging from the FRAPS values but also backed up by the internal counters) ???

Yeah, it does slow things down, but it should be more or less consistent anyhow. :slight_smile: I guess my point is that if you use that combination graph/chart/fps display in the jME tests to gather your frame counts, you’re introducing stats collection, chart management and RTT overhead on the jME side so it’s less than an even comparison. You could add a line to the Test’s constructor to remove all that. Here’s how you would do it on the included Obj test:

    TestObjJmeWrite() {
        super();
        System.clearProperty("jme.stats");
    }

Ok, i’ll try that later and post the results.

I will post camera settings tonight, it is a standard 3ds max camera, the framerate is printed in the java console ( or do you mean “first person shooter” or “frame per second” ? )

EDIT :
for the framerate : 3000 mean 30 (it is fps*100)

EDIT 2:
ok for the camera seems that I ve used one that is in the 3ds file named “Camera01”

the properties are :

in 3d studio max (z is up):
FOV 45°
position : 1338,-3691,1231
rotation : 72,0,20.5

in 3dzzd (y is up) :
FOV 45°
position : 1338,1231,-3691
rotation : 72,20.5,0

depending on your axis (right hand/left hand) you have to use one of this settings

And here are the results: It doesn’t matter performance wise on my machine if i disable the stats or not when not drawing them. The performance measured with FRAPS stays the same (but is still lower than without FRAPS). When drawing the stats, there’s a slight drop of 5-10 fps, i.e. maybe we can add another 5-10fps to the score of 520 for JME, which leads to 525-530 with stats disabled.

Ok, i’ve tried that…it doesn’t do any good. Performance stays at 120fps.

IIRC the compile() method was an “insert optimisation here” placeholder but no version of J3D actually got around to implementing any optimisation based on it.

Now for the tank…i’ve converted it to OBJ format first to ease testing. So i could reuse my existing test applications without changing anything except the filename and maybe the scaling.

I wasn’t able to load it with Java3D (it bombed out with a nullpointer exception when loading the materials), so i skipped this. The numbers for JME are taken with the build-in stats tool and backed up by FRAPS (had to write the fps to a file, because FRAPS’ onscreen display stops at 999). I’ve added 5% to the JME score to compensate for the stats tool’s display. This seems to be reasonable judging from the results with the car. Of course, lockMeshes() has been used.
For 3DzzD, i’ve tested it in IE8 and Firefox3 and got the same results. An applet isn’t a very good environment to test performance IMHO but it’s all i got, so…

Here are the numbers:

jPCT: 3500fps
3DzzD: 2100fps
JME: 2000fps
xith3D: 1800fps

Edit: Test system was the usual quadcore mentioned above…

Edit2: Updated the 3DzzD scores with the results of the fixed version.

I think Java3D does some optimisations like collapsing TransformGroups, but the impact is minimal. The important optimisation here is compiling display lists of the static geometry. This is done anyway since it checks the capability bits and sees that it is static. I’m a little disappointed with Java3D. I had expected it to run at about 50% of the others. I guess you don’t have a moniter set at 120hz? Java3D will try to lock to the refresh rate.

No. It’s a TFT running at 70 and i’ve disabled VSync in the driver settings anyway, because i never use it.

[quote]For DzzD, i’ve tested it in IE8 and Firefox3 and got the same results. An applet isn’t a very good environment to test performance IMHO but it’s all i got, so…
[/quote]
not so bad if you tested in software mode ?

something seems to go wrong since some time with the hardware renderer, dont know really what…

No, i’ve tested hardware mode only.

ok you will probably get better results with software… as I said this is the case on my computer (soft is about 2 times faster then the hardware) and the hardware is basically a bunch of display lists (cutted in an octree) so nothing related to renderer it should give arround the same result as other as all is done GPU side, I try to see if I can catch what is going wrong with it.

I have updated the hardware renderer on the applet

still something going wrong but I got a first stupid problem resolved, it should run faster now… but I am still missing something with it because it eat 100% cpu.

[quote]jPCT: 3500fps
JME: 2000fps
xith3D: 1800fps
DzzD: 39fps
[/quote]
I got it :),

once again a stupid bug, the demo is updated you can check it again for a proper bench, I got 170 fps on my crappy computer (the same I got 16fps with jpct on the car demo).

NB: the 3d engine name is 3DzzD (DzzD is my internet nick since 12 years…)

here it is :
http://demo.dzzd.net/View3D/TANK.html

NB : It will start in software mode press H and accept signed popup to switch to hardware, fps is printed in the java console 3000 means 30fps

EDIT:
one interresting thing to notice is that (for 3DzzD) it use 80Mb with IE6 in software mode and arround 100Mb once switched to hardware (but no more than 65Mb of java heap space so it dont exceed Applet memory limit)

Works MUCH better now…2100fps on my machine. I’ve updated my post above with the new result and changed the name to 3DzzD.