javax.media.j3d
Class RenderBin

java.lang.Object
  extended by javax.media.j3d.J3dStructure
      extended by javax.media.j3d.RenderBin
All Implemented Interfaces:
ObjectUpdate

 class RenderBin
extends J3dStructure
implements ObjectUpdate

The RenderBin is a structure that optimizes rendering by doing efficient state sorting of objects to be rendered.


Field Summary
(package private)  java.util.ArrayList aBinUpdateList
           
private  java.util.HashSet addDlist
           
(package private)  java.util.ArrayList addDlistPerRinfo
           
(package private)  LightBin addOpaqueBin
          OpaqueBins to be added for the next frame
(package private)  boolean afterFirst
          To ensure that vpcToVworld is valid (not null) for the first pass
(package private)  java.util.ArrayList allTransparentObjects
           
(package private)  boolean altAppearanceDirty
           
(package private)  boolean backClipActive
           
(package private)  double backClipDistanceInVworld
          back clip distance in vworld
(package private)  BackgroundRetained background
          The backgound color data.
(package private)  LightBin bgAddOpaqueBin
           
(package private)  LightBin bgOpaqueBin
           
(package private)  java.util.ArrayList bgOrderedBins
           
(package private)  TransparentRenderingInfo bgTransparentInfo
           
(package private)  Color3f black
          Used when Background is null
(package private)  java.util.ArrayList blUsers
           
(package private)  java.util.ArrayList cachedDirtyOrientedRAs
           
(package private)  int cachedTranspSortMode
           
(package private)  BoundingBox canvasFrustumBBox
           
(package private)  java.util.ArrayList changedFogs
           
(package private)  java.util.ArrayList changedLts
           
(package private)  java.util.ArrayList changedModelClips
           
(package private)  BackgroundRetained currentActiveBackground
           
private  java.util.LinkedHashSet dirtyDepthSortRenderAtom
           
(package private)  java.util.ArrayList dirtyList
           
(package private)  java.util.ArrayList dirtyNodeComponentList
           
(package private)  java.util.ArrayList dirtyOrientedRAs
           
(package private)  java.util.ArrayList dirtyReferenceGeomList
          arraylist of refernce geometry that should be locked when transparency is on, so that we can make a mirror copy of the colors safely
(package private)  java.util.ArrayList dirtyRenderMoleculeList
           
private  java.util.ArrayList displayListResourceFreeList
           
(package private)  java.util.ArrayList dlistLockList
          arraylist of dlist that will be rebuilt
(package private)  DisplayListRenderMethod dlistRenderMethod
           
(package private)  int envDirty
           
(package private)  Point3d eyeInVworld
           
(package private)  int frameCount
          These variables control when compaction occurs
(package private)  int frameCountCutoff
           
(package private)  BackgroundRetained geometryBackground
           
(package private)  Transform3D infVworldToVpc
           
(package private)  java.util.ArrayList lightMessageList
          A couple ArrayLists used during light Processing
(package private)  Locale locale
           
(package private)  boolean localeChanged
           
(package private)  Vector3d localeTranslation
           
(package private)  java.util.ArrayList lockGeometryList
          arraylist of geometry that should be locked to ensure that the same snapshot of the geometry is rendered across all canvases
(package private)  J3dMessage[] m
           
(package private)  int maxLights
          The number of lights supported by the underlying context.
(package private)  int nElements
           
(package private)  java.util.ArrayList newNodeComponentList
           
(package private)  java.util.ArrayList nodeComponentList
           
(package private)  int notVisibleCount
           
private  int numDirtyTinfo
           
(package private)  java.util.ArrayList objUpdateList
          ArrayList of objects to be updated
(package private)  java.util.ArrayList obList
          list of ordered bins from which orderedCollection are added/removed
(package private)  java.util.ArrayList offScreenMessage
           
(package private)  java.util.ArrayList ogCIOList
          list of affect OrderedGroups with childIndexOrder changed.
(package private)  LightBin opaqueBin
          The opaque objects
(package private)  java.util.ArrayList orderedBins
           
(package private)  java.util.ArrayList orderedBinsList
          Ordered Bin processing
(package private)  java.util.ArrayList orientedRAs
           
(package private)  java.util.ArrayList positionDirtyList
          List of RenderAtoms whose postion have changed - only used for depth sorted transparency
(package private)  java.util.ArrayList raLocaleVwcBoundsUpdateList
           
(package private)  boolean reactivateView
           
(package private) static int REEVALUATE_ALL_ENV
           
(package private) static int REEVALUATE_FOG
           
(package private) static int REEVALUATE_LIGHTS
           
(package private) static int REEVALUATE_MCLIP
           
private  boolean reEvaluateBg
           
(package private)  boolean reEvaluateClip
           
(package private)  boolean reEvaluateSortMode
           
private  boolean reloadBgTexture
           
(package private)  long removeCutoffTime
           
private  java.util.HashSet removeDlist
           
(package private)  java.util.ArrayList removeDlistPerRinfo
           
(package private)  java.util.ArrayList removeNodeComponentList
           
(package private)  IndexedUnorderSet removeRenderAtomInRMList
          remove the bins first before adding them to new ones
(package private)  java.util.ArrayList renderAtoms
          The list of RenderAtoms
