j3d.org Aviatrix3D

org.j3d.aviatrix3d.pipeline
Class DepthSortedTransparencyStage

java.lang.Object
  extended byorg.j3d.aviatrix3d.pipeline.DepthSortedTransparencyStage
All Implemented Interfaces:
SortStage

public class DepthSortedTransparencyStage
extends java.lang.Object
implements SortStage

Implementation of the sort stage that separates out the transparent and non transparent objects, and then arranges them using depth sorting.

The depth sorting algorithm used is to first assemble all the transparen objects into a list. Calculate their distance from the screen using the center of the bounds as the world space position. Normalise the depth to an integer between 0 and 32K (16bit depth buffer equivalent) where 0 is the near clipping plane and 32K is the far clipping plane. With the distance values, perform a counting-sort operation to sort the objects into the correct order with deepest first.

Version:
$Revision: 1.10 $
Author:
Justin Couch

Constructor Summary
DepthSortedTransparencyStage()
          Create an empty sorting stage that assumes just a single renderable output.
DepthSortedTransparencyStage(int numSurfaces)
          Create an empty sorting stage that initialises the internal structures to assume that there is a minumum number of surfaces, both on and offscreen.
DepthSortedTransparencyStage(int numSurfaces, int depthBits)
          Create an empty sorting stage that initialises the internal structures to assume that there is a minumum number of surfaces, both on and offscreen.
 
Method Summary
 void setSortedGeometryReceiver(SortedGeometryReceiver sgr)
          Register a reciever for the output of the sorter.
 void sort(RenderEnvironmentData[] data, CullOutputDetails[][] nodes, int[] numNodes, SceneGraphObject[][] sceneParents, int numScenes, int buffer)
          Sort the listing of nodes in the given array.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DepthSortedTransparencyStage

public DepthSortedTransparencyStage()
Create an empty sorting stage that assumes just a single renderable output. The default list size is 1 and the number of depth bits is 16.


DepthSortedTransparencyStage

public DepthSortedTransparencyStage(int numSurfaces)
Create an empty sorting stage that initialises the internal structures to assume that there is a minumum number of surfaces, both on and offscreen. The number of depth bits is set to 16.

Parameters:
numSurfaces - The number of surfaces to start the internal lists sizes at.

DepthSortedTransparencyStage

public DepthSortedTransparencyStage(int numSurfaces,
                                    int depthBits)
Create an empty sorting stage that initialises the internal structures to assume that there is a minumum number of surfaces, both on and offscreen.

Parameters:
numSurfaces - The number of surfaces to start the internal lists sizes at.
depthBits - The number of bits of depth precision to quantize the depth sorting to
Throws:
java.lang.IllegalArgumentException - Depth bits is zero or negative
Method Detail

sort

public void sort(RenderEnvironmentData[] data,
                 CullOutputDetails[][] nodes,
                 int[] numNodes,
                 SceneGraphObject[][] sceneParents,
                 int numScenes,
                 int buffer)
Sort the listing of nodes in the given array. Do not return until the sort has been completed. If the sceneParent is the main scene graph and not an offscreen texture, then that spot should be set to null in the list.

Specified by:
sort in interface SortStage
Parameters:
data - External rendering environment information
nodes - List of processed nodes based on the scene they came from
numNodes - Number of nodes in each scene
sceneParents - Parent nodes that hold the subscene in the main scene graph
numScenes - The number of valid scenes to process
buffer - The buffer ID to use to output the data to when multi-threaded

setSortedGeometryReceiver

public void setSortedGeometryReceiver(SortedGeometryReceiver sgr)
Register a reciever for the output of the sorter. If the value is null, it will clear the currently set receiver.

Specified by:
setSortedGeometryReceiver in interface SortStage
Parameters:
sgr - The receiver instance to add or null

j3d.org Aviatrix3D

Latest Info from http://aviatrix3d.j3d.org/
Copyright © 2003 - j3d.org