Java 3D 1.4.0_01 Release Notes

## Java 3DTM 1.4.0_01 Release Notes

This file contains important release information for users of the Java 3DTM API, version 1.4.0_01.

System Requirements (Solaris/Sparc, Solaris/x86, Linux, Windows)
Bugs Fixed in 1.4.0_01
Changes Since 1.3.2
More Information

Click here for instructions on how to install this patch release of Java 3D version 1.4.0_01.

NOTE: We recommend that you uninstall all previous versions of Java 3D before installing this version.

### System Requirements

The 1.4.0_01 version of the Java 3D API has been released for Solaris (both sparc and x86), Linux (both x86 and amd64), and Windows (32-bit).

#### Solaris/Sparc

The 1.4.0_01 version of Java 3D for Solaris/SPARC requires the following:

- JDK 1.4.2 or later (1.5.0 is recommended) from Sun Microsystems: http://java.sun.com/j2se/
- Solaris 9 or later
- Frame Buffer with OpenGL support (e.g., XVR-1200)
- OpenGL 1.3 for Solaris or later. To find your current version, use: "`pkginfo -l SUNWglrt`". OpenGL for Solaris can be obtained at: http://www.sun.com/software/graphics/opengl/

#### Solaris/x86

The 1.4.0_01 version of Java 3D for Solaris/x86 requires the following:

- JDK 1.5.0 or later from Sun Microsystems: http://java.sun.com/j2se/
- Solaris 10 or later
- NVIDIA Frame Buffer with OpenGL 1.3 or later

#### Linux

The 1.4.0_01 version of Java 3D for Linux (x86 or amd64) requires the following:

- JDK 1.4.2 or later (1.5.0 is recommended) from Sun Microsystems: http://java.sun.com/j2se/
- Graphics adapter with driver that supports the GLX extension: GLX 1.3 or later and OpenGL 1.2 or later

#### Windows

The 1.4.0_01 version of Java 3D for Windows 2000, and Windows/XP (32-bit) requires the following:

- JDK 1.4.2 or later (1.5.0 is recommended) from Sun Microsystems: http://java.sun.com/j2se/
- Windows 2000 or Windows/XP
- Support for either OpenGL or DirectX as shown below.

OpenGL version

The (default) OpenGL renderer of Java 3D requires OpenGL 1.2 or later, available from your graphics card manufacturer.

DirectX version

The (optional) DirectX renderer of Java 3D requires DirectX 9.0 or later, which is available from Microsoft at: http://www.microsoft.com/windows/directx/ . The DirectX version of Java 3D is selected by setting the "`j3d.rend`" system property to "`d3d`", for example:

`java -Dj3d.rend=d3d ClassName`

### Bugs Fixed in 1.4.0_01 Patch

The following bugs (issues) have been fixed in the 1.4.0_01 patch release.

Issue |  | Description
--- | --- | ---
160 |  | AlternateAppearance behaves differently in J3D 1.3.2 comparing to J3D 1.3.1
244 |  | ClassCastException in Group.setChild
249 |  | NullPointerException in MasterControlThread when adding a Light

NOTE: the fix for issue 249 (as well as 160) was to disable the "sole user" optimization, which was originally done to optimize the updating of frequently changing appearance attributes in cases where there was only one Shape3D using a particular Appearance. This optimization came at the expense of rendering performance in some cases, and was also the source of several bugs. Now that this optimization is disabled, rendering performance and stability should improve for most applications, but some applications may notice a slow-down in update performance. For this reason, we have added a new system property to re-enable the sole-user optimization.

- `j3d.allowSoleUser` – If this flag is set to true, the 1.4.0-fcs behavior is restored, causing the sole-user optimization to be allowed when appropriate. The default value is false.

### Changes Since 1.3.2

#### New Features

Thw following new features have been added to the 1.4 version of the Java 3D API. Please refer to the API documentation, or the JSR-926 change log for more information.

- Programmable shader support
- Changed default values for all read capability bits
- Enhanced picking API
- Stencil buffer support
- New rendering attributes
- Other minor features and API changes

#### System Properties

The following system properties were added in Java 3D 1.4.0:

- `j3d.shadingLanguage` – sets the shading language to use for programmable shaders. Supported values are: "GLSL" or "Cg". The default value is "GLSL".
- `j3d.simulatedMultiTexture` – If this flag is set to true, simulation of multi-texturing will be done on systems that don't have sufficient texture units. The default value is false. This does not work with programmable shading, and will not be supported in 1.5.0.

#### Issues Fixed

Issue |  | Description
--- | --- | ---
17 |  | DirectX GraphicsConfiguration Issue
67 |  | Transparency mode update didn't get reflected correctly
78 |  | Rendering stops if there's an exception in the EventDispatch
100 |  | Offscreen Capture crash JVM
109 |  | Frame Delays in Mixed Mode Rendering
116 |  | Handling of picking on OrientatedShape3D needs clarification
117 |  | Texture subimage is not optimized for large subimages
124 |  | Improve picking performance / reduce garbage generation
127 |  | Geometry Picking fails when Shapes use Color4
129 |  | NPE when removing an opaque object that used to be transparent
132 |  | BufferedImage getData slow, causing poor Yup perf with updateSubImage
133 |  | NullPointerException, PickCanvas with GEOMETRY_INTERSECT_INFO and BoundingPolytope
134 |  | Canvas3D memory leak
135 |  | Java3D 1.3.2+ using DirectX 9.0
137 |  | Add new depthTestFunction attribute
138 |  | Add method to retrieve tessellated geometry from 3D font
139 |  | add other rasterOp modes.
140 |  | Object Leak in PickResult
141 |  | DirectX 9.0c for Java3D 1.4, including shaders
144 |  | ExponentialFog blending factor depends on canvas size
145 |  | Add stencil buffer support
146 |  | Additional blending functions in TransparencyAttributes
163 |  | Regression in view frustum culling
164 |  | Cannot load j3dcore-ogl-cg.dll library in JRE bin directory
167 |  | Transform3D reports matrix with NaN to be affine
169 |  | TextureLoader should throw an exception instead of printing cryptic message to System.err
170 |  | TextureLoader should throw exception when loading image
175 |  | OffScreenRendering: Issue with Updating Texture Size from Behavior
181 |  | Performance regression: j3d.optimizeForSpace=false ignored for some geometry
182 |  | ShaderProgram not implemented for immediate mode rendering
183 |  | NPE if CLOSEST_INTERSECTION_POINT is only flag
184 |  | Illegal return value if flag NODE is omitted
185 |  | "Missing" essential methods in IntersectionInfo
186 |  | Using new Pick API with PickSegment often returns null
187 |  | NPE for new PickFast PickInfo when getting geometries
195 |  | Finish CgShader vertex attributes native methods
196 |  | Finish CgShader shader attributes native methods
199 |  | New Picking system only return 1 result per geometry
201 |  | D3D : UnsatisfiedLinkError encountered with closing windows
202 |  | Need to upgrade to latest glext.h header file
203 |  | System.currentTimeMillis is too inaccurate on Windows for fine-grained timing
207 |  | Viewer.java throws exception with leading \n
208 |  | Sound nodes cannot be placed below Switch groups
212 |  | PureImmediate test fails to rotate
217 |  | Compile j3d with "-g:lines,source" to provide line numbers on stack traces
223 |  | JVM crashes when execute IndexedGeometryArray object with Texture coordinates

### More Information

For the latest information on Java 3D, see the main Java 3D project page on java.net.

Click here for a list of open issues.