(package private)  IndexedUnorderSet renderMoleculeList
           
(package private)  java.util.ArrayList rmUpdateList
          List of renderMolecules that are soleUser have to do a 2 pass, first update values then sort based on equivalent material
(package private)  java.util.ArrayList sBinUpdateList
          List of ShaderBin that are soleUser that needs to have its components updated @updateObject time
(package private)  java.util.Collection sharedDList
           
(package private)  UpdateTargets targets
           
(package private)  java.util.ArrayList tbUpdateList
          List of TextureBin that are soleUser that needs to have its components updated @updateObject time
(package private)  java.util.ArrayList textureBinList
           
(package private)  java.util.ArrayList toBeAddedBinList
           
private  java.util.ArrayList toBeAddedTextureResourceFreeList
           
(package private)  boolean transformMsg
          variables to process transform messages
private  java.util.Comparator transparencySortComparator
           
(package private)  TransparentRenderingInfo transparentInfo
           
(package private)  int transpSortMode
           
(package private)  java.util.ArrayList updateCheckList
          List of Bins that are soleUser that have new renderAtom added into, which requires a pre-update screening to check if any of its node component changes could have been missed because the changes happen when all the render atoms are temporarily removed from the bin.
(package private)  View view
          The View for this render bin
(package private)  BoundingBox viewFrustumBBox
          To cache the view frustum bounding box.
private  boolean visGAIsDirty
          A flag indicates that the cached visible GeometryAtoms for this RenderBin might be invalid.
private  boolean visQuery
          A flag indicates that a visibility query to the GeometryStructure is needed.
(package private)  Transform3D vpcToVworld
           
(package private)  boolean vpcToVworldDirty
           
(package private)  BoundingSphere vpSchedSphereInVworld
          Two bounding spheres to track the scheduling region of the view platform.
(package private)  Transform3D vworldToVpc
          The view platform transforms.
(package private)  Color3f white
          Used when ColoringAttributes is null
 
Fields inherited from class javax.media.j3d.J3dStructure
messageList, msgList, nMessage, threadData, threadType, universe, updateThread
 
Constructor Summary
RenderBin(VirtualUniverse u, View v)
          Constructs a new RenderBin
 
Method Summary
(package private)  void addDirtyNodeComponent(java.lang.Object nc)
           
(package private)  void addDirtyReferenceGeometry(java.lang.Object geo)
           
(package private)  void addDirtyRenderMolecule(RenderMolecule rm)
           
(package private)  void addDisplayListResourceFreeList(RenderMolecule rm)
           
(package private)  void addGeometryDlist(RenderAtomListInfo ra)
           
(package private)  void addGeometryToLockList(java.lang.Object geo)
           
(package private)  void addNodeComponent(java.lang.Object nc)
           
(package private)  void addTextureBin(TextureBin tb)
           
(package private)  void addTextureResourceFreeList(TextureRetained tex)
           
(package private)  void addTransparentObject(java.lang.Object obj)
           
private  void checkForCompaction()
          This method looks through the list of RenderAtoms to see if compaction is needed.
(package private)  void cleanup()
          Release resource associate with this structure before GC We need to clear all those IndexedUnorderSet/WakeupIndexedList so that the listIdx associate with IndexedObject reset to -1.
(package private)  void clearAllUpdateObjectState()
           
(package private)  void clearDirtyOrientedRAs()
           
(package private)  TransparentRenderingInfo collectDirtyTRInfo(TransparentRenderingInfo dirtyList, RenderAtom r)
           
(package private)  void compact()
          This method stores the timestamp of the frame frameCountCuttoff frames ago.
(package private)  void computeDirtyAcrossTransparentBins(RenderAtom r)
           
(package private)  TransparentRenderingInfo computeDirtyAcrossTransparentBins(TextureBin tb, TransparentRenderingInfo startinfo)
           
private  void computeViewFrustumBBox(BoundingBox viewFrustumBBox)
           
(package private)  void convertTransparentRenderingStruct(int oldMode, int newMode)
           
(package private)  TransparentRenderingInfo depthSortAll(TransparentRenderingInfo startinfo)
           
(package private)  void dumpBin(LightBin bin)
           
(package private)  void dumpRM(RenderMolecule rm)
           
private  AttributeBin findAttributeBin(EnvironmentSet envSet, RenderAtom ra)
          This finds or creates an AttributeBin for a given RenderAtom.
private  EnvironmentSet findEnvironmentSet(RenderAtom ra)
          This finds or creates an EnviornmentSet for a given RenderAtom.
private  OrderedCollection findOrderedCollection(GeometryAtom ga, boolean doBackground)
           
private  RenderMolecule findRenderMolecule(TextureBin textureBin, RenderAtom ra)
          This finds or creates a RenderMolecule for a given RenderAtom.
private  ShaderBin findShaderBin(AttributeBin attributeBin, RenderAtom ra)
          This finds or creates an ShaderBin for a given RenderAtom.
private  TextureBin findTextureBin(ShaderBin shaderBin, RenderAtom ra)
          This finds or creates a TextureBin for a given RenderAtom.
(package private)  void freeAllDisplayListResources(Canvas3D cv, Context ctx)
           
