OGRE 2.1
Object-Oriented Graphics Rendering Engine
Loading...
Searching...
No Matches
Ogre::CompositorPass Class Referenceabstract

Abstract class for compositor passes. More...

#include <OgreCompositorPass.h>

+ Inheritance diagram for Ogre::CompositorPass:

Public Member Functions

 CompositorPass (const CompositorPassDef *definition, const CompositorChannel &target, CompositorNode *parentNode)
 
virtual ~CompositorPass ()
 
virtual void _placeBarriersAndEmulateUavExecution (BoundUav boundUavs[64], ResourceAccessMap &uavsAccess, ResourceLayoutMap &resourcesLayout)
 Emulates the execution of a UAV to understand memory dependencies, and adds a memory barrier / resource transition if we need to.
 
void _removeAllBarriers (void)
 
void addResourceTransition (ResourceLayoutMap::iterator currentLayout, ResourceLayout::Layout newLayout, uint32 readBarrierBits)
 
virtual void execute (const Camera *lodCameraconst)=0
 
const CompositorPassDefgetDefinition (void) const
 
const CompositorNodegetParentNode (void) const
 
RenderTargetgetRenderTarget (void) const
 
const CompositorTexturegetTargetTexture (void) const
 
const CompositorTextureVecgetTextureDependencies (void) const
 
CompositorPassType getType () const
 
ViewportgetViewport () const
 
virtual void notifyCleared (void)
 @See CompositorNode::_notifyCleared
 
virtual void notifyDestroyed (const CompositorChannel &channel)
 @See CompositorNode::notifyDestroyed
 
virtual void notifyDestroyed (const UavBufferPacked *buffer)
 
virtual void notifyRecreated (const CompositorChannel &oldChannel, const CompositorChannel &newChannel)
 @See CompositorNode::notifyRecreated
 
virtual void notifyRecreated (const UavBufferPacked *oldBuffer, UavBufferPacked *newBuffer)
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete (void *ptr, void *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
voidoperator new (size_t sz)
 
voidoperator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info
 
voidoperator new (size_t sz, void *ptr)
 placement operator new
 
voidoperator new[] (size_t sz)
 
voidoperator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info
 
void profilingBegin (void)
 
void profilingEnd (void)
 
void resetNumPassesLeft (void)
 

Detailed Description

Abstract class for compositor passes.

A pass can be a fullscreen quad, a scene rendering, a clear. etc. Derived classes are responsible for performing an actual job. Note that passes do not own RenderTargets, therefore we're not responsible for destroying it.

Author
Matias N. Goldberg
Version
1.0

Constructor & Destructor Documentation

◆ CompositorPass()

Ogre::CompositorPass::CompositorPass ( const CompositorPassDef definition,
const CompositorChannel target,
CompositorNode parentNode 
)

◆ ~CompositorPass()

virtual Ogre::CompositorPass::~CompositorPass ( )
virtual

Member Function Documentation

◆ _placeBarriersAndEmulateUavExecution()

virtual void Ogre::CompositorPass::_placeBarriersAndEmulateUavExecution ( BoundUav  boundUavs[64],
ResourceAccessMap uavsAccess,
ResourceLayoutMap resourcesLayout 
)
virtual

Emulates the execution of a UAV to understand memory dependencies, and adds a memory barrier / resource transition if we need to.

Remarks
Note that an UAV->UAV resource transition is just a memory barrier.
Parameters
boundUavs[in/out] An array of the currently bound UAVs by slot. The derived class CompositorPassUav will write to them as part of the emulation. The base implementation reads from this value.
uavsAccess[in/out] A map with the last access flag used for each RenderTarget. We need it to identify RaR situations, which are the only ones that don't need a barrier (and also WaW hazards, when explicitly allowed by the pass). Note: We will set the access to ResourceAccess::Undefined to signal other passes that the UAV hazard already has a barrier (just in case there was one already created).
resourcesLayout[in/out] A map with the current layout of every RenderTarget used so far. Needed to identify if we need to change the resource layout to an UAV.

Reimplemented in Ogre::CompositorPassClear, Ogre::CompositorPassCompute, Ogre::CompositorPassDepthCopy, Ogre::CompositorPassMipmap, Ogre::CompositorPassScene, and Ogre::CompositorPassUav.

◆ _removeAllBarriers()

void Ogre::CompositorPass::_removeAllBarriers ( void  )

◆ addResourceTransition()

void Ogre::CompositorPass::addResourceTransition ( ResourceLayoutMap::iterator  currentLayout,
ResourceLayout::Layout  newLayout,
uint32  readBarrierBits 
)

◆ execute()

◆ getDefinition()

const CompositorPassDef * Ogre::CompositorPass::getDefinition ( void  ) const
inline

◆ getParentNode()

const CompositorNode * Ogre::CompositorPass::getParentNode ( void  ) const
inline

◆ getRenderTarget()

RenderTarget * Ogre::CompositorPass::getRenderTarget ( void  ) const
inline

◆ getTargetTexture()

const CompositorTexture & Ogre::CompositorPass::getTargetTexture ( void  ) const
inline

◆ getTextureDependencies()

const CompositorTextureVec & Ogre::CompositorPass::getTextureDependencies ( void  ) const
inline

◆ getType()

CompositorPassType Ogre::CompositorPass::getType ( ) const
inline

◆ getViewport()

Viewport * Ogre::CompositorPass::getViewport ( ) const
inline

◆ notifyCleared()

virtual void Ogre::CompositorPass::notifyCleared ( void  )
virtual

◆ notifyDestroyed() [1/2]

virtual void Ogre::CompositorPass::notifyDestroyed ( const CompositorChannel channel)
virtual

◆ notifyDestroyed() [2/2]

virtual void Ogre::CompositorPass::notifyDestroyed ( const UavBufferPacked buffer)
virtual

◆ notifyRecreated() [1/2]

virtual void Ogre::CompositorPass::notifyRecreated ( const CompositorChannel oldChannel,
const CompositorChannel newChannel 
)
virtual

◆ notifyRecreated() [2/2]

virtual void Ogre::CompositorPass::notifyRecreated ( const UavBufferPacked oldBuffer,
UavBufferPacked newBuffer 
)
virtual

◆ operator delete() [1/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void ptr)
inlineinherited

◆ operator delete() [2/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void ptr,
const char ,
int  ,
const char  
)
inlineinherited

◆ operator delete() [3/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void ptr,
void  
)
inlineinherited

◆ operator delete[]() [1/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void ptr)
inlineinherited

◆ operator delete[]() [2/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void ptr,
const char ,
int  ,
const char  
)
inlineinherited

◆ operator new() [1/3]

template<class Alloc >
void * Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inlineinherited

◆ operator new() [2/3]

template<class Alloc >
void * Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char file,
int  line,
const char func 
)
inlineinherited

operator new, with debug line info

◆ operator new() [3/3]

template<class Alloc >
void * Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void ptr 
)
inlineinherited

placement operator new

◆ operator new[]() [1/2]

template<class Alloc >
void * Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inlineinherited

◆ operator new[]() [2/2]

template<class Alloc >
void * Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char file,
int  line,
const char func 
)
inlineinherited

array operator new, with debug line info

◆ profilingBegin()

void Ogre::CompositorPass::profilingBegin ( void  )

◆ profilingEnd()

void Ogre::CompositorPass::profilingEnd ( void  )

◆ resetNumPassesLeft()

void Ogre::CompositorPass::resetNumPassesLeft ( void  )

The documentation for this class was generated from the following file: