diff options
author | Kevin Rushforth <[email protected]> | 2005-04-01 00:02:28 +0000 |
---|---|---|
committer | Kevin Rushforth <[email protected]> | 2005-04-01 00:02:28 +0000 |
commit | 46cb80a0363025c330baea513b0224fbbdf35de3 (patch) | |
tree | 2d9ed0768bb271a873266253704733e4e4ded3fb /www/j3d1_4 | |
parent | 6a4504426cc054b5e033ba4c2ed31d3ea8c959f4 (diff) |
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
Diffstat (limited to 'www/j3d1_4')
-rw-r--r-- | www/j3d1_4/multipass.html | 35 | ||||
-rw-r--r-- | www/j3d1_4/proposed-changes.html | 257 | ||||
-rw-r--r-- | www/j3d1_4/render-texture.html | 57 | ||||
-rw-r--r-- | www/j3d1_4/stencil.html | 46 | ||||
-rw-r--r-- | www/j3d1_4/vsg-op.html | 80 |
5 files changed, 347 insertions, 128 deletions
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 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> + <meta content="text/html; charset=ISO-8859-1" + http-equiv="content-type"> + <title>Java 3D 1.5: Multipass Support</title> +</head> +<body> +<h2>Java 3D<sup><font size="-2">TM</font></sup> 1.5: +Multipass Support</h2> +<h3><span style="color: rgb(0, 153, 0);"><i>ROUGH DRAFT: This API +is a Work in Progress</i></span></h3> +<hr> +<p>This page describes the proposed Multipass Support in Java 3D +1.5... +</p> +<p>The proposed API is:</p> +<ul> + <li>New classes</li> + <ul> + <pre>public class XXXXX extends YYYYY<br> method: setXxxxx()<br></pre> + </ul> + <li>New methods in existing classes:<br> + </li> + <ul> + <pre>XXXXX<br> method: setXxxxx()<br></pre> + </ul> +</ul> +<p>More info here... +</p> +<p><font color="gray">Page last updated — +$Date$ +</font></p> +</body> +</html> 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 @@ <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> - <title>Proposed Java 3D 1.4 API Changes</title> + <title>Proposed Java 3D API Changes</title> </head> <body> -<h2>Proposed Java 3D<sup><font size="-2">TM</font></sup> 1.4 API +<h2>Proposed Java 3D<sup><font size="-2">TM</font></sup> API Changes</h2> <p>This page highlights the proposed changes to the 1.4 version of the -Java 3D<sup><font size="-2">TM</font></sup> API. For a list of new +Java 3D<sup><font size="-2">TM</font></sup> API, and beyond. For a +list of new classes methods, etc., see the <a href="api-changes.html">List of Proposed Java 3D 1.4 API Changes</a>. Click @@ -20,101 +21,114 @@ javadocs for the proposed 1.4 API</a> (built from the dev-1_4 branch). A list of other <a href="improvements.html">possible improvements to Java 3D version 1.4</a> is also available. </p> -<h3>I. High Priority Features</h3> -<p>This list of high priority features will almost certainly make it -into the 1.4 API. -</p> -<h4>1. Proposed API to be added</h4> -<p>This is a list of features that we propose to add to -the API.<br> -</p> -<ul> - <li><a href="shaders.html">Programmable +<table style="text-align: left; width: 100%;" border="0" cellspacing="4" + cellpadding="4"> + <tbody> + <tr> + <td + style="text-align: left; vertical-align: top; background-color: rgb(255, 255, 225); width: 60%;"> + <h3>1.4 Committed Features<br> + </h3> + <p>This list of high priority features will almost certainly make +it +into the 1.4 version of the Java 3D API.</p> + <ul> + <li><a + href="file:///home/kcr/java3d/1.3.3/j3d-core/www/j3d1_4/shaders.html">Programmable Shaders</a></li> - <li><a href="graph-change-listener.html">Scene graph structure change + <li><a + href="file:///home/kcr/java3d/1.3.3/j3d-core/www/j3d1_4/graph-change-listener.html">Scene +graph structure change listeners</a></li> - <li><a + <li><a href="http://javadesktop.org/java3d/javadoc/1.4.0-latest/javax/media/j3d/SceneGraphObject.html#setName%28java.lang.String%29">Name string</a> for all scene graph objects: add public <a href="http://javadesktop.org/java3d/javadoc/1.4.0-latest/javax/media/j3d/SceneGraphObject.html#setName%28java.lang.String%29"><code>get/setName(String)</code></a> to <code>SceneGraphObject</code> class</li> - <li>New <a + <li>New <a href="http://javadesktop.org/java3d/javadoc/1.4.0-latest/javax/media/j3d/Node.html#ALLOW_PARENT_READ"><code>ALLOW_PARENT_READ</code></a> capability bit in <code>Node</code> class that will allow <a href="http://javadesktop.org/java3d/javadoc/1.4.0-latest/javax/media/j3d/Node.html#getParent%28%29"><code>getParent()</code></a> to be called on live/compiled scene graph</li> - <li>Ability to get the locale from a live node: add public <code>getLocale()</code> + <li>Ability to get the locale from a live node: add public <code>getLocale()</code> method and <code>ALLOW_LOCALE_READ</code> capability bit to <code>Node</code> class<br> - </li> - <li>Additional blending functions, for example: <code>BLEND_SRC_COLOR</code>, - <code>BLEND_ONE_MINUS_SRC_COLOR</code>, <code>BLEND_DST_COLOR</code>, - <code>BLEND_ONE_MINUS_DST_COLOR</code>, etc.</li> - <li><a href="picking.html">Additional core picking methods</a> (in + </li> + <li>Additional blending functions, for example: <code>BLEND_SRC_COLOR</code>, + <code>BLEND_ONE_MINUS_SRC_COLOR</code>, <code>BLEND_DST_COLOR</code>, + <code>BLEND_ONE_MINUS_DST_COLOR</code>, etc.</li> + <li><a + href="file:///home/kcr/java3d/1.3.3/j3d-core/www/j3d1_4/picking.html">Additional +core picking methods</a> (in Locale and BranchGroup)</li> - <li><a href="stencil.html">Stencil buffer</a><br> - </li> -</ul> -<h4>2. Proposed API to be deprecated</h4> -<p>This is a list of features that we propose to -deprecate in + <li><a + href="file:///home/kcr/java3d/1.3.3/j3d-core/www/j3d1_4/stencil.html">Stencil +buffer</a><br> + </li> + </ul> + <p>This is a list of features that we propose to <a + href="#Footnote_1">deprecate<sup>1</sup></a> in the API.<br> -</p> -<ul> - <li><code>CompressedGeometry</code> (no HW support, lack of industry + </p> + <ul> + <li><code>CompressedGeometry</code> class (no HW support, lack +of +industry acceptance)</li> - <li><code>Sensor</code> prediction (has never been implemented)<br> - </li> - <li><code>PickPoint</code> (not fully implemented, cannot be used for + <li>Sensor prediction (has never been implemented)<br> + </li> + <li><code>PickPoint</code> class (not fully implemented, cannot +be +used for geometry-based picking; use PickBounds with a BoundingSphere that has a small radius)</li> -</ul> -<p>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).<br> -</p> -<h3>II. Medium Priority Features</h3> -<p>This list of medium priority features is under discussion for + <li><code></code><code>Morph</code> node (expensive, picking +doesn't +work, +can be done +in a utility)</li> + </ul> + </td> + <td + style="text-align: left; vertical-align: top; background-color: rgb(235, 255, 235);" + colspan="1" rowspan="4"> + <h3>Other Features for 1.4, 1.5, ...<br> + </h3> + <p>This list of medium priority features is under discussion for possible inclusion -into the 1.4 API. -</p> -<h4>1. Possible API to be added</h4> -<p>This is a list of features that are being considered -for addition to -the API.<br> -</p> -<ul> - <li><a href="render-texture.html">Render to texture</a></li> - <li>Non-power-of-two textures</li> - <li>Point sprites</li> - <li>Ability for nested ViewSpecificGroup nodes to replace the set of -views in addition to -current intersection semantics</li> - <li>API support for retained alpha buffers</li> - <li>Ability to query properties from a <code>GraphicsConfiguration</code></li> - <li>Better support for off-screen configuration parameters (e.g., an +into the 1.4 or 1.5 API (or beyond). </p> + <ul> + <li>Non-power-of-two textures</li> + <li>Point sprites</li> + <li><a + href="file:///home/kcr/java3d/1.3.3/j3d-core/www/j3d1_4/vsg-op.html">Ability +for nested ViewSpecificGroup nodes +to replace the set of views</a><br> + </li> + <li>API support for retained alpha buffers</li> + <li>Ability to query properties from a <code>GraphicsConfiguration</code></li> + <li>Better support for off-screen configuration parameters +(e.g., an attribute in <code>GraphicsConfigTemplate3D</code> indicating whether the requested <code>GraphicsConfiguration</code> is used for on-screen rendering, off-screen rendering, or both)</li> - <li>Enhance <code>getLocalToVWorld()</code> to return a valid result + <li>Enhance <code>getLocalToVWorld()</code> to return a valid +result for non-live graphs.</li> - <li><a href="lightweight-canvas3d.html">Lightweight Canvas3D (e.g., + <li><a + href="file:///home/kcr/java3d/1.3.3/j3d-core/www/j3d1_4/lightweight-canvas3d.html">Lightweight +Canvas3D (e.g., JCanvas3D)</a>. <span style="color: rgb(204, 0, 0);">Note: this feature will not happen without an someone from the community volunteering to drive it.</span></li> - <li>Add a new attribute for depth test function to + <li>Add a new attribute for depth test function to RenderingAttributes: public <code>get/setDepthTestFunction(int function)</code> methods that takes as values one of: <code>ALWAYS, NEVER, EQUAL, NOT_EQUAL, LESS, LESS_OR_EQUAL, GREATER, GREATER_OR_EQUAL</code>. @@ -124,7 +138,8 @@ will not happen without an someone from the community volunteering to drive it.</span></li> - <li>Method to retrieve the geometry data from the tessellation of a + <li>Method to retrieve the geometry data from the tessellation +of a glyph in a 3D font: a public <code>GeometryArray getGlyphGeometry(</code><code>int glyphCode</code><code>)</code> method in the <code>Font3D</code> class. <span @@ -132,49 +147,71 @@ method in the <code>Font3D</code> class. <span happen without an someone from the community volunteering to drive it.</span><span style="color: rgb(204, 0, 0);"></span></li> -</ul> -<h4>2. Possible API to be deprecated</h4> -<p>This is a list of features that are being considered -for deprecation in -the API.<br> -</p> -<ul> - <li><code></code><code>Morph</code> (expensive, picking doesn't work, -can be done -in a utility)</li> -</ul> -<p>These are in addition to the API being proposed for deprecation in -section I. -</p> -<h3><a name="Future_Features"></a>III. Future Features</h3> -<p>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. -</p> -<ul> - <li>Multipass rendering</li> - <li>Shadow map support</li> - <li>Additional texture formats: - <ul> - <li>NIO buffer support</li> - <li>Texture compression formats</li> - </ul> - </li> - <li>Extensibility: - <ul> - <li>Access to the native context (JOGL integration)</li> - <li>Geometry extensibility</li> - <li>Additional node types (e.g., haptic rendering)</li> - <li>Extensible geometry processing algorithms</li> - </ul> - </li> - <li>Plug-in capability - <ul> - <li>Rendering Device Interface (pluggable renderers)</li> - <li>Visibility structure</li> - </ul> - </li> -</ul> + <li>Additional texture formats: + <ul> + <li>NIO buffer support</li> + <li>Texture compression formats</li> + </ul> + </li> + </ul> + </td> + </tr> + <tr> + <td + style="text-align: left; vertical-align: top; background-color: rgb(255, 255, 203); width: 60%;"> + <h3>1.5 Proposed Major Features</h3> + <p>This list of high priority features is being seriously +considered for the 1.5 version of the Java 3D API.</p> + <ul> + <li><a href="render-texture.html">Render to texture</a></li> + <li><a href="multipass.html">Multipass rendering</a></li> + <li>Shadow map support</li> + </ul> + </td> + </tr> + <tr> + <td + style="text-align: left; vertical-align: top; background-color: rgb(255, 255, 182); width: 60%;"> + <h3>1.6 Possible Major Features</h3> + <p><span style="font-style: italic;">Not yet planned</span><br> + </p> + </td> + </tr> + <tr> + <td + style="text-align: left; vertical-align: top; background-color: rgb(255, 255, 164); width: 60%;"> + <h3><a name="Future_Features"></a>2.0 Possible Major Features</h3> + <p>Here is an unprioritized list of possible features under +consideration for a future 2.0 version of the Java 3D API. </p> + <ul> + <li>Extensibility: + <ul> + <li>Access to the native context (JOGL integration)</li> + <li>Geometry extensibility</li> + <li>Additional node types (e.g., haptic rendering)</li> + <li>Extensible geometry processing algorithms</li> + </ul> + </li> + <li>Plug-in capability + <ul> + <li>Rendering Device Interface (pluggable renderers)</li> + <li>Visibility structure</li> + </ul> + </li> + </ul> + </td> + </tr> + </tbody> +</table> +<p><small><a name="Footnote_1"></a>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).</small></p> <p><font color="gray">Page last updated — $Date$ </font></p> 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 @@ <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> - <title>Java 3D 1.4: Render To Texture</title> + <title>Java 3D 1.5: Render To Texture</title> </head> <body> -<h2>Java 3D<sup><font size="-2">TM</font></sup> 1.4: +<h2>Java 3D<sup><font size="-2">TM</font></sup> 1.5: Render To Texture</h2> <h3><span style="color: rgb(0, 153, 0);"><i>ROUGH DRAFT: This API is a Work in Progress</i></span></h3> <hr> <p>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).<br> </p> +<p>NOTES:<br> +</p> +<ul> + <li>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 <em>dependent</em> on the TextureView.</li> + <li>Each TextureView is rendered before its <em>dependent</em> +View(s).<br> + </li> + <li>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).<br> + </li> + <li>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 <strong><em>only</em></strong> +to nodes under a ViewSpecificGroup. This flag is false by default for +an ordinary View and true by default for a TextureView.</li> +</ul> <p>The proposed API is:</p> <ul> <li>New classes</li> <ul> - <pre>public class XXXXX extends YYYYY<br> method: setXxxxx()<br></pre> + <pre>public class TextureView extends View<br> method: setXxxxx() // Any methods here?<br><br>public class TextureCanvas3D extends Canvas3D<br> method: setRenderedTexture(RenderedTexture) // or should this be immutable?<br> method: setLevel(int level)<br> method: setFace(int face)<br> // override lots of Canvas-related methods and throw UnimplementedException<br><br>public class RenderedTexture extends Texture<br> method: setXxxxx() // Any methods here?<br><br>public class RenderedTexture2D extends RenderedTexture<br> method: setXxxxx() // Any methods here?<br><br>public class RenderedTexture3D extends RenderedTexture<br> method: setXxxxx() // Any methods here?<br><br>public class RenderedTextureCubeMap extends RenderedTexture<br> method: setXxxxx() // Any methods here?<br></pre> </ul> <li>New methods in existing classes:<br> </li> <ul> - <pre>XXXXX<br> method: setXxxxx()<br></pre> + <pre>View<br> method: setViewSpecificGroupOnly(boolean)<br></pre> </ul> </ul> -<p>More info here... +<p>Issues: </p> +<ol> + <li>Can the resulting image be read back to the application?<br> + <span style="font-style: italic;">[we don't plan to allow this]</span><br> + </li> + <li>What is the best way to ensure that there is a valid source of +all mipmap levels (and all faces of a cube-map)?</li> + <li>Should RenderedTexture be a mode or a subclass?<span + style="font-style: italic;"><br> +[currently proposed to be a subclass]</span></li> + <li>Since this feature encourages using implicit mipmap generation, +we need to file an RFE to implement implicit mipmap generation using +OpenGL HW mipmap generation.<br> + </li> +</ol> <p><font color="gray">Page last updated — $Date$ </font></p> 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 @@ <body> <h2>Java 3D<sup><font size="-2">TM</font></sup> 1.4: Stencil Buffer</h2> -<h3><span style="color: rgb(0, 153, 0);"><i>ROUGH DRAFT: This API -is a Work in Progress</i></span></h3> -<hr> +<p><span style="color: rgb(204, 0, 0);"><i>NOTE: THIS DOES NOT INCLUDE +ANY MULTIPASS SUPPORT </i></span> +</p> <p>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.<br> +</p> +<p>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).<br> </p> -<p>NOTE: THIS WILL NOT INCLUDE ANY MULTIPASS SUPPORT in 1.4 +<p>The proposed API changes are:<br> </p> -<p>The proposed API is:</p> <ul> - <li>New classes</li> - <ul> - <pre>public class XXXXX extends YYYYY<br> method: setXxxxx()<br></pre> - </ul> <li>New methods in existing classes:<br> </li> <ul> - <pre>XXXXX<br> method: setXxxxx()<br></pre> + <pre>GraphicsConfigTemplate3D<br> method: setStencilSize(int) // default=0<br><br>RenderingAttributes<br> method: setStencilEnable(boolean enable)<br> method: setStencilOp(int fail, int zfail, int zpass)<br> method: setStencilFunc(int func, int ref, int mask)<br> method: setStencilMask(int mask)<br></pre> </ul> </ul> -<p>More info here... +<p>Issues:<br> </p> +<ol> + <li>How/when is the stencil buffer cleared? Implicitly at the start +of a frame? Explicitly? The latter seems problematic.<br> + <span style="font-style: italic;">[Current plan is to clear +implicitly +at the start of each frame and not provide explicit control]</span><br> + </li> + <li>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.<br> + </li> +</ol> <p><font color="gray">Page last updated — $Date$ </font></p> 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 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> + <meta content="text/html; charset=ISO-8859-1" + http-equiv="content-type"> + <title>Java 3D 1.4: ViewSpecificGroup View Set Operation</title> +</head> +<body> +<h2>Java 3D<sup><font size="-2">TM</font></sup> 1.4: +ViewSpecificGroup View Set Operation<br> +</h2> +<p>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: +</p> +<ul> + <table border="0" cellspacing="2" cellpadding="2"> + <tbody> + <tr> + <td><code>INTERSECT</code></td> + <td><code>:</code></td> + <td><code>viewSet[n] += +viewSet[n-1] ∩ VSG[n].viewSet</code></td> + </tr> + <tr> + <td><code>UNION</code></td> + <td><code>:</code></td> + <td><code>viewSet[n] += +viewSet[n-1] ∪ VSG[n].viewSet</code></td> + </tr> + <tr> + <td><code>REPLACE</code></td> + <td><code>:</code></td> + <td><code>viewSet[n] += +VSG[n].viewSet</code> </td> + </tr> + </tbody> + </table> + <br> +where <code>n</code> is the nesting level (the number of ancestor VSG +nodes in the +scene graph path).<br> +The default mode is <code>INTERSECT</code>. +</ul> +<p>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: <code>viewSet[0] = VSG[0].viewSet</code> for all +values of <code>viewSetOp</code>.<br> +</p> +<p>The proposed API is:</p> +<ul> + <li>New methods in existing classes:<br> + </li> + <ul> + <pre>ViewSpecificGroup<br> method: setViewSetOp(int op) // one of: INTERSECT, UNION, REPLACE<br></pre> + </ul> +</ul> +<ol> +</ol> +<p><font color="gray">Page last updated — +$Date$ +</font></p> +</body> +</html> |