private  AttributeBin getAttributeBin(AppearanceRetained app, RenderingAttributesRetained ra)
          This gets a new AttributeBin.
private  EnvironmentSet getEnvironmentSet(RenderAtom ra, LightRetained[] lights, FogRetained fog, ModelClipRetained modelClip)
          This gets a new EnviornmentSet.
private  LightBin getLightBin(int maxLights, BackgroundRetained bg, boolean inOpaque)
          This gets a new LightBin.
private  void getNewEnvironment(RenderAtom ra, LightRetained[] lights, FogRetained fog, ModelClipRetained modelClip, AppearanceRetained app)
           
private  RenderMolecule getRenderMolecule(GeometryAtom ga, PolygonAttributesRetained polya, LineAttributesRetained linea, PointAttributesRetained pointa, MaterialRetained material, ColoringAttributesRetained cola, TransparencyAttributesRetained transa, RenderingAttributesRetained ra, TextureUnitStateRetained[] texUnits, Transform3D[] transform, int[] transformIndex)
          This gets a new RenderMolecule.
private  ShaderBin getShaderBin(ShaderAppearanceRetained sApp)
          This gets a new ShaderBin.
private  TextureBin getTextureBin(TextureUnitStateRetained[] texUnitState, AppearanceRetained app)
          This gets a new TextureBin.
(package private)  TransparentRenderingInfo getTransparentInfo()
           
(package private)  void insertNodes(J3dMessage m)
           
private  RenderMolecule insertRenderAtom(RenderAtom ra)
          This inserts a RenderAtom into the appropriate bin.
(package private)  void lockGeometry()
           
(package private)  TransparentRenderingInfo mergeDepthSort(TransparentRenderingInfo oldList, TransparentRenderingInfo newList)
           
(package private)  void processAppearanceChanged(java.lang.Object[] args)
          This routine get called whenever a component of the appearance changes
(package private)  void processAttributeBinNodeComponentChanged(java.lang.Object[] args)
          This processes a rendering attribute change.
private  void processBgGeometryAtoms(GeometryAtom[] nodes, long referenceTime)
           
(package private)  void processBoundingLeafChanged(java.lang.Object[] args, long refTime)
          This routine get called whenever a region of the boundingleaf changes
(package private)  void processDataChanged(java.lang.Object[] oldGaList, java.lang.Object[] newGaList, long referenceTime)
          Process a Text3D data change.
(package private)  void processFogChanged(java.lang.Object[] args)
           
(package private)  void processGeometryAtom(GeometryAtom ga, long referenceTime)
           
(package private)  void processGeometryAtomsChanged(java.lang.Object[] gaArr)
          This routine removes the GeometryAtoms from RenderBin
(package private)  void processGeometryChanged(java.lang.Object[] args)
          process Geometry changed, mark the display list in which renderMolecule is as dirty
private  void processLightChanged()
          This processes a LIGHT change.
(package private)  void processMessages(long referenceTime)
          This gets overriden by the structure
(package private)  void processModelClipChanged(java.lang.Object[] args)
           
(package private)  void processMorphChanged(java.lang.Object[] args, long refTime)
           
private  void processOrderedGroupInserted(J3dMessage m)
           
private  void processOrderedGroupRemoved(J3dMessage m)
           
(package private)  void processOrientedShape3DChanged(java.lang.Object[] gaArr)
           
(package private)  void processPossibleBinChanged(java.lang.Object[] args)
          Transparency/Line/point/Poly attributes is different from other renderMolecule attributes since the renderatom could move from opaque bin to transparent bin
(package private)  void processRenderAtomTransparentInfo(RenderAtomListInfo rinfo, java.util.ArrayList newList)
           
(package private)  void processRenderMoleculeNodeComponentChanged(java.lang.Object[] args, int mask, int start, boolean restructure)
          This processes a materiala and other rendermolecule node comp change.
(package private)  void processShaderComponentChanged(java.lang.Object[] args)
          This processes a shader component change.
(package private)  void processShapeChanged(java.lang.Object[] args, long refTime)
           
(package private)  void processSwitchChanged(J3dMessage m, long refTime)
           
(package private)  void processTexCoordGenerationChanged(NodeComponentRetained nc, GeometryAtom[] gaArr)
           
private  void processText3DTransformChanged(java.lang.Object[] list, java.lang.Object[] transforms, long referenceTime)
           
(package private)  void processTextureAttributesChanged(NodeComponentRetained nc, GeometryAtom[] gaArr)
           
(package private)  void processTextureChanged(NodeComponentRetained nc, GeometryAtom[] gaArr, java.lang.Object[] args)
           
(package private)  void processTextureUnitStateChanged(NodeComponentRetained nc, GeometryAtom[] gaArr)
           
private  void processTransformChanged(long referenceTime)
           
(package private)  void processViewSpecificGroupChanged(J3dMessage m)
           
private  void reEvaluateAllRenderAtoms(boolean altAppDirty)
           
private  void reEvaluateAlternateAppearance()
           
(package private)  void reEvaluateEnv(java.util.ArrayList mLts, java.util.ArrayList fogs, java.util.ArrayList modelClips, boolean updateDirty, boolean altAppDirty)
           
(package private)  void reEvaluateFog(java.util.ArrayList fogs, boolean updateDirty, boolean altAppDirty)
           
