Ogre::CompositorInstance Class Reference
Effects

An instance of a Compositor object for one Viewport. More...

`#include <OgreCompositorInstance.h>`

Inheritance diagram for Ogre::CompositorInstance:
[legend]

List of all members.

## Classes

class | Listener
| Provides an interface to "listen in" to to render system operations executed by this CompositorInstance. More...
class | RenderSystemOperation
| Specific render system operation. More...
class | TargetOperation
| Operation setup for a RenderTarget (collected). More...

## Public Types

typedef map< int, MaterialPtr > ::type | QuadMaterialMap
typedef std::pair< int, RenderSystemOperation * > | RenderSystemOpPair
typedef vector < RenderSystemOpPair >::type | RenderSystemOpPairs
typedef vector < TargetOperation >::type | CompiledState

## Public Member Functions

| CompositorInstance (CompositionTechnique *technique, CompositorChain *chain)
virtual | ~CompositorInstance ()
void | setEnabled (bool value)
| Set enabled flag.
bool | getEnabled () const
| Get enabled flag.
void | setAlive (bool value)
| Set alive/active flag.
bool | getAlive () const
| Get alive flag.
const String & | getTextureInstanceName (const String &name, size_t mrtIndex)
| Get the instance name for a local texture.
TexturePtr | getTextureInstance (const String &name, size_t mrtIndex)
| Get the instance of a local texture.
RenderTarget * | getRenderTarget (const String &name)
| Get the render target for a given render texture name.
virtual void | _compileTargetOperations (CompiledState &compiledState)
| Recursively collect target states (except for final Pass).
virtual void | _compileOutputOperation (TargetOperation &finalState)
| Compile the final (output) operation.
Compositor * | getCompositor ()
| Get Compositor of which this is an instance.
CompositionTechnique * | getTechnique ()
| Get CompositionTechnique used by this instance.
void | setTechnique (CompositionTechnique *tech, bool reuseTextures=true)
| Change the technique we're using to render this compositor.
void | setScheme (const String &schemeName, bool reuseTextures=true)
| Pick a technique to use to render this compositor based on a scheme.
const String & | getScheme () const
| Returns the name of the scheme this compositor is using.
void | notifyResized ()
| Notify this instance that the primary surface has been resized.
CompositorChain * | getChain ()
| Get Chain that this instance is part of.
void | addListener (Listener *l)
| Add a listener.
void | removeListener (Listener *l)
| Remove a listener.
void | _fireNotifyMaterialSetup (uint32 pass_id, MaterialPtr &mat)
| Notify listeners of a material compilation.
void | _fireNotifyMaterialRender (uint32 pass_id, MaterialPtr &mat)
| Notify listeners of a material render.
void | _fireNotifyResourcesCreated (bool forResizeOnly)
| Notify listeners of a material render.
void * | operator new (size_t sz, const char *file, int line, const char *func)
| operator new, with debug line info
void * | operator new (size_t sz)
void * | operator new (size_t sz, void *ptr)
| placement operator new
void * | operator new[] (size_t sz, const char *file, int line, const char *func)
| array operator new, with debug line info
void * | operator new[] (size_t sz)
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 *)

## Private Types

typedef map< String, TexturePtr >::type | LocalTextureMap
| Map from name->local texture.
typedef map< String, MultiRenderTarget * >::type | LocalMRTMap
| Store a list of MRTs we've created.
typedef map < CompositionTechnique::TextureDefinition *, TexturePtr >::type | ReserveTextureMap
typedef vector< Listener * >::type | Listeners
| Vector of listeners.

## Private Member Functions

virtual void | collectPasses (TargetOperation &finalState, CompositionTargetPass *target)
| Collect rendering passes.
MaterialPtr | createLocalMaterial (const String &srcName)
| Create a local dummy material with one technique but no passes.
void | createResources (bool forResizeOnly)
| Create local rendertextures and other resources.
void | freeResources (bool forResizeOnly, bool clearReserveTextures)
| Destroy local rendertextures and other resources.
RenderTarget * | getTargetForTex (const String &name)
| Get RenderTarget for a named local texture.
const String & | getSourceForTex (const String &name, size_t mrtIndex=0)
| Get source texture name for a named local texture.
void | queueRenderSystemOp (TargetOperation &finalState, RenderSystemOperation *op)
| Queue a render system operation.
String | getMRTTexLocalName (const String &baseName, size_t attachment)
| Util method for assigning a local texture name to a MRT attachment.
void | deriveTextureRenderTargetOptions (const String &texname, bool *hwGammaWrite, uint *fsaa, String *fsaaHint)
| Search for options like AA and hardware gamma which we may want to inherit from the main render target to which we're attached.
void | notifyCameraChanged (Camera *camera)
| Notify this instance that the primary viewport's camera has changed.

