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.-pre12: Java3D 1.6.0.-pre8: 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 |
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. |
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-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 |
Free forum by Nabble | Edit this page |