(package private)  void reEvaluateLights(boolean altAppDirty)
           
(package private)  void reEvaluateModelClip(java.util.ArrayList modelClips, boolean updateDirty, boolean altAppDirty)
           
private  void reInsertAttributeBin(EnvironmentSet e, RenderAtom ra)
           
private  void reInsertRenderAtom(TextureBin tb, RenderAtom ra)
           
private  void reInsertShaderBin(AttributeBin ab, RenderAtom ra)
           
private  void reInsertTextureBin(ShaderBin sb, RenderAtom ra)
           
(package private)  void releaseAllDisplayListID()
           
(package private)  void releaseGeometry()
           
(package private)  void removeAllRenderAtoms()
           
(package private)  void removeARenderAtom(RenderAtom ra)
           
(package private)  void removeDirtyRenderMolecule(RenderMolecule rm)
           
(package private)  void removeGeometryDlist(RenderAtomListInfo ra)
           
(package private)  void removeGeometryFromLockList(java.lang.Object geo)
           
(package private)  void removeLightBin(LightBin lbin)
           
(package private)  void removeNodeComponent(java.lang.Object nc)
           
(package private)  void removeNodes(J3dMessage m)
          This is used by MasterControl to process any unused message for final cleanup.
(package private)  void removeOrderedBin(OrderedBin ob)
           
private  void removeOrderedHeadLightBin(LightBin lightBin)
           
(package private)  void removeRenderMolecule(RenderMolecule rm)
           
(package private)  void removeTextureBin(TextureBin tb)
           
(package private)  void removeTransparentObject(java.lang.Object obj)
           
(package private)  void renderBackground(Canvas3D cv)
          This renders the background scene graph.
(package private)  void renderOpaque(Canvas3D cv)
          This renders the opaque objects
(package private)  void renderOrdered(Canvas3D cv)
          This renders the ordered objects
(package private)  void renderOrderedBin(Canvas3D cv, OrderedBin orderedBin, boolean doInfinite)
           
(package private)  void renderOrderedBins(Canvas3D cv, java.util.ArrayList bins, boolean doInfinite)
           
(package private)  void renderTransparent(Canvas3D cv)
          This renders the transparent objects
(package private)  void setBackground(BackgroundRetained back)
          Sets the new background color.
(package private)  void setFrameCountCutoff(int cutoff)
          This sets the number of frames to render before changing the removeCutoffTime
(package private)  void updateAllRenderMolecule(Canvas3D cv)
           
(package private)  void updateAllRenderMolecule(Renderer rdr, Canvas3D cv)
          This method is called to update all renderMolecule for a shared context of a renderer
(package private)  void updateCanvasForDirtyFog(java.util.ArrayList fogs)
           
(package private)  void updateCanvasForDirtyLights(java.util.ArrayList mLts)
           
(package private)  void updateCanvasForDirtyModelClip(java.util.ArrayList modelClips)
           
(package private)  void updateCanvasResource(Canvas3D[] canvases)
           
(package private)  void updateDirtyDisplayLists(Canvas3D cv, java.util.ArrayList rmList, java.util.ArrayList dlistPerRinfoList, java.util.ArrayList raList, boolean useSharedCtx)
           
(package private)  void updateDlistCanvasResource(Canvas3D[] canvases)
           
(package private)  void updateDlistRendererResource(Renderer rdr)
           
(package private)  void updateInfVworldToVpc()
           
 void updateObject()
          updateObject
(package private)  void updateOrientedRAs()
           
(package private)  void updateRendererResource(Renderer rdr)
           
(package private)  void updateTransparentInfo(RenderAtom r)
           
(package private)  void updateViewPlatform(ViewPlatformRetained vp, float radius)
          This routine gets called whenever the position of the view platform has changed.
 
Methods inherited from class javax.media.j3d.J3dStructure
addMessage, clearMessages, getMessages, getNumMessage, getUpdateThreadData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

renderAtoms

java.util.ArrayList renderAtoms
The list of RenderAtoms


lightMessageList

java.util.ArrayList lightMessageList
A couple ArrayLists used during light Processing


m

J3dMessage[] m

rmUpdateList

java.util.ArrayList rmUpdateList
List of renderMolecules that are soleUser have to do a 2 pass, first update values then sort based on equivalent material


aBinUpdateList

java.util.ArrayList aBinUpdateList

sBinUpdateList

java.util.ArrayList sBinUpdateList
List of ShaderBin that are soleUser that needs to have its components updated @updateObject time


tbUpdateList

java.util.ArrayList tbUpdateList
List of TextureBin that are soleUser that needs to have its components updated @updateObject time


updateCheckList

java.util.ArrayList updateCheckList
List of Bins that are soleUser that have new renderAtom added into, which requires a pre-update screening to check if any of its node component changes could have been missed because the changes happen when all the render atoms are temporarily removed from the bin.


maxLights

int maxLights
The number of lights supported by the underlying context.


opaqueBin

LightBin opaqueBin
The opaque objects


addOpaqueBin

LightBin addOpaqueBin
OpaqueBins to be added for the next frame


allTransparentObjects

java.util.ArrayList allTransparentObjects

transparentInfo

