Aviatrix3D
2.1.0

org.j3d.aviatrix3d.pipeline.graphics
Class StateSortStage

java.lang.Object
  extended by org.j3d.aviatrix3d.pipeline.graphics.BaseSortStage
      extended by org.j3d.aviatrix3d.pipeline.graphics.BaseStateSortStage
          extended by org.j3d.aviatrix3d.pipeline.graphics.StateSortStage
All Implemented Interfaces:
GraphicsSortStage

public class StateSortStage
extends BaseStateSortStage

Implementation of the sort stage that does only state sorting and ignores transparency.

The sorting is based on state changes only. For 2D nodes, it just expands the array directly.

Version:
$Revision: 3.4 $
Author:
Justin Couch

Field Summary
 
Fields inherited from class org.j3d.aviatrix3d.pipeline.graphics.BaseStateSortStage
clipTmp, currentAppearance, currentBlendAttr, currentClipPlanes, currentDepthAttr, currentFog, currentLights, currentLineAttr, currentMaterial, currentPointAttr, currentPolyAttr, currentShader, currentShaderArgs, currentStencilAttr, currentTextures, GUESS_NUM_COMPONENTS, keepClipPlanes, keepLights, lightIdMap, newClipPlanes, newLights, numTextures, oldClipPlanes, oldLights, stateComparator, TEX_IDS
 
Fields inherited from class org.j3d.aviatrix3d.pipeline.graphics.BaseSortStage
commandList, errorReporter, instructionMap, lastGlobalId, LIST_START_SIZE, terminate
 
Constructor Summary
StateSortStage()
          Create an empty sorting stage that assumes just a single renderable output.
StateSortStage(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.
 
Method Summary
protected  int estimateInstructionSize(MultipassRenderBucket scene)
          Estimate the required size of the instruction list needed for this scene to be processed.
protected  int estimateInstructionSize(SceneRenderBucket scene)
          Estimate the required size of the instruction list needed for this scene to be processed.
protected  int sort2DNodes(GraphicsCullOutputDetails[] nodes, int numNodes, GraphicsEnvironmentData data, GraphicsInstructions instr, int instrCount)
          Sort a single set of nodes into the output details of a single layer of a single viewport and place in the provided GraphicsInstructions instance.
protected  int sortNodes(GraphicsCullOutputDetails[] nodes, int numNodes, GraphicsEnvironmentData data, GraphicsInstructions instr, int instrCount)
          Sort a single set of nodes into the output details of a single layer of a single viewport and place in the provided GraphicsInstructions instance.
 
Methods inherited from class org.j3d.aviatrix3d.pipeline.graphics.BaseStateSortStage
appendClipPlanes, appendLights, appendObject, cleanupObjects, cleanupVisuals, updateBlendAttribs, updateDepthAttribs, updateFog, updateLineAttribs, updateMaterial, updatePointAttribs, updatePolyAttribs, updateShader, updateStencilAttribs, updateTextures
 
Methods inherited from class org.j3d.aviatrix3d.pipeline.graphics.BaseSortStage
halt, realloc, setErrorReporter, setSortedGeometryReceiver, sort
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StateSortStage

public StateSortStage()
Create an empty sorting stage that assumes just a single renderable output.


StateSortStage

public StateSortStage(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.

Method Detail

sortNodes

protected int sortNodes(GraphicsCullOutputDetails[] nodes,
                        int numNodes,
                        GraphicsEnvironmentData data,
                        GraphicsInstructions instr,
                        int instrCount)
Sort a single set of nodes into the output details of a single layer of a single viewport and place in the provided GraphicsInstructions instance. The implementation of this method should only concern itself with this set of nodes and not worry about dealing with nested scenes or other viewports.

Specified by:
sortNodes in class BaseSortStage
Parameters:
nodes - The list of nodes to perform sorting on
numNodes - The number of valid items in the nodes array
data - The environment data used during sorting
instr - Instruction instant to put the details into
instrCount - Offset of current number of valid instructions
Returns:
The current instruction count after sorting

sort2DNodes

protected int sort2DNodes(GraphicsCullOutputDetails[] nodes,
                          int numNodes,
                          GraphicsEnvironmentData data,
                          GraphicsInstructions instr,
                          int instrCount)
Sort a single set of nodes into the output details of a single layer of a single viewport and place in the provided GraphicsInstructions instance. The implementation of this method should only concern itself with this set of nodes and not worry about dealing with nested scenes or other viewports.

Specified by:
sort2DNodes in class BaseSortStage
Parameters:
nodes - The list of nodes to perform sorting on
numNodes - The number of valid items in the nodes array
data - The environment data used during sorting
instr - Instruction instant to put the details into
instrCount - Offset of current number of valid instructions
Returns:
The current instruction count after sorting

estimateInstructionSize

protected int estimateInstructionSize(SceneRenderBucket scene)
Estimate the required size of the instruction list needed for this scene to be processed. This is an initial rough estimate that will be used to make sure the arrays are at least big enough to start with. There is no issue if this underestimates, as most sorting will continually check and resize as needed. However, each resize is costly, so the closer this can be to estimating the real size, the better for performance.

Specified by:
estimateInstructionSize in class BaseSortStage
Parameters:
scene - The scene bucket to use for the source
Returns:
A greater than zero value

estimateInstructionSize

protected int estimateInstructionSize(MultipassRenderBucket scene)
Estimate the required size of the instruction list needed for this scene to be processed. This is an initial rough estimate that will be used to make sure the arrays are at least big enough to start with. There is no issue if this underestimates, as most sorting will continually check and resize as needed. However, each resize is costly, so the closer this can be to estimating the real size, the better for performance.

Specified by:
estimateInstructionSize in class BaseSortStage
Parameters:
scene - The scene bucket to use for the source
Returns:
A greater than zero value

Aviatrix3D
2.1.0

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