RenderPassManager
Engine/source/renderInstance/renderPassManager.h
Allocation interface
SharedTransformType { View Projection }
T *
Allocate a render instance, use like so: MyRenderInstType* t = gRenderInstMgr->allocInst
MatrixF *
allocUniqueXform(const MatrixF & data)
Allocate a matrix, valid until ::clear called.
assignSharedXform(SharedTransformType stt, const MatrixF & xfm)
Allocate a GFXPrimitive object which will remain valid until the pass manager is cleared.
RenderBinManager interface
addManager(RenderBinManager * mgr)
Add a render bin manager to the list of render bin manager, this SceneRenderPassManager now owns the render bin manager and will free it when needed.
removeManager(RenderBinManager * mgr)
Removes a manager from render and process add lists.
How many render bin managers do we have?
getManager(S32 i)
Get the render manager at i.
Public Types
Signal< void(RenderInst *inst)>
AddInstSignal
Signal< void(RenderBinManager *bin, const SceneRenderState *state, bool preRender)>
RenderBinEventSignal
This signal is triggered when a render bin is about to be rendered.
Private Types
Parent
Protected Types
AddInstTable
Public Static Attributes
Protected Attributes
Public Functions
addInst(RenderInst * inst)
Add a RenderInstance to the list.
clear()
Resets our allocated RenderInstances and Matrices. (Normally, one should just call renderPass)
Returns the active depth buffer for this pass (NOTE: This value may be GFXTextureTarget::sDefaultDepthStencil)
Get scene manager which this render pass belongs to.
render(SceneRenderState * state)
Renders the list of RenderInsts (Normally, one should just call renderPass)
renderPass(SceneRenderState * state)
setDepthTargetTexture(GFXTextureObject * zTarget)
Assigns the value for the above method.
sort()
Sorts the list of RenderInst's per bin. (Normally, one should just call renderPass)
Public Static Functions
Protected Functions
_insertSort(Vector< RenderBinManager * > & list, RenderBinManager * mgr, bool renderOrder)
Do a sorted insert into a vector, renderOrder bool controls which test we run for insertion.
Detailed Description
Allocation interface
SharedTransformType
Enumerator
- View
- Projection
allocInst()
Allocate a render instance, use like so: MyRenderInstType* t = gRenderInstMgr->allocInst
allocUniqueXform(const MatrixF & data)
Allocate a matrix, valid until ::clear called.
allocSharedXform(SharedTransformType stt)
assignSharedXform(SharedTransformType stt, const MatrixF & xfm)
getMatrixSet()
allocPrim()
Allocate a GFXPrimitive object which will remain valid until the pass manager is cleared.
RenderBinManager interface
addManager(RenderBinManager * mgr)
Add a render bin manager to the list of render bin manager, this SceneRenderPassManager now owns the render bin manager and will free it when needed.
Parameters:
mgr | Render manager to add |
processAddOrder | Where to add the manager in the addInst list, set to NO_PROCESSADD to skip processing this is in place for RenderManagers that will bypass the main ::addInst interface and doesn't want to process them. |
renderOrder | Where to add the manager in the render list. |
removeManager(RenderBinManager * mgr)
Removes a manager from render and process add lists.
Parameters:
mgr | Render bin manager to remove, the caller is now responsible for freeing the mgr. |
getManagerCount()
How many render bin managers do we have?
getManager(S32 i)
Get the render manager at i.
Public Types
typedef Signal< void(RenderInst *inst)> AddInstSignal
typedef Signal< void(RenderBinManager *bin, const SceneRenderState *state, bool preRender)> RenderBinEventSignal
This signal is triggered when a render bin is about to be rendered.
Parameters:
bin | The render bin we're signaling. |
state | The current scene state. @params preRender If true it is before the bin is rendered, else its after being rendered. |
Private Types
typedef SimObject Parent
Protected Types
typedef HashTable< RenderInstTypeHash, AddInstSignal > AddInstTable
Public Static Attributes
const RenderInstType RIT_Begin
const RenderInstType RIT_Custom
const RenderInstType RIT_Decal
const RenderInstType RIT_DecalRoad
const RenderInstType RIT_Editor
const RenderInstType RIT_Foliage
const RenderInstType RIT_Mesh
const RenderInstType RIT_Object
const RenderInstType RIT_ObjectTranslucent
const RenderInstType RIT_Occluder
const RenderInstType RIT_Particle
const RenderInstType RIT_Probes
const RenderInstType RIT_Shadow
const RenderInstType RIT_Sky
const RenderInstType RIT_Terrain
const RenderInstType RIT_Translucent
const RenderInstType RIT_VolumetricFog
const RenderInstType RIT_Water
Protected Attributes
AddInstTable mAddInstSignals
MultiTypedChunker mChunker
GFXTexHandle mDepthBuff
MatrixSet * mMatrixSet
Vector< RenderBinManager * > mRenderBins
SceneManager * mSceneManager
Public Functions
RenderPassManager()
~RenderPassManager()
addInst(RenderInst * inst)
Add a RenderInstance to the list.
Reimplemented by: ShadowRenderPassManager
clear()
Resets our allocated RenderInstances and Matrices. (Normally, one should just call renderPass)
DECLARE_CONOBJECT(RenderPassManager )
getAddSignal(RenderInstTypeHash type)
getDepthTargetTexture()
Returns the active depth buffer for this pass (NOTE: This value may be GFXTextureTarget::sDefaultDepthStencil)
getSceneManager()
Get scene manager which this render pass belongs to.
render(SceneRenderState * state)
Renders the list of RenderInsts (Normally, one should just call renderPass)
renderPass(SceneRenderState * state)
setDepthTargetTexture(GFXTextureObject * zTarget)
Assigns the value for the above method.
sort()
Sorts the list of RenderInst's per bin. (Normally, one should just call renderPass)
Public Static Functions
getRenderBinSignal()
initPersistFields()
Protected Functions
_insertSort(Vector< RenderBinManager * > & list, RenderBinManager * mgr, bool renderOrder)
Do a sorted insert into a vector, renderOrder bool controls which test we run for insertion.