TransparentRenderingInfo transparentInfo

positionDirtyList

java.util.ArrayList positionDirtyList
List of RenderAtoms whose postion have changed - only used for depth sorted transparency


white

Color3f white
Used when ColoringAttributes is null


black

Color3f black
Used when Background is null


background

BackgroundRetained background
The backgound color data.


vworldToVpc

Transform3D vworldToVpc
The view platform transforms.


vpcToVworld

Transform3D vpcToVworld

vpSchedSphereInVworld

BoundingSphere vpSchedSphereInVworld
Two bounding spheres to track the scheduling region of the view platform.


viewFrustumBBox

BoundingBox viewFrustumBBox
To cache the view frustum bounding box.


canvasFrustumBBox

BoundingBox canvasFrustumBBox

afterFirst

boolean afterFirst
To ensure that vpcToVworld is valid (not null) for the first pass


backClipDistanceInVworld

double backClipDistanceInVworld
back clip distance in vworld


backClipActive

boolean backClipActive

frameCount

int frameCount
These variables control when compaction occurs


frameCountCutoff

int frameCountCutoff

notVisibleCount

int notVisibleCount

removeCutoffTime

long removeCutoffTime

transformMsg

boolean transformMsg
variables to process transform messages


targets

UpdateTargets targets

blUsers

java.util.ArrayList blUsers

view

View view
The View for this render bin


transparencySortComparator

private java.util.Comparator transparencySortComparator

toBeAddedTextureResourceFreeList

private java.util.ArrayList toBeAddedTextureResourceFreeList

displayListResourceFreeList

private java.util.ArrayList displayListResourceFreeList

orderedBins

java.util.ArrayList orderedBins

changedLts

java.util.ArrayList changedLts

changedFogs

java.util.ArrayList changedFogs

changedModelClips

java.util.ArrayList changedModelClips

REEVALUATE_LIGHTS

static int REEVALUATE_LIGHTS

REEVALUATE_FOG

static int REEVALUATE_FOG

REEVALUATE_MCLIP

static int REEVALUATE_MCLIP

REEVALUATE_ALL_ENV

static int REEVALUATE_ALL_ENV

envDirty

int envDirty

reEvaluateBg

private boolean reEvaluateBg

reloadBgTexture

private boolean reloadBgTexture

reEvaluateClip

boolean reEvaluateClip

reEvaluateSortMode

boolean reEvaluateSortMode

renderMoleculeList

IndexedUnorderSet renderMoleculeList

sharedDList

java.util.Collection sharedDList

dirtyRenderMoleculeList

java.util.ArrayList dirtyRenderMoleculeList

objUpdateList

java.util.ArrayList objUpdateList
ArrayList of objects to be updated


raLocaleVwcBoundsUpdateList

java.util.ArrayList raLocaleVwcBoundsUpdateList

removeRenderAtomInRMList

IndexedUnorderSet removeRenderAtomInRMList
remove the bins first before adding them to new ones


ogCIOList

java.util.ArrayList ogCIOList
list of affect OrderedGroups with childIndexOrder changed.


obList

java.util.ArrayList obList
list of ordered bins from which orderedCollection are added/removed


orderedBinsList

java.util.ArrayList orderedBinsList
Ordered Bin processing


toBeAddedBinList

java.util.ArrayList toBeAddedBinList

lockGeometryList

java.util.ArrayList lockGeometryList
arraylist of geometry that should be locked to ensure that the same snapshot of the geometry is rendered across all canvases


dlistLockList

java.util.ArrayList dlistLockList
arraylist of dlist that will be rebuilt


geometryBackground

BackgroundRetained geometryBackground

bgOpaqueBin

LightBin bgOpaqueBin

bgAddOpaqueBin

LightBin bgAddOpaqueBin

bgOrderedBins

java.util.ArrayList bgOrderedBins

bgTransparentInfo

TransparentRenderingInfo bgTransparentInfo

infVworldToVpc

Transform3D infVworldToVpc

vpcToVworldDirty

boolean vpcToVworldDirty

currentActiveBackground

BackgroundRetained currentActiveBackground

altAppearanceDirty

boolean altAppearanceDirty

nodeComponentList

java.util.ArrayList nodeComponentList

newNodeComponentList

java.util.ArrayList newNodeComponentList

removeNodeComponentList

java.util.ArrayList removeNodeComponentList

dirtyNodeComponentList

java.util.ArrayList dirtyNodeComponentList

textureBinList

java.util.ArrayList textureBinList

dirtyReferenceGeomList

java.util.ArrayList dirtyReferenceGeomList
arraylist of refernce geometry that should be locked when transparency is on, so that we can make a mirror copy of the colors safely


orientedRAs

java.util.ArrayList orientedRAs

dirtyOrientedRAs

java.util.ArrayList dirtyOrientedRAs

cachedDirtyOrientedRAs

java.util.ArrayList cachedDirtyOrientedRAs

offScreenMessage

java.util.ArrayList offScreenMessage

localeTranslation

Vector3d localeTranslation

addDlist

private java.util.HashSet addDlist

removeDlist

private java.util.HashSet removeDlist

addDlistPerRinfo

java.util.ArrayList addDlistPerRinfo

removeDlistPerRinfo