## Private Attributes

Compositor * | mCompositor
| Compositor of which this is an instance.
CompositionTechnique * | mTechnique
| Composition technique used by this instance.
CompositorChain * | mChain
| Composition chain of which this instance is part.
bool | mEnabled
| Is this instance enabled?
bool | mAlive
| Is this instance allocating resources?
LocalTextureMap | mLocalTextures
LocalMRTMap | mLocalMRTs
ReserveTextureMap | mReserveTextures
| Textures that are not currently in use, but that we want to keep for now, for example if we switch techniques but want to keep all textures available in case we switch back.
Listeners | mListeners
CompositorInstance * | mPreviousInstance
| Previous instance (set by chain)

## Friends

class | CompositorChain

## Detailed Description

An instance of a Compositor object for one Viewport.

It is part of the CompositorChain for a Viewport.

Definition at line 49 of file OgreCompositorInstance.h.

## Member Typedef Documentation

typedef vector<TargetOperation>::type Ogre::CompositorInstance::CompiledState

Definition at line 158 of file OgreCompositorInstance.h.

typedef vector<Listener*>::type Ogre::CompositorInstance::Listeners`[private]`

Vector of listeners.

Definition at line 314 of file OgreCompositorInstance.h.

typedef map<String,MultiRenderTarget*>::type Ogre::CompositorInstance::LocalMRTMap`[private]`

Store a list of MRTs we've created.

Definition at line 304 of file OgreCompositorInstance.h.

typedef map<String,TexturePtr>::type Ogre::CompositorInstance::LocalTextureMap`[private]`

Map from name->local texture.

Definition at line 301 of file OgreCompositorInstance.h.

typedef map<int, MaterialPtr>::type Ogre::CompositorInstance::QuadMaterialMap

Definition at line 100 of file OgreCompositorInstance.h.

typedef std::pair<int, RenderSystemOperation*> Ogre::CompositorInstance::RenderSystemOpPair

Definition at line 101 of file OgreCompositorInstance.h.

typedef vector<RenderSystemOpPair>::type Ogre::CompositorInstance::RenderSystemOpPairs

Definition at line 102 of file OgreCompositorInstance.h.

typedef map<CompositionTechnique::TextureDefinition*, TexturePtr>::type Ogre::CompositorInstance::ReserveTextureMap`[private]`

Definition at line 306 of file OgreCompositorInstance.h.

## Constructor & Destructor Documentation

Ogre::CompositorInstance::CompositorInstance | ( | CompositionTechnique * | technique,
|  | CompositorChain * | chain
| ) |  |

virtual Ogre::CompositorInstance::~CompositorInstance | ( |  | ) | `[virtual]`

## Member Function Documentation

virtual void Ogre::CompositorInstance::_compileOutputOperation | ( | TargetOperation & | finalState | ) | `[virtual]`

Compile the final (output) operation.

This is done separately because this is combined with the input in chained filters.

virtual void Ogre::CompositorInstance::_compileTargetOperations | ( | CompiledState & | compiledState | ) | `[virtual]`

Recursively collect target states (except for final Pass).

Parameters:

  compiledState | This vector will contain a list of TargetOperation objects

void Ogre::CompositorInstance::_fireNotifyMaterialRender | ( | uint32 | pass_id,
|  | MaterialPtr & | mat
| ) |  |

Notify listeners of a material render.

void Ogre::CompositorInstance::_fireNotifyMaterialSetup | ( | uint32 | pass_id,
|  | MaterialPtr & | mat
| ) |  |

Notify listeners of a material compilation.

void Ogre::CompositorInstance::_fireNotifyResourcesCreated | ( | bool | forResizeOnly | ) |

Notify listeners of a material render.

void Ogre::CompositorInstance::addListener | ( | Listener * | l | ) |

Add a listener.

Listeners provide an interface to "listen in" to to render system operations executed by this CompositorInstance so that materials can be programmatically set up.

See also:
  CompositorInstance::Listener

virtual void Ogre::CompositorInstance::collectPasses | ( | TargetOperation & | finalState,
|  | CompositionTargetPass * | target
| ) |  | `[private, virtual]`

Collect rendering passes.

Here, passes are converted into render target operations and queued with queueRenderSystemOp.

MaterialPtr Ogre::CompositorInstance::createLocalMaterial | ( | const String & | srcName | ) | `[private]`

