OGRE  2.2.4
Object-Oriented Graphics Rendering Engine
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, 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. More...
 
void _removeAllBarriers (void)
 
void addResourceTransition (ResourceLayoutMap::iterator currentLayout, ResourceLayout::Layout newLayout, uint32 readBarrierBits)
 
virtual void execute (const Camera *lodCameraconst)=0
 
Vector2 getActualDimensions (void) const
 
const CompositorPassDefgetDefinition (void) const
 
const CompositorNodegetParentNode (void) const
 
RenderPassDescriptorgetRenderPassDesc (void) const
 
const CompositorTextureVecgetTextureDependencies (void) const
 
CompositorPassType getType () const
 
virtual void notifyCleared (void)
 CompositorNode::_notifyCleared More...
 
virtual void notifyDestroyed (TextureGpu *channel)
 CompositorNode::notifyDestroyed More...
 
virtual void notifyDestroyed (const UavBufferPacked *buffer)
 
virtual bool notifyRecreated (const TextureGpu *channel)
 CompositorNode::notifyRecreated More...
 
virtual void notifyRecreated (const UavBufferPacked *oldBuffer, UavBufferPacked *newBuffer)
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, void *)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void * operator new[] (size_t sz)
 
void profilingBegin (void)
 
void profilingEnd (void)
 
virtual 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,
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::CompositorPassCompute, Ogre::CompositorPassScene, Ogre::CompositorPassIblSpecular, Ogre::CompositorPassMipmap, Ogre::CompositorPassUav, Ogre::CompositorPassClear, and Ogre::CompositorPassDepthCopy.

◆ _removeAllBarriers()

void Ogre::CompositorPass::_removeAllBarriers ( void  )

◆ addResourceTransition()

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

◆ execute()

◆ getActualDimensions()

Vector2 Ogre::CompositorPass::getActualDimensions ( void  ) const

◆ getDefinition()

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

◆ getParentNode()

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

◆ getRenderPassDesc()

RenderPassDescriptor* Ogre::CompositorPass::getRenderPassDesc ( void  ) const
inline

◆ getTextureDependencies()

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

◆ getType()

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

◆ notifyCleared()

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

◆ notifyDestroyed() [1/2]

virtual void Ogre::CompositorPass::notifyDestroyed ( TextureGpu channel)
virtual

◆ notifyDestroyed() [2/2]

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

◆ notifyRecreated() [1/2]

virtual bool Ogre::CompositorPass::notifyRecreated ( const TextureGpu channel)
virtual

◆ notifyRecreated() [2/2]

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

Reimplemented in Ogre::CompositorPassUav.

◆ 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,
void *   
)
inlineinherited

◆ operator delete() [3/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
)
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,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

operator new, with debug line info

◆ operator new() [2/3]

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

◆ 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,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

array operator new, with debug line info

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

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

◆ profilingBegin()

void Ogre::CompositorPass::profilingBegin ( void  )

◆ profilingEnd()

void Ogre::CompositorPass::profilingEnd ( void  )

◆ resetNumPassesLeft()

virtual void Ogre::CompositorPass::resetNumPassesLeft ( void  )
virtual

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