java.util.ArrayList removeDlistPerRinfo

locale

Locale locale

localeChanged

boolean localeChanged

dlistRenderMethod

DisplayListRenderMethod dlistRenderMethod

reactivateView

boolean reactivateView

visGAIsDirty

private boolean visGAIsDirty
A flag indicates that the cached visible GeometryAtoms for this RenderBin might be invalid.


visQuery

private boolean visQuery
A flag indicates that a visibility query to the GeometryStructure is needed.


dirtyList

java.util.ArrayList dirtyList

transpSortMode

int transpSortMode

cachedTranspSortMode

int cachedTranspSortMode

dirtyDepthSortRenderAtom

private java.util.LinkedHashSet dirtyDepthSortRenderAtom

numDirtyTinfo

private int numDirtyTinfo

eyeInVworld

Point3d eyeInVworld

nElements

int nElements
Constructor Detail

RenderBin

RenderBin(VirtualUniverse u,
          View v)
Constructs a new RenderBin

Method Detail

updateObject

public void updateObject()
updateObject

Specified by:
updateObject in interface ObjectUpdate

updateDlistRendererResource

void updateDlistRendererResource(Renderer rdr)

updateDlistCanvasResource

void updateDlistCanvasResource(Canvas3D[] canvases)

clearAllUpdateObjectState

void clearAllUpdateObjectState()

updateRendererResource

void updateRendererResource(Renderer rdr)

updateCanvasResource

void updateCanvasResource(Canvas3D[] canvases)

processMessages

void processMessages(long referenceTime)
Description copied from class: J3dStructure
This gets overriden by the structure

Specified by:
processMessages in class J3dStructure

processSwitchChanged

void processSwitchChanged(J3dMessage m,
                          long refTime)

processPossibleBinChanged

void processPossibleBinChanged(java.lang.Object[] args)
Transparency/Line/point/Poly attributes is different from other renderMolecule attributes since the renderatom could move from opaque bin to transparent bin


processRenderMoleculeNodeComponentChanged

void processRenderMoleculeNodeComponentChanged(java.lang.Object[] args,
                                               int mask,
                                               int start,
                                               boolean restructure)
This processes a materiala and other rendermolecule node comp change.


processTextureAttributesChanged

void processTextureAttributesChanged(NodeComponentRetained nc,
                                     GeometryAtom[] gaArr)

processTexCoordGenerationChanged

void processTexCoordGenerationChanged(NodeComponentRetained nc,
                                      GeometryAtom[] gaArr)

processTextureChanged

void processTextureChanged(NodeComponentRetained nc,
                           GeometryAtom[] gaArr,
                           java.lang.Object[] args)

processTextureUnitStateChanged

void processTextureUnitStateChanged(NodeComponentRetained nc,
                                    GeometryAtom[] gaArr)

processAttributeBinNodeComponentChanged

void processAttributeBinNodeComponentChanged(java.lang.Object[] args)
This processes a rendering attribute change.


processShaderComponentChanged

void processShaderComponentChanged(java.lang.Object[] args)
This processes a shader component change.


processFogChanged

void processFogChanged(java.lang.Object[] args)

processAppearanceChanged

void processAppearanceChanged(java.lang.Object[] args)
This routine get called whenever a component of the appearance changes


processModelClipChanged

void processModelClipChanged(java.lang.Object[] args)

processBoundingLeafChanged

void processBoundingLeafChanged(java.lang.Object[] args,
                                long refTime)
This routine get called whenever a region of the boundingleaf changes


processOrientedShape3DChanged

void processOrientedShape3DChanged(java.lang.Object[] gaArr)

processShapeChanged

void processShapeChanged(java.lang.Object[] args,
                         long refTime)

processDataChanged

void processDataChanged(java.lang.Object[] oldGaList,
                        java.lang.Object[] newGaList,
                        long referenceTime)
Process a Text3D data change. This involves removing all the old geometry atoms in the list, and the creating new ones.


processMorphChanged

void processMorphChanged(java.lang.Object[] args,
                         long refTime)

updateViewPlatform

void updateViewPlatform(ViewPlatformRetained vp,
                        float radius)
This routine gets called whenever the position of the view platform has changed.


processGeometryAtomsChanged

void processGeometryAtomsChanged(java.lang.Object[] gaArr)
This routine removes the GeometryAtoms from RenderBin


processGeometryChanged

void processGeometryChanged(java.lang.Object[] args)
process Geometry changed, mark the display list in which renderMolecule is as dirty


addTextureBin

void addTextureBin(TextureBin tb)

removeTextureBin

void removeTextureBin(TextureBin tb)

addDirtyRenderMolecule

void addDirtyRenderMolecule(RenderMolecule rm)

removeDirtyRenderMolecule

void removeDirtyRenderMolecule(RenderMolecule rm)

updateDirtyDisplayLists

void updateDirtyDisplayLists(Canvas3D cv,
                             java.util.ArrayList rmList,
                             java.util.ArrayList dlistPerRinfoList,
                             java.util.ArrayList raList,
                             boolean useSharedCtx)

removeRenderMolecule

void removeRenderMolecule(RenderMolecule rm)

updateAllRenderMolecule

void updateAllRenderMolecule(Canvas3D cv)

