JavaFX Graphics Stack

its rather a bug in the jre version detection mechanism used in javafx deployment script than a bug in the jre. The script detects a wrong java version and triggers the install process.
The bug is already fixed since last week i am only wondering why they haven’t yet updated the script.

far as i can tell

anything under 12fps is not usable at all.
anything under 20fps that animates looks poor.
anything under 40fps will still look poor on a monitor because of screen refresh.
anything around 50-60fps is good (60 is fine).
anything over is very nice.

simple really. oh and applications tend not 500*300 square- really.

on my mac (brand new one); all of them are under 12fps apart from pulpcore that is rendering the shapes into an image so its moot anyway (plus the window and ress is smaller). flash wins because the application deployed without hassle, and run.

my mac is the screen of my live O.O

oh sorry Unity3d wins :wink: coss it has the framerate and works.
just hassle to make things…

While I appreciate the reason, it doesn’t seem a particularly valid stand-point when this (very low-end) netbook is powerful enough to run Quake3 @1024x600, maximum detail and maintain a solid 40-60fps.

Or for a slightly more fair comparison, jake 2 running through a next gen applet manages a less impressive 30-60fps.

Regardless of the reason for the performance, it seems farcical that JavaFX is only able to render 128 identical images at a pathetic 5-6fps.

To me it seems there is a serious misunderstanding on what JavaFX is trying to achieve.

If it is trying to dislodge flash from the low-end casual web app. market, it MUST be performant on low-end hardware. (a.k.a. integrated intel graphics)
As is abundantly clear Java2D is anything BUT performant on this kind of hardware so it seems absolute lunacy to even attempt to build JavaFX ontop of such a pipeline.

Not that it really matters, but the PulpCore version is 500x300 just like the rest of them, and uses bitmaps just like the optimized Swing version. Latest version is here for the curious: http://www.interactivepulp.com/pulpcore/bubblemark/

JavaFX w/ bitmaps will eventually be fastest since it uses hardware acceleration, it just needs tuning of the scene graph & dirty region handling.

the javafx version on the blog uses bitmaps too (see radio button) i only posted the results for the bitmapped version…

Presumably for it to be a fair comparison with the others, it is applying sub-pixel interpolation.
'cos otherwise pulpcore blows it out of the water by an even greater margin (as is demonstrated by enabling pixel-snapping on that latest pulpcore version you linked to)

Right. Except that you don’t care about quality or stability when running Quake. If it crashes, oh well, you just restart.
If your business app crashes, it’s another story. Or if your nice gui with graphs looks like crap, you’d be upset too.

Of course. Completely agree. And this is being worked on.

What does pure Java2D/Swing bubblemark get on your system vs flash? JavaFX has to be at least as performant as pure JavaFX/Swing version, the difference is due to known scenegraph issues having nothing to do with Java2D.

Regarding Intel chips. How would you like to run a little java applet that will reboot your system? Yes, their drivers are that bad. Not every app would run into that, but it’s easy to abuse.

Also, some Java2D-only operations (like the shader for rendering lcd text) is super slow on intel chips, so we couldn’t enable the pipeline there by default.

Noone said that JavaFX is limited to Java2D rendering backend though.

Dmitri

Thanks for clearing that up. So, we know what JavaFX targets on the low-end. Are there any plans for some more advanced functionality in the future? Obviously you can’t have shaders and better OGL integration in JavaFX without Java2D/Swing support, so I’m not talking about JavaFX exclusively here.

Yes thanks for explaining all of that Dmitri. What a pity about those intel drivers. Unfortunately they’re very common since few business computers have graphics cards.

By the way Spasi, cool effects using the GPU have been available for a while using ‘Decora’ which uses java2D’s D3D pipeline if available, or else uses a software pipeline fall-back There’s a demo of it here: http://weblogs.java.net/blog/campbell/archive/2008/02/index.html

And there was also a demo on the JavaFX site that had effects like BLOOM etc.

Please have a look here then for the LWJGL benchmark :slight_smile:

great, 780fps.
anyone interested to port the benchmark to JOGL? (just for completeness)

280fps - that’s more like it :-*

It’d go faster in pure OpenGL, the applet uses Slick for a comaprable API to something like Java2D/Flash etc. Brute forcing it in raw GL is most likely going to give even better performance in JOGL/LWJGL.

Kev

yes of course feel free to post also a pure LWJGL/JOGL version. This should give us a idea of the best possible performance for the given hardware in java. I would write the benchmark myself (indexed VBOs yeha!) but i have to write exams soon thats why i try to stay away from code.

Indexed VBOs won’t do much for simple quads. What you want is D3D instancing on windows, pseudo-instancing for older GPUs with vertex shader support on OGL, or ARB_draw_instanced for modern GPUs.

maybe they would, they wont accelerate anything on the gpu because it will be idle anyway but they reduce JNI overhead to a minimum. Without trying it i am almost certain that we will get CPU limited in those high frequencies earlier as we expect.

Implementing the whole thing in a shader would be interesting too :slight_smile: (draw instanced per quad LOL - don’t tell this anyone - but it could work)

but why not? A FPS competition sounds cool :wink: my last exam is on 3. February

[quote=“bienator,post:57,topic:32681”]
Hehe, I’m up for it. :stuck_out_tongue:

Lets define minimum hardware requirements etc and I may be able to hack something fast this weekend.

let move the contest to a different thread: http://www.java-gaming.org/index.php/topic,19757.0.html :wink:

Gunning for maximum fps in this benchmark is meaningless (and so is the benchmark really).

What you want to ask is this:
how many balls can I show at given fps (say 60), highest number of balls wins (cpu usage can be taken into consideration if the scores are the same)

I have such benchmark for Java2D (which was originally created by none other than Abuse I believe :slight_smile: )… It’s changed since but the idea is the same. If Abuse doesn’t mind I can post the project somewhere.

On my system with 1280x1024 on win XP on 6u12 (in windowed mode) it gets 3844 transformed/scaled alpha-composited balls (non-opaque images) at 30 fps just using Java2D.

Dmitri