Create a local dummy material with one technique but no passes.

The material is detached from the Material Manager to make sure it is destroyed when going out of scope.

void Ogre::CompositorInstance::createResources | ( | bool | forResizeOnly | ) | `[private]`

Create local rendertextures and other resources.

Builds mLocalTextures.

void Ogre::CompositorInstance::deriveTextureRenderTargetOptions | ( | const String & | texname,
|  | bool * | hwGammaWrite,
|  | uint * | fsaa,
|  | String * | fsaaHint
| ) |  | `[private]`

Search for options like AA and hardware gamma which we may want to inherit from the main render target to which we're attached.

void Ogre::CompositorInstance::freeResources | ( | bool | forResizeOnly,
|  | bool | clearReserveTextures
| ) |  | `[private]`

Destroy local rendertextures and other resources.

bool Ogre::CompositorInstance::getAlive | ( |  | ) | const

Get alive flag.

Definition at line 179 of file OgreCompositorInstance.h.

CompositorChain* Ogre::CompositorInstance::getChain | ( |  | ) |

Get Chain that this instance is part of.

Compositor* Ogre::CompositorInstance::getCompositor | ( |  | ) |

Get Compositor of which this is an instance.

bool Ogre::CompositorInstance::getEnabled | ( | void |  | ) | const

Get enabled flag.

Definition at line 168 of file OgreCompositorInstance.h.

String Ogre::CompositorInstance::getMRTTexLocalName | ( | const String & | baseName,
|  | size_t | attachment
| ) |  | `[private]`

Util method for assigning a local texture name to a MRT attachment.

RenderTarget* Ogre::CompositorInstance::getRenderTarget | ( | const String & | name | ) |

Get the render target for a given render texture name.

Remarks:
  You can use this to add listeners etc, but do not use it to update the targets manually or any other modifications, the compositor instance is in charge of this.

const String& Ogre::CompositorInstance::getScheme | ( |  | ) | const

Returns the name of the scheme this compositor is using.

Definition at line 253 of file OgreCompositorInstance.h.

References Ogre::StringUtil::BLANK.

const String& Ogre::CompositorInstance::getSourceForTex | ( | const String & | name,
|  | size_t | mrtIndex = `0`
| ) |  | `[private]`

Get source texture name for a named local texture.

Parameters:

  name | The local name of the texture as given to it in the compositor
  mrtIndex | For MRTs, which attached surface to retrieve

RenderTarget* Ogre::CompositorInstance::getTargetForTex | ( | const String & | name | ) | `[private]`

Get RenderTarget for a named local texture.

CompositionTechnique* Ogre::CompositorInstance::getTechnique | ( |  | ) |

Get CompositionTechnique used by this instance.

TexturePtr Ogre::CompositorInstance::getTextureInstance | ( | const String & | name,
|  | size_t | mrtIndex
| ) |  |

Get the instance of a local texture.

Note:
  Textures are only valid when local textures have been loaded, which in practice means that the compositor instance is active. Calling this method at other times will return null pointers. Note that since textures are cleaned up aggressively, this pointer is not guaranteed to stay the same if you disable and re-enable the compositor instance.

Parameters:

  name | The name of the texture in the original compositor definition
  mrtIndex | If name identifies a MRT, which texture attachment to retrieve

Returns:
  The texture pointer, corresponds to a real texture

const String& Ogre::CompositorInstance::getTextureInstanceName | ( | const String & | name,
|  | size_t | mrtIndex
| ) |  |

Get the instance name for a local texture.

Note:
  It is only valid to call this when local textures have been loaded, which in practice means that the compositor instance is active. Calling it at other times will cause an exception. Note that since textures are cleaned up aggressively, this name is not guaranteed to stay the same if you disable and re-enable the compositor instance.

Parameters:

  name | The name of the texture in the original compositor definition
  mrtIndex | If name identifies a MRT, which texture attachment to retrieve

Returns:
  The instance name for the texture, corresponds to a real texture

void Ogre::CompositorInstance::notifyCameraChanged | ( | Camera * | camera | ) | `[private]`

Notify this instance that the primary viewport's camera has changed.

void Ogre::CompositorInstance::notifyResized | ( |  | ) |

Notify this instance that the primary surface has been resized.

Remarks:
  This will allow the instance to recreate its resources that are dependent on the size.

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr | ) | `[inherited]`

Definition at line 95 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr,
|  | void * |
| ) |  | `[inherited]`

Definition at line 101 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr,
|  | const char * | ,
|  | int | ,
|  | const char * |
| ) |  | `[inherited]`