updateAllRenderMolecule

void updateAllRenderMolecule(Renderer rdr,
                             Canvas3D cv)
This method is called to update all renderMolecule for a shared context of a renderer


processText3DTransformChanged

private void processText3DTransformChanged(java.lang.Object[] list,
                                           java.lang.Object[] transforms,
                                           long referenceTime)

processOrderedGroupRemoved

private void processOrderedGroupRemoved(J3dMessage m)

processOrderedGroupInserted

private void processOrderedGroupInserted(J3dMessage m)

processTransformChanged

private void processTransformChanged(long referenceTime)

processLightChanged

private void processLightChanged()
This processes a LIGHT change.


processGeometryAtom

void processGeometryAtom(GeometryAtom ga,
                         long referenceTime)

processBgGeometryAtoms

private void processBgGeometryAtoms(GeometryAtom[] nodes,
                                    long referenceTime)

checkForCompaction

private void checkForCompaction()
This method looks through the list of RenderAtoms to see if compaction is needed.


setFrameCountCutoff

void setFrameCountCutoff(int cutoff)
This sets the number of frames to render before changing the removeCutoffTime


compact

void compact()
This method stores the timestamp of the frame frameCountCuttoff frames ago. It also does compaction if it is needed.


reEvaluateAlternateAppearance

private void reEvaluateAlternateAppearance()

reEvaluateAllRenderAtoms

private void reEvaluateAllRenderAtoms(boolean altAppDirty)

getNewEnvironment

private void getNewEnvironment(RenderAtom ra,
                               LightRetained[] lights,
                               FogRetained fog,
                               ModelClipRetained modelClip,
                               AppearanceRetained app)

reInsertAttributeBin

private void reInsertAttributeBin(EnvironmentSet e,
                                  RenderAtom ra)

reInsertShaderBin

private void reInsertShaderBin(AttributeBin ab,
                               RenderAtom ra)

reInsertTextureBin

private void reInsertTextureBin(ShaderBin sb,
                                RenderAtom ra)

reInsertRenderAtom

private void reInsertRenderAtom(TextureBin tb,
                                RenderAtom ra)

computeViewFrustumBBox

private void computeViewFrustumBBox(BoundingBox viewFrustumBBox)

insertRenderAtom

private RenderMolecule insertRenderAtom(RenderAtom ra)
This inserts a RenderAtom into the appropriate bin.


findOrderedCollection

private OrderedCollection findOrderedCollection(GeometryAtom ga,
                                                boolean doBackground)

removeOrderedHeadLightBin

private void removeOrderedHeadLightBin(LightBin lightBin)

getEnvironmentSet

private EnvironmentSet getEnvironmentSet(RenderAtom ra,
                                         LightRetained[] lights,
                                         FogRetained fog,
                                         ModelClipRetained modelClip)
This gets a new EnviornmentSet. It creates one if there are none on the freelist.


findAttributeBin

private AttributeBin findAttributeBin(EnvironmentSet envSet,
                                      RenderAtom ra)
This finds or creates an AttributeBin for a given RenderAtom.


findShaderBin

private ShaderBin findShaderBin(AttributeBin attributeBin,
                                RenderAtom ra)
This finds or creates an ShaderBin for a given RenderAtom.


findTextureBin

private TextureBin findTextureBin(ShaderBin shaderBin,
                                  RenderAtom ra)
This finds or creates a TextureBin for a given RenderAtom.


findRenderMolecule

private RenderMolecule findRenderMolecule(TextureBin textureBin,
                                          RenderAtom ra)
This finds or creates a RenderMolecule for a given RenderAtom.


getShaderBin

private ShaderBin getShaderBin(ShaderAppearanceRetained sApp)
This gets a new ShaderBin. It creates one if there are none on the freelist.


getAttributeBin

private AttributeBin getAttributeBin(AppearanceRetained app,
                                     RenderingAttributesRetained ra)
This gets a new AttributeBin. It creates one if there are none on the freelist.


getLightBin

private LightBin getLightBin(int maxLights,
                             BackgroundRetained bg,
                             boolean inOpaque)
This gets a new LightBin. It creates one if there are none on the freelist.


getTextureBin

private TextureBin getTextureBin(TextureUnitStateRetained[] texUnitState,
                                 AppearanceRetained app)
This gets a new TextureBin. It creates one if there are none on the freelist.


getRenderMolecule

private RenderMolecule getRenderMolecule(GeometryAtom ga,
                                         PolygonAttributesRetained polya,
                                         LineAttributesRetained linea,
                                         PointAttributesRetained pointa,
                                         MaterialRetained material,
                                         ColoringAttributesRetained cola,
                                         TransparencyAttributesRetained transa,
                                         RenderingAttributesRetained ra,
                                         TextureUnitStateRetained[] texUnits,
                                         Transform3D[] transform,
                                         int[] transformIndex)
This gets a new RenderMolecule. It creates one if there are none on the freelist.


findEnvironmentSet

private EnvironmentSet findEnvironmentSet(RenderAtom ra)
This finds or creates an EnviornmentSet for a given RenderAtom. This also deals with empty LightBin lists.


removeLightBin

void removeLightBin(LightBin lbin)

addDisplayListResourceFreeList

