Testing text antialiasing: Java3D 1.6.0.-pre8 vs. 1.6.0-pre12

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Testing text antialiasing: Java3D 1.6.0.-pre8 vs. 1.6.0-pre12

Alexei A. Morozov
Dear colleagues,

I have compared text antialiasing in different versions of Java3D: 1.6.0.-pre8 and 1.6.0-pre12. I was surprised that the results are different. See figures below.

Java3D 1.6.0.-pre8:
Java3D 1.6.0.-pre8

Java3D 1.6.0.-pre12:
Java3D 1.6.0.-pre12
Java3D 1.6.0.-pre8:
Java3D 1.6.0.-pre8
Java3D 1.6.0.-pre12:
Java3D 1.6.0-pre12
Could you please explain me what is the reason for this difference? Can I control antialiasing somehow? The point is that the previous version (pre8) looks better. Edges of the letters are more refined and digits look smoother IMHO.

The attributes of scene antialiasing are the same:

cv.getSceneAntialiasingAvailable() = true
((Boolean)cv.queryProperties().get("sceneAntialiasingAvailable")).booleanValue() = true
cv.queryProperties().get("sceneAntialiasingNumPasses") = 1
map: {textureEnvCombineAvailable=true, textureImageUnitsCombinedMax=32, textureAnisotropicFilterDegreeMax=16.0, texture3DHeightMax=2048, textureLodOffsetAvailable=false, texture3DDepthMax=2048, textureLodRangeAvailable=true, textureHeightMax=8192, textureFilter4Available=false, doubleBufferAvailable=true, compressedGeometry.majorVersionNumber=1, stereoAvailable=false, textureAutoMipMapGenerationAvailable=true, sceneAntialiasingAvailable=true, compressedGeometry.minorVersionNumber=0, texture3DWidthMax=2048, compressedGeometry.minorMinorVersionNumber=2, vertexAttrsMax=10, shadingLanguageGLSL=true, sceneAntialiasingNumPasses=1, native.vendor=NVIDIA Corporation, textureUnitStateMax=4, native.version=2.1.2, textureImageUnitsMax=32, textureNonPowerOfTwoAvailable=true, textureBoundaryWidthMax=1, native.renderer=G92-100/PCI/SSE2, textureCoordSetsMax=8, texture3DAvailable=true, textureImageUnitsVertexMax=32, textureWidthMax=8192, stencilSize=0, textureCombineDot3Available=true, textureDetailAvailable=false, textureCubeMapAvailable=true, textureSharpenAvailable=false, textureCombineSubtractAvailable=true, textureColorTableSize=0}


The test program is provided here: t100.java.

The computer configuration is standard one: Windows XP SP3, NVIDIA GeForce 8800 GS.

Thank you!

Alexei
Reply | Threaded
Open this post in threaded view
|

Re: Testing text antialiasing: Java3D 1.6.0.-pre8 vs. 1.6.0-pre12

philjord
Alexei,

A quick look at the Java3d source only shows one possible commit that might cause this.

pre8 vs pre12
https://github.com/hharrison/java3d-core/compare/1.6.0-pre8...1.6.0-pre12

Has 2 changes that look like they might impact anything in this area

initial fix for stereoscopic and double buffering graphics configurations
https://github.com/hharrison/java3d-core/commit/8593fa0991feb9c9baa85a83269fc50c755dff80
Doesn't seem to do much that would cause trouble

prepare to refactor the Font3D tesselation code
https://github.com/hharrison/java3d-core/commit/7a6102dbbb3660c6ce15aa4a64f3d289cbf09b59
This one add normals to the Font3D, which given you have lighting enabled does definitely affect the edge color.

On my screen I can't see the same difference you are seeing, but I can definitely see a difference.

You could run your tests again with pre8 and pre12 but replace the line
ap.setMaterial(new Material);

With these 3
Material mat = new Material();
mat.setLightingEnable(false);
ap.setMaterial(mat);

In your sample code and see it that removes the issue?

If it's not that then possibly you are using different Jogl version with a different default AA pass number? Can you confirm it's 2.3.2 with each?

You did already spot that it claims to be using multi-sampling in both cases.


Thanks,
Phil.

 

Reply | Threaded
Open this post in threaded view
|

Re: Testing text antialiasing: Java3D 1.6.0.-pre8 vs. 1.6.0-pre12

Alexei A. Morozov
Hi, Phil

Well, the modified test (t101.java) reports the same sceneAntialiasingNumPasses=1 in both cases and shows the similar difference between the figures:

1.6.0.-pre8:

 1.6.0.-pre8

1.6.0-pre12:

 1.6.0.-pre12

Yes, you are right. I forgot that the JOGL version was different:

1.6.0.-pre8: 2.0-b62-20120803

Manifest-Version: 1.0 Ant-Version: Apache Ant 1.8.2 Created-By: 1.6.0_31-b04 (Sun Microsystems Inc.) Specification-Title: Java Bindings for OpenGL API Specification Specification-Version: 2.0 Specification-Vendor: JogAmp Community Implementation-Title: Java Bindings for OpenGL Runtime Environment Implementation-Version: 2.0-b62-20120803 Implementation-Branch: rc Implementation-Commit: 9e87acd921bcb357f1ec88d166bde672b54b02c8 Implementation-Vendor: JogAmp Community Implementation-URL: http://jogamp.org/ Extension-Name: javax.media.opengl Implementation-Vendor-Id: com.jogamp Trusted-Library: true

1.6.0-pre12: 2.3-b900-20151009

Manifest-Version: 1.0 Application-Name: JogAmp Java Bindings Implementation-Title: JogAmp Java Bindings Fat Jar Implementation-Branch: origin/master Implementation-Version: 2.3.2 Specification-Vendor: JogAmp Community Specification-Title: JogAmp Java Bindings Specification Implementation-Vendor-Id: com.jogamp Application-Library-Allowable-Codebase: * Implementation-Vendor: JogAmp Community Main-Class: jogamp.opengl.awt.VersionApplet Permissions: all-permissions Implementation-Build: 2.3-b900-20151009 Trusted-Library: true Codebase: * Extension-Name: com.jogamp Specification-Version: 2.3 Implementation-Commit: cc1e9bc698b7f11097c1e114027e53121552f280 Implementation-URL: http://jogamp.org/ Created-By: 1.8.0_60 (Oracle Corporation) Name: com/jogamp/common/ Sealed: true Name: jogamp/common/ Sealed: true

In any case, I don't understand what happens with the text antialiasing? Should I ask this question in the JOGL forum?

Best regards,

Alexei