Render Quality with and without pipeline enabled

Hello,

I just realized, that renderings with the pipeline enabled looks a lot nicer than with pipeline disabled.

I would have thought that only the speed can be increased with the pipeline. The rendering is more antialiased and and and… the speed in comparison is very good (as I expected).

Can those applied quality improvements be done “by my own” when the pipeline is disabled?

Thanks for answers
Klemens

what pipeline are you talking about? :slight_smile:
the one that accelerates graphics2d stuff when using java6?

Yes sorry… I mean the java2D-opengl pipeline which came with java 5/6.

Are you talking about Java 2D rendering, or rendering with JOGL?

JOGL’s rendering quality should be unaffected when the Java 2D / OpenGL pipeline is enabled. All you should see is a speed increase. However, yes, you will probably see rendering quality differences when the Java 2D / OpenGL pipeline is turned on; at least rotated / scaled images will probably have better quality. You may be able to get these improvements by using the java.awt.RenderingHints class, though expect a performance penalty for turning up things like the interpolation quality.

I’m talking about the jogl-quality…

I’ll post 2 screenshots tonight when I’m at a pc with a “pipeline ready” graphics board.

There’s a really big difference in my opinion. By the way I’m using a transparent gljpanel on the glasspane and let it compose with the underlying swing-content.

The attachments show active versus inactive pipeline renderings. Indices 1 and 3 are made with active pipeline, 2 and 4 are made with inactive pipeline.

Shot 3 doesn’t have those ugly dark borders in the left. Therefore the inactive pipeline results in some kind of smooth antialising. (Note: Shot 3 and 4 don’t have a special outline rendered by me… this outline comes from somewhere I don’t really know)

The getchoosenGLCapabilities results in null while the pipeline is active and returns in GLCapabilities [DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red: 8, Green: 8, Blue: 8, Alpha: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false ] with pipeline disabled. I use the MultiSampleCapabilitiesChooser from the demos.

Edit: After switching to the rc4 and placing the getChosen… within the init method I get the following caps:

pipeline disabled: GLCapabilities [DoubleBuffered: false, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 8, Red: 8, Green: 8, Blue: 8, Alpha: 8, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: true, Num samples: 4 ]
pipeline enabled: GLCapabilities [DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red: 8, Green: 8, Blue: 8, Alpha: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false ]

Unfortunately I’m not able to show the mentioned quality gain with the pipeline but there’s at least a problem with antialising. Maybe all those differences come from the “null” capabilities. Nevertheless perfomance is great with pipeline enabled ;D

Thanks for any comments…

Greets Klemens

I see what you’re saying but I don’t know what could be causing it. If you can boil this down into a small and self-contained test case, feel free to file a bug with the JOGL Issue Tracker (you’ll need to be an Observer of the project to properly do this) and attach it.

hmm…

I think the problem is related to the different capabilities which are chosen… next week I’m testing on a nvidia board… this shot were taken on ati hardware…

It seems, that the pipeline disables multisampling when enabled…

I’m also able to reproduce this. To get better rendering I enabled multisampling by setting the following capabilities:

capabilities.setSampleBuffers(true);
capabilities.setNumSamples(8);

and enabling multisampling:

gl.glEnable(GL.GL_MULTISAMPLE);

Looks great (no jagged edges) on a GLCanvas, but on a GLJPanel it looks the same with or without these capabilities set.

Chris

[quote]I just realized, that renderings with the pipeline enabled looks a lot nicer
[/quote]
hardware rendering is very GC dependant, as all GPU have different properties and also as you can set them fixed in your GC properties dialog, so render can differ a lot with different hardware. for example if you open your GC properti dialog and set antialias=no or antialias=anisitropie4*4 this will result in a huge quality difference, I dont see what’s wrong with your screenshot , it just seem that your GC have antialias disable or cannot produce it , no?

The problem is, that the Java2D OpenGL Pipeline and the default GLJPanel codepath seem to have different default capabilities.

However the pipeline seems to be almost broken with newer cards.

We’re going to be doing some work on both the Java 2D OpenGL pipeline as well as the GLJPanel within the next week or so to both make the Java 2D OpenGL pipeline more reliable in general as well as to change how the GLJPanel works when the OGL pipeline is enabled. Hopefully this will improve the situation as well as make the GLJPanel work properly within Scenario when the OGL pipeline is turned on.