void addDisplayListResourceFreeList(RenderMolecule rm)

renderBackground

void renderBackground(Canvas3D cv)
This renders the background scene graph.


renderOpaque

void renderOpaque(Canvas3D cv)
This renders the opaque objects


renderTransparent

void renderTransparent(Canvas3D cv)
This renders the transparent objects


renderOrdered

void renderOrdered(Canvas3D cv)
This renders the ordered objects


renderOrderedBins

void renderOrderedBins(Canvas3D cv,
                       java.util.ArrayList bins,
                       boolean doInfinite)

renderOrderedBin

void renderOrderedBin(Canvas3D cv,
                      OrderedBin orderedBin,
                      boolean doInfinite)

setBackground

void setBackground(BackgroundRetained back)
Sets the new background color.


reEvaluateFog

void reEvaluateFog(java.util.ArrayList fogs,
                   boolean updateDirty,
                   boolean altAppDirty)

updateCanvasForDirtyFog

void updateCanvasForDirtyFog(java.util.ArrayList fogs)

reEvaluateModelClip

void reEvaluateModelClip(java.util.ArrayList modelClips,
                         boolean updateDirty,
                         boolean altAppDirty)

updateCanvasForDirtyModelClip

void updateCanvasForDirtyModelClip(java.util.ArrayList modelClips)

reEvaluateLights

void reEvaluateLights(boolean altAppDirty)

updateCanvasForDirtyLights

void updateCanvasForDirtyLights(java.util.ArrayList mLts)

addTextureResourceFreeList

void addTextureResourceFreeList(TextureRetained tex)

reEvaluateEnv

void reEvaluateEnv(java.util.ArrayList mLts,
                   java.util.ArrayList fogs,
                   java.util.ArrayList modelClips,
                   boolean updateDirty,
                   boolean altAppDirty)

updateInfVworldToVpc

void updateInfVworldToVpc()

lockGeometry

void lockGeometry()

releaseGeometry

void releaseGeometry()

addGeometryToLockList

void addGeometryToLockList(java.lang.Object geo)

removeGeometryFromLockList

void removeGeometryFromLockList(java.lang.Object geo)

addDirtyReferenceGeometry

void addDirtyReferenceGeometry(java.lang.Object geo)

addNodeComponent

void addNodeComponent(java.lang.Object nc)

removeNodeComponent

void removeNodeComponent(java.lang.Object nc)

addDirtyNodeComponent

void addDirtyNodeComponent(java.lang.Object nc)

clearDirtyOrientedRAs

void clearDirtyOrientedRAs()

updateOrientedRAs

void updateOrientedRAs()

removeARenderAtom

void removeARenderAtom(RenderAtom ra)

removeAllRenderAtoms

void removeAllRenderAtoms()

removeOrderedBin

void removeOrderedBin(OrderedBin ob)

removeGeometryDlist

void removeGeometryDlist(RenderAtomListInfo ra)

addGeometryDlist

void addGeometryDlist(RenderAtomListInfo ra)

dumpBin

void dumpBin(LightBin bin)

dumpRM

void dumpRM(RenderMolecule rm)

removeTransparentObject

void removeTransparentObject(java.lang.Object obj)

updateTransparentInfo

void updateTransparentInfo(RenderAtom r)

addTransparentObject

void addTransparentObject(java.lang.Object obj)

getTransparentInfo

TransparentRenderingInfo getTransparentInfo()

computeDirtyAcrossTransparentBins

TransparentRenderingInfo computeDirtyAcrossTransparentBins(TextureBin tb,
                                                           TransparentRenderingInfo startinfo)

computeDirtyAcrossTransparentBins

void computeDirtyAcrossTransparentBins(RenderAtom r)

processRenderAtomTransparentInfo

void processRenderAtomTransparentInfo(RenderAtomListInfo rinfo,
                                      java.util.ArrayList newList)

convertTransparentRenderingStruct

void convertTransparentRenderingStruct(int oldMode,
                                       int newMode)

mergeDepthSort

TransparentRenderingInfo mergeDepthSort(TransparentRenderingInfo oldList,
                                        TransparentRenderingInfo newList)

collectDirtyTRInfo

TransparentRenderingInfo collectDirtyTRInfo(TransparentRenderingInfo dirtyList,
                                            RenderAtom r)

depthSortAll

TransparentRenderingInfo depthSortAll(TransparentRenderingInfo startinfo)

processViewSpecificGroupChanged

void processViewSpecificGroupChanged(J3dMessage m)

insertNodes

void insertNodes(J3dMessage m)

removeNodes

void removeNodes(J3dMessage m)
Description copied from class: J3dStructure
This is used by MasterControl to process any unused message for final cleanup. DON'T decrememt message count in the method, as it is done by MasterControl.

Specified by:
removeNodes in class J3dStructure

cleanup

void cleanup()
Description copied from class: J3dStructure
Release resource associate with this structure before GC We need to clear all those IndexedUnorderSet/WakeupIndexedList so that the listIdx associate with IndexedObject reset to -1.

Specified by:
cleanup in class J3dStructure

freeAllDisplayListResources

void freeAllDisplayListResources(Canvas3D cv,
                                 Context ctx)

releaseAllDisplayListID

void releaseAllDisplayListID()


Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.