Definition at line 107 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr | ) | `[inherited]`

Definition at line 112 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr,
|  | const char * | ,
|  | int | ,
|  | const char * |
| ) |  | `[inherited]`

Definition at line 118 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz,
|  | const char * | file,
|  | int | line,
|  | const char * | func
| ) |  | `[inherited]`

operator new, with debug line info

Definition at line 67 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz | ) | `[inherited]`

Definition at line 72 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz,
|  | void * | ptr
| ) |  | `[inherited]`

placement operator new

Definition at line 78 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz,
|  | const char * | file,
|  | int | line,
|  | const char * | func
| ) |  | `[inherited]`

array operator new, with debug line info

Definition at line 85 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz | ) | `[inherited]`

Definition at line 90 of file OgreMemoryAllocatedObject.h.

void Ogre::CompositorInstance::queueRenderSystemOp | ( | TargetOperation & | finalState,
|  | RenderSystemOperation * | op
| ) |  | `[private]`

Queue a render system operation.

Returns:
  destination pass

void Ogre::CompositorInstance::removeListener | ( | Listener * | l | ) |

Remove a listener.

See also:
  CompositorInstance::Listener

void Ogre::CompositorInstance::setAlive | ( | bool | value | ) |

Set alive/active flag.

The compositor instance will create resources when alive, and destroy them when inactive.

Remarks:
  : Killing an instance means also disabling it: setAlive(false) implies setEnabled(false)

void Ogre::CompositorInstance::setEnabled | ( | bool | value | ) |

Set enabled flag.

The compositor instance will only render if it is enabled, otherwise it is pass-through. Resources are only created if they weren't alive when enabling.

void Ogre::CompositorInstance::setScheme | ( | const String & | schemeName,
|  | bool | reuseTextures = `true`
| ) |  |

Pick a technique to use to render this compositor based on a scheme.

Remarks:
  If there is no specific supported technique with this scheme name, then the first supported technique with no specific scheme will be used.

See also:
  CompositionTechnique::setSchemeName

Parameters:

  schemeName | The scheme to use
  reuseTextures | If textures have already been created for the current technique, whether to try to re-use them if sizes & formats match. Note that for this feature to be of benefit, the textures must have been created with the 'pooled' option enabled.

void Ogre::CompositorInstance::setTechnique | ( | CompositionTechnique * | tech,
|  | bool | reuseTextures = `true`
| ) |  |

Change the technique we're using to render this compositor.

Parameters:

  tech | The technique to use (must be supported and from the same Compositor)
  reuseTextures | If textures have already been created for the current technique, whether to try to re-use them if sizes & formats match.

## Friends And Related Function Documentation

friend class CompositorChain`[friend]`

Definition at line 366 of file OgreCompositorInstance.h.

## Member Data Documentation

bool Ogre::CompositorInstance::mAlive`[private]`

Is this instance allocating resources?

Definition at line 299 of file OgreCompositorInstance.h.

CompositorChain* Ogre::CompositorInstance::mChain`[private]`

Composition chain of which this instance is part.

Definition at line 295 of file OgreCompositorInstance.h.

Compositor* Ogre::CompositorInstance::mCompositor`[private]`

Compositor of which this is an instance.

Definition at line 291 of file OgreCompositorInstance.h.

bool Ogre::CompositorInstance::mEnabled`[private]`

Is this instance enabled?

Definition at line 297 of file OgreCompositorInstance.h.

Listeners Ogre::CompositorInstance::mListeners`[private]`

Definition at line 315 of file OgreCompositorInstance.h.

LocalMRTMap Ogre::CompositorInstance::mLocalMRTs`[private]`

Definition at line 305 of file OgreCompositorInstance.h.

LocalTextureMap Ogre::CompositorInstance::mLocalTextures`[private]`

Definition at line 302 of file OgreCompositorInstance.h.

CompositorInstance* Ogre::CompositorInstance::mPreviousInstance`[private]`

Previous instance (set by chain)

Definition at line 318 of file OgreCompositorInstance.h.

ReserveTextureMap Ogre::CompositorInstance::mReserveTextures`[private]`

Textures that are not currently in use, but that we want to keep for now, for example if we switch techniques but want to keep all textures available in case we switch back.

Definition at line 311 of file OgreCompositorInstance.h.

CompositionTechnique* Ogre::CompositorInstance::mTechnique`[private]`

Composition technique used by this instance.

Definition at line 293 of file OgreCompositorInstance.h.

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

- OgreCompositorInstance.h

Copyright © 2012 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Sun Sep 2 2012 07:27:27