From 46cb80a0363025c330baea513b0224fbbdf35de3 Mon Sep 17 00:00:00 2001
From: Kevin Rushforth
Date: Fri, 1 Apr 2005 00:02:28 +0000
Subject: Updates to proposed Java 3D API changes
git-svn-id: https://svn.java.net/svn/j3d-core~svn/trunk@183 ba19aa83-45c5-6ac9-afd3-db810772062c
---
www/index.html | 16 +--
www/j3d1_4/multipass.html | 35 ++++++
www/j3d1_4/proposed-changes.html | 257 ++++++++++++++++++++++-----------------
www/j3d1_4/render-texture.html | 57 ++++++++-
www/j3d1_4/stencil.html | 46 +++++--
www/j3d1_4/vsg-op.html | 80 ++++++++++++
6 files changed, 355 insertions(+), 136 deletions(-)
create mode 100644 www/j3d1_4/multipass.html
create mode 100644 www/j3d1_4/vsg-op.html
(limited to 'www')
diff --git a/www/index.html b/www/index.html
index 3440207..f8309c6 100644
--- a/www/index.html
+++ b/www/index.html
@@ -175,13 +175,12 @@ the rights to ship the source code for the native Headspace sound
mixer. Our plan
going forward is to enourage the development community to implement an
AudioEngine using JOAL.
-Java 3D 1.4
+
Java 3D 1.4, 1.5, ...
A description of the set of proposed
-Java 3D
-1.4 API changes is now available. The main focus of the proposed
-1.4
-API is the addition of programmable
+Java 3D API changes for 1.4 (and beyond) is now available. The
+main focus of the proposed
+1.4 release is the addition of programmable
shaders. Our goal is to
minimize large scale changes to the system in order to deliver 1.4 as
quickly as possible. We encourage members of the development community
@@ -202,7 +201,7 @@ in the java.net community.
improvements to Java 3D version 1.4 is also available, and is
an unprioritized list of improvements that do not require API changes.
-Java 3D 1.5/2.0
+
Java 3D 2.0
The scope of this release will be driven by the level of interest
and community support that we get.
@@ -211,7 +210,7 @@ thoughts are that this work will include large scale changes to support
features such as extensibility and pluggable renderers. Click the
following link for a list of
-possible 1.5/2.0 features.
+possible 2.0 features.
Project Suggestions
The main areas in j3d-core for which we need help from the community
@@ -219,7 +218,8 @@ are:
diff --git a/www/j3d1_4/multipass.html b/www/j3d1_4/multipass.html
new file mode 100644
index 0000000..483adfb
--- /dev/null
+++ b/www/j3d1_4/multipass.html
@@ -0,0 +1,35 @@
+
+
+
+
+ Java 3D 1.5: Multipass Support
+
+
+Java 3DTM 1.5:
+Multipass Support
+ROUGH DRAFT: This API
+is a Work in Progress
+
+This page describes the proposed Multipass Support in Java 3D
+1.5...
+
+The proposed API is:
+public class XXXXX extends YYYYY
method: setXxxxx()
+
+ New methods in existing classes:
+
+ XXXXX
method: setXxxxx()
+
+
+More info here...
+
+Page last updated —
+$Date$
+
+
+
diff --git a/www/j3d1_4/proposed-changes.html b/www/j3d1_4/proposed-changes.html
index 04dede8..d0e57bb 100644
--- a/www/j3d1_4/proposed-changes.html
+++ b/www/j3d1_4/proposed-changes.html
@@ -3,13 +3,14 @@
- Proposed Java 3D 1.4 API Changes
+ Proposed Java 3D API Changes
-Proposed Java 3DTM 1.4 API
+Proposed Java 3DTM API
Changes
This page highlights the proposed changes to the 1.4 version of the
-Java 3DTM API. For a list of new
+Java 3DTM API, and beyond. For a
+list of new
classes methods, etc., see the List of
Proposed Java 3D 1.4 API
Changes. Click
@@ -20,101 +21,114 @@ javadocs for the proposed 1.4 API (built from the dev-1_4 branch).
A list of other possible improvements to
Java 3D version 1.4 is also available.
-I. High Priority Features
-This list of high priority features will almost certainly make it
-into the 1.4 API.
-
-1. Proposed API to be added
-This is a list of features that we propose to add to
-the API.
-
-
- - Programmable
+
+
+
+
+ 1.4 Committed Features
+
+ This list of high priority features will almost certainly make
+it
+into the 1.4 version of the Java 3D API.
+
+ - Programmable
Shaders
- - Scene graph structure change
+
- Scene
+graph structure change
listeners
- - Name
string for all scene graph objects: add public
get/setName(String)
to SceneGraphObject
class
- - New New
ALLOW_PARENT_READ
capability bit in Node
class that will allow getParent()
to be called on live/compiled scene graph
- - Ability to get the locale from a live node: add public
getLocale()
+ - Ability to get the locale from a live node: add public
getLocale()
method and ALLOW_LOCALE_READ capability bit to Node
class
-
- - Additional blending functions, for example:
BLEND_SRC_COLOR ,
- BLEND_ONE_MINUS_SRC_COLOR , BLEND_DST_COLOR ,
- BLEND_ONE_MINUS_DST_COLOR , etc.
- - Additional core picking methods (in
+
+ - Additional blending functions, for example:
BLEND_SRC_COLOR ,
+ BLEND_ONE_MINUS_SRC_COLOR , BLEND_DST_COLOR ,
+ BLEND_ONE_MINUS_DST_COLOR , etc.
+ - Additional
+core picking methods (in
Locale and BranchGroup)
- - Stencil buffer
-
-
-2. Proposed API to be deprecated
-This is a list of features that we propose to
-deprecate in
+ - Stencil
+buffer
+
+
+ This is a list of features that we propose to deprecate1 in
the API.
-
-
- CompressedGeometry (no HW support, lack of industry
+
+
+ CompressedGeometry class (no HW support, lack
+of
+industry
acceptance)
- Sensor prediction (has never been implemented)
-
- PickPoint (not fully implemented, cannot be used for
+ - Sensor prediction (has never been implemented)
+
+ PickPoint class (not fully implemented, cannot
+be
+used for
geometry-based picking; use PickBounds with
a
BoundingSphere that has a small radius)
-
-Note that none of these features will actually be removed. It
-instead
-reflects a decrease of emphasis on these features. While they should
-continue
-to function normally, no additional effort is likely to be put into
-them (for example, compressed geometry will not be supported with
-programmable shaders). This action paves the way to remove them from a
-future major release (e.g., a 2.0 release).
-
-II. Medium Priority Features
-This list of medium priority features is under discussion for
+
Morph node (expensive, picking
+doesn't
+work,
+can be done
+in a utility)
+
+ |
+
+ Other Features for 1.4, 1.5, ...
+
+ This list of medium priority features is under discussion for
possible inclusion
-into the 1.4 API.
-
-1. Possible API to be added
-This is a list of features that are being considered
-for addition to
-the API.
-
-
- - Render to texture
- - Non-power-of-two textures
- - Point sprites
- - Ability for nested ViewSpecificGroup nodes to replace the set of
-views in addition to
-current intersection semantics
- - API support for retained alpha buffers
- - Ability to query properties from a
GraphicsConfiguration
- - Better support for off-screen configuration parameters (e.g., an
+into the 1.4 or 1.5 API (or beyond).
+
+ - Non-power-of-two textures
+ - Point sprites
+ - Ability
+for nested ViewSpecificGroup nodes
+to replace the set of views
+
+ - API support for retained alpha buffers
+ - Ability to query properties from a
GraphicsConfiguration
+ - Better support for off-screen configuration parameters
+(e.g., an
attribute in
GraphicsConfigTemplate3D indicating whether
the requested GraphicsConfiguration is used for on-screen
rendering,
off-screen rendering, or both)
- - Enhance
getLocalToVWorld() to return a valid result
+ - Enhance
getLocalToVWorld() to return a valid
+result
for non-live graphs.
- - Lightweight Canvas3D (e.g.,
+
- Lightweight
+Canvas3D (e.g.,
JCanvas3D). Note: this
feature
will not
happen
without an someone from the community volunteering
to drive it.
- - Add a new attribute for depth test function to
+
- Add a new attribute for depth test function to
RenderingAttributes: public
get/setDepthTestFunction(int function)
methods that takes as values one of: ALWAYS, NEVER,
EQUAL, NOT_EQUAL, LESS, LESS_OR_EQUAL, GREATER, GREATER_OR_EQUAL .
@@ -124,7 +138,8 @@ will not
happen
without an someone from the community volunteering
to drive it.
- - Method to retrieve the geometry data from the tessellation of a
+
- Method to retrieve the geometry data from the tessellation
+of a
glyph in a 3D font: a
public
GeometryArray getGlyphGeometry( int glyphCode )
method in the Font3D class. Font3D class.
-
-2. Possible API to be deprecated
-This is a list of features that are being considered
-for deprecation in
-the API.
-
-
-
Morph (expensive, picking doesn't work,
-can be done
-in a utility)
-
-These are in addition to the API being proposed for deprecation in
-section I.
-
-III. Future Features
-Here is an unprioritized list of possible features under
-consideration for a future (e.g., 1.5/2.0)
-version of the Java 3D API.
-
-
- - Multipass rendering
- - Shadow map support
- - Additional texture formats:
-
- - NIO buffer support
- - Texture compression formats
-
-
- - Extensibility:
-
- - Access to the native context (JOGL integration)
- - Geometry extensibility
- - Additional node types (e.g., haptic rendering)
- - Extensible geometry processing algorithms
-
-
- - Plug-in capability
-
- - Rendering Device Interface (pluggable renderers)
- - Visibility structure
-
-
-
+ - Additional texture formats:
+
+ - NIO buffer support
+ - Texture compression formats
+
+
+
+ |
+
+
+
+ 1.5 Proposed Major Features
+ This list of high priority features is being seriously
+considered for the 1.5 version of the Java 3D API.
+
+ |
+
+
+
+ 1.6 Possible Major Features
+ Not yet planned
+
+ |
+
+
+
+ 2.0 Possible Major Features
+ Here is an unprioritized list of possible features under
+consideration for a future 2.0 version of the Java 3D API.
+
+ - Extensibility:
+
+ - Access to the native context (JOGL integration)
+ - Geometry extensibility
+ - Additional node types (e.g., haptic rendering)
+ - Extensible geometry processing algorithms
+
+
+ - Plug-in capability
+
+ - Rendering Device Interface (pluggable renderers)
+ - Visibility structure
+
+
+
+ |
+
+
+
+1 – Note that deprecated
+features will not actually be removed. It
+instead
+reflects a decrease of emphasis on these features. While they should
+continue
+to function normally, no additional effort is likely to be put into
+them (for example, compressed geometry will not be supported with
+programmable shaders). This action paves the way to remove them from a
+future major release (e.g., a 2.0 release).
Page last updated —
$Date$
diff --git a/www/j3d1_4/render-texture.html b/www/j3d1_4/render-texture.html
index 05cf1e9..42d74ab 100644
--- a/www/j3d1_4/render-texture.html
+++ b/www/j3d1_4/render-texture.html
@@ -3,31 +3,76 @@
- Java 3D 1.4: Render To Texture
+ Java 3D 1.5: Render To Texture
-Java 3DTM 1.4:
+Java 3DTM 1.5:
Render To Texture
ROUGH DRAFT: This API
is a Work in Progress
This page describes the possible render-to-texture feature in
-Java 3D 1.4...
+Java 3D 1.5. The main idea is to create new
+"render-to-texture" subclasses of Canvas3D and View that would render
+into a texture that could then be used in a scene graph to render into
+an ordinary on-screen (or off-screen) Canvas3D. We will either need to
+create special "rendered" subclasses of Texture (e.g.,
+RenderedTexture2D), or add a mode flag to the existing texture classes.
+The former is cleaner from an API point of view, but the latter is more
+flexible (e.g., it would allow some mipmap levels of a Texture or faces
+of a TextureCubeMap to be generated by rendering and others to be
+specified via an image).
+NOTES:
+
+
+ - A TextureView is rendered when any View that references a scene
+graph containing its RenderedTexture object is rendered. The ordinary
+View is said to be dependent on the TextureView.
+ - Each TextureView is rendered before its dependent
+View(s).
+
+ - RenderedTexture objects cannot be in a scene graph that is
+rendered by a TextureView. Violating this will lead to undefined
+results. We may want to consider relaxing this restriction to allow for
+cascading render-to-texture operations. If we do relax this, we may
+need to provide a way for the application to specify an ordering of
+TextureViews (determining the dependency graph would be difficult).
+
+ - To make it easier for an app to comply with the above, we will
+add a new feature to View: a boolean
+attribute indicating whether to render only
+to nodes under a ViewSpecificGroup. This flag is false by default for
+an ordinary View and true by default for a TextureView.
+
The proposed API is:
public class XXXXX extends YYYYY
method: setXxxxx()
+ public class TextureView extends View
method: setXxxxx() // Any methods here?
public class TextureCanvas3D extends Canvas3D
method: setRenderedTexture(RenderedTexture) // or should this be immutable?
method: setLevel(int level)
method: setFace(int face)
// override lots of Canvas-related methods and throw UnimplementedException
public class RenderedTexture extends Texture
method: setXxxxx() // Any methods here?
public class RenderedTexture2D extends RenderedTexture
method: setXxxxx() // Any methods here?
public class RenderedTexture3D extends RenderedTexture
method: setXxxxx() // Any methods here?
public class RenderedTextureCubeMap extends RenderedTexture
method: setXxxxx() // Any methods here?
New methods in existing classes:
XXXXX
method: setXxxxx()
+ View
method: setViewSpecificGroupOnly(boolean)
-More info here...
+
Issues:
+
+ - Can the resulting image be read back to the application?
+ [we don't plan to allow this]
+
+ - What is the best way to ensure that there is a valid source of
+all mipmap levels (and all faces of a cube-map)?
+ - Should RenderedTexture be a mode or a subclass?
+[currently proposed to be a subclass]
+ - Since this feature encourages using implicit mipmap generation,
+we need to file an RFE to implement implicit mipmap generation using
+OpenGL HW mipmap generation.
+
+
Page last updated —
$Date$
diff --git a/www/j3d1_4/stencil.html b/www/j3d1_4/stencil.html
index 0b51ac8..dfa706c 100644
--- a/www/j3d1_4/stencil.html
+++ b/www/j3d1_4/stencil.html
@@ -8,29 +8,51 @@
Java 3DTM 1.4:
Stencil Buffer
-ROUGH DRAFT: This API
-is a Work in Progress
-
+NOTE: THIS DOES NOT INCLUDE
+ANY MULTIPASS SUPPORT
+
This page describes the proposed API changes for stencil buffer
support in Java 3D
-1.4...
+1.4. The GraphicsConfigTemplate3D class is used to find a
+GraphicsConfiguration object with the desired attributes. These
+attributes include number of color bits (red, green, and blue size),
+depth buffer size, and whether or not double-buffering, stereo, or
+antialiasing is needed. The GraphicsConfiguration is used in turn used
+to create a Canvas3D into which Java 3D can render.
+
+We propose to add a
+new StencilSize attribute to GraphicsConfigTemplate3D that will allow
+an application to create a Canvas3D (on-screen or off-screen) with a
+stencil buffer. We also propose to add new attributes to the
+RenderingAttributes object that will allow an application to control
+the stencil test and update. These will work in a similar manner to the
+equivalent OpenGL methods. Note that since multipass support is not yet
+available, applications wishing to use stencil will need to make use of
+OrderedGroup (or use mixed-mode / immediate-mode rendering).
-NOTE: THIS WILL NOT INCLUDE ANY MULTIPASS SUPPORT in 1.4
+
The proposed API changes are:
-The proposed API is:
public class XXXXX extends YYYYY
method: setXxxxx()
-
New methods in existing classes:
XXXXX
method: setXxxxx()
+ GraphicsConfigTemplate3D
method: setStencilSize(int) // default=0
RenderingAttributes
method: setStencilEnable(boolean enable)
method: setStencilOp(int fail, int zfail, int zpass)
method: setStencilFunc(int func, int ref, int mask)
method: setStencilMask(int mask)
-More info here...
+
Issues:
+
+ - How/when is the stencil buffer cleared? Implicitly at the start
+of a frame? Explicitly? The latter seems problematic.
+ [Current plan is to clear
+implicitly
+at the start of each frame and not provide explicit control]
+
+ - Does the OpenGL stencil functionality map cleanly to DirectX? If
+not, then stencil support may not be available for the D3D version of
+Java 3D.
+
+
Page last updated —
$Date$
diff --git a/www/j3d1_4/vsg-op.html b/www/j3d1_4/vsg-op.html
new file mode 100644
index 0000000..64db9ad
--- /dev/null
+++ b/www/j3d1_4/vsg-op.html
@@ -0,0 +1,80 @@
+
+
+
+
+ Java 3D 1.4: ViewSpecificGroup View Set Operation
+
+
+Java 3DTM 1.4:
+ViewSpecificGroup View Set Operation
+
+This page describes a possible enhancement to Java 3D 1.4 to
+allow the application to specify the operation used to compute the set
+of views for nested
+ViewSpecificGroup (VSG) nodes. Currently, the set of views used to
+render descendants of nested VSG nodes is the intersection of the set
+of views
+inherited from its
+parent(s) and the set of views specified in the child VSG node. We
+propose to
+add an attribute to VSG such that the resulting set of views is either
+as the intersection or the union of the set of views inherited from its
+parent(s) and the set of views specified in the child VSG node, or
+simply the set of views specified in the child VSG node. More formally,
+we plan to define three modes as follows:
+
+
+
+
+
+ INTERSECT |
+ : |
+ viewSet[n]
+=
+viewSet[n-1] ∩ VSG[n].viewSet |
+
+
+ UNION |
+ : |
+ viewSet[n]
+=
+viewSet[n-1] ∪ VSG[n].viewSet |
+
+
+ REPLACE |
+ : |
+ viewSet[n]
+=
+VSG[n].viewSet |
+
+
+
+
+where n
is the nesting level (the number of ancestor VSG
+nodes in the
+scene graph path).
+The default mode is INTERSECT
.
+
+Note that the set of views used to render descendants of a top-level
+VSG node (that is, a VSG node that is not itself a descendant of
+another VSG node) is the set of views specified in the VSG node,
+regardless of the mode. More
+formally: viewSet[0] = VSG[0].viewSet
for all
+values of viewSetOp
.
+
+The proposed API is:
+
+ - New methods in existing classes:
+
+
ViewSpecificGroup
method: setViewSetOp(int op) // one of: INTERSECT, UNION, REPLACE
+
+
+
+
+Page last updated —
+$Date$
+
+
+
--
cgit v1.2.3