OGRE  1.12.8
Object-Oriented Graphics Rendering Engine
Ogre::CompositorManager Class Reference

Class for managing Compositor settings for Ogre. More...

#include <OgreCompositorManager.h>

+ Inheritance diagram for Ogre::CompositorManager:

Public Types

typedef std::set< Texture * > UniqueTextureSet
 
- Public Types inherited from Ogre::ResourceManager
typedef std::pair< ResourcePtr, bool > ResourceCreateOrRetrieveResult
 
typedef std::map< ResourceHandle, ResourcePtrResourceHandleMap
 
typedef std::unordered_map< String, ResourcePtrResourceMap
 
typedef MapIterator< ResourceHandleMapResourceMapIterator
 
typedef std::unordered_map< String, ResourceMapResourceWithGroupMap
 

Public Member Functions

 CompositorManager ()
 
virtual ~CompositorManager ()
 
Renderable_getTexturedRectangle2D ()
 Get a textured fullscreen 2D rectangle, for internal use. More...
 
void _reconstructAllCompositorResources ()
 Internal method for forcing all active compositors to recreate their resources. More...
 
void _relocateChain (Viewport *sourceVP, Viewport *destVP)
 Relocates a compositor chain from one viewport to another. More...
 
CompositorInstanceaddCompositor (Viewport *vp, const String &compositor, int addPosition=-1)
 Add a compositor to a viewport. More...
 
CompositorPtr create (const String &name, const String &group, bool isManual=false, ManualResourceLoader *loader=0, const NameValuePairList *createParams=0)
 Create a new compositor. More...
 
ResourcecreateImpl (const String &name, ResourceHandle handle, const String &group, bool isManual, ManualResourceLoader *loader, const NameValuePairList *params) override
 Create a new resource instance compatible with this manager (no custom parameters are populated at this point). More...
 
void freePooledTextures (bool onlyIfUnreferenced=true)
 Free pooled textures from the shared pool (compositor instances still using them will keep them in memory though). More...
 
CompositorPtr getByName (const String &name, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
 Get a resource by name. More...
 
CompositorChaingetCompositorChain (Viewport *vp)
 Get the compositor chain for a Viewport. More...
 
CompositorLogicgetCompositorLogic (const String &name)
 Get a compositor logic by its name. More...
 
CustomCompositionPassgetCustomCompositionPass (const String &name)
 Get a custom composition pass by its name. More...
 
TexturePtr getPooledTexture (const String &name, const String &localName, uint32 w, uint32 h, PixelFormat f, uint aa, const String &aaHint, bool srgb, UniqueTextureSet &texturesAlreadyAssigned, CompositorInstance *inst, CompositionTechnique::TextureScope scope)
 Utility function to get an existing pooled texture matching a given definition, or creating one if one doesn't exist. More...
 
bool hasCompositorChain (const Viewport *vp) const
 Returns whether exists compositor chain for a viewport. More...
 
bool hasCompositorLogic (const String &name)
 Check if a compositor logic exists. More...
 
bool hasCustomCompositionPass (const String &name)
 Check if a compositor pass exists. More...
 
void initialise (void)
 Initialises the Compositor manager, which also triggers it to parse all available .compositor scripts. More...
 
void parseScript (DataStreamPtr &stream, const String &groupName)
 
void registerCompositorLogic (const String &name, CompositorLogic *logic)
 Register a compositor logic for listening in to expecting composition techniques. More...
 
void registerCustomCompositionPass (const String &name, CustomCompositionPass *customPass)
 Register a custom composition pass. More...
 
void removeAll (void)
 Overridden from ResourceManager since we have to clean up chains too. More...
 
void removeCompositor (Viewport *vp, const String &compositor)
 Remove a compositor from a viewport. More...
 
void removeCompositorChain (const Viewport *vp)
 Remove the compositor chain from a viewport if exists. More...
 
void setCompositorEnabled (Viewport *vp, const String &compositor, bool value)
 Set the state of a compositor on a viewport to enabled or disabled. More...
 
void unregisterCompositorLogic (const String &name)
 Removes a listener for compositor logic registered with registerCompositorLogic. More...
 
void unregisterCustomCompositionPass (const String &name)
 
- Public Member Functions inherited from Ogre::ResourceManager
 ResourceManager ()
 
virtual ~ResourceManager ()
 
virtual void _notifyResourceLoaded (Resource *res)
 Notify this manager that a resource which it manages has been loaded. More...
 
virtual void _notifyResourceTouched (Resource *res)
 Notify this manager that a resource which it manages has been 'touched', i.e. More...
 
virtual void _notifyResourceUnloaded (Resource *res)
 Notify this manager that a resource which it manages has been unloaded. More...
 
ResourceCreateOrRetrieveResult createOrRetrieve (const String &name, const String &group, bool isManual=false, ManualResourceLoader *loader=0, const NameValuePairList *createParams=0)
 Create a new resource, or retrieve an existing one with the same name if it already exists. More...
 
ResourcePtr createResource (const String &name, const String &group, bool isManual=false, ManualResourceLoader *loader=0, const NameValuePairList *createParams=0)
 Creates a new blank resource, but does not immediately load it. More...
 
void destroyAllResourcePools ()
 destroy all pools More...
 
void destroyResourcePool (const String &name)
 Destroy a resource pool. More...
 
void destroyResourcePool (ResourcePool *pool)
 Destroy a resource pool. More...
 
virtual ResourcePtr getByHandle (ResourceHandle handle)
 Retrieves a pointer to a resource by handle, or null if the resource does not exist. More...
 
Real getLoadingOrder (void) const
 Gets the relative loading order of resources of this type. More...
 
size_t getMemoryBudget (void) const
 Get the limit on the amount of memory this resource handler may use. More...
 
size_t getMemoryUsage (void) const
 Gets the current memory usage, in bytes. More...
 
virtual ResourcePtr getResourceByName (const String &name, const String &groupName=RGN_DEFAULT)
 Retrieves a pointer to a resource by name, or null if the resource does not exist. More...
 
ResourceMapIterator getResourceIterator (void)
 Returns an iterator over all resources in this manager. More...
 
ResourcePoolgetResourcePool (const String &name)
 Create a resource pool, or reuse one that already exists. More...
 
const StringgetResourceType (void) const
 Gets a string identifying the type of resource this manager handles. More...
 
const StringVectorgetScriptPatterns (void) const
 Gets the file patterns which should be used to find scripts for this ResourceManager. More...
 
bool getVerbose (void)
 Gets whether this manager and its resources habitually produce log output. More...
 
ResourcePtr load (const String &name, const String &group, bool isManual=false, ManualResourceLoader *loader=0, const NameValuePairList *loadParams=0, bool backgroundThread=false)
 Generic load method, used to create a Resource specific to this ResourceManager without using one of the specialised 'load' methods (containing per-Resource-type parameters). More...
 
void parseScript (DataStreamPtr &stream, const String &groupName)
 Parse the definition of a set of resources from a script file. More...
 
ResourcePtr prepare (const String &name, const String &group, bool isManual=false, ManualResourceLoader *loader=0, const NameValuePairList *loadParams=0, bool backgroundThread=false)
 Generic prepare method, used to create a Resource specific to this ResourceManager without using one of the specialised 'prepare' methods (containing per-Resource-type parameters). More...
 
void reloadAll (bool reloadableOnly=true)
 Caused all currently loaded resources to be reloaded. More...
 
virtual void reloadAll (Resource::LoadingFlags flags)
 Caused all currently loaded resources to be reloaded. More...
 
void reloadUnreferencedResources (bool reloadableOnly=true)
 Caused all currently loaded but not referenced by any other object resources to be reloaded. More...
 
void remove (const ResourcePtr &r)
 Remove a single resource. More...
 
void remove (const String &name, const String &group=RGN_DEFAULT)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
void remove (ResourceHandle handle)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
virtual void removeUnreferencedResources (bool reloadableOnly=true)
 Remove all resources which are not referenced by any other object. More...
 
bool resourceExists (const String &name, const String &group=RGN_DEFAULT)
 Returns whether the named resource exists in this manager. More...
 
bool resourceExists (ResourceHandle handle)
 Returns whether a resource with the given handle exists in this manager. More...
 
void setMemoryBudget (size_t bytes)
 Set a limit on the amount of memory this resource handler may use. More...
 
void setVerbose (bool v)
 Sets whether this manager and its resources habitually produce log output. More...
 
void unload (const String &name, const String &group=RGN_DEFAULT)
 Unloads a single resource by name. More...
 
void unload (ResourceHandle handle)
 Unloads a single resource by handle. More...
 
void unloadAll (bool reloadableOnly=true)
 Unloads all resources. More...
 
virtual void unloadAll (Resource::LoadingFlags flags)
 Unloads all resources. More...
 
void unloadUnreferencedResources (bool reloadableOnly=true)
 Unload all resources which are not referenced by any other object. More...
 
- Public Member Functions inherited from Ogre::ScriptLoader
virtual ~ScriptLoader ()
 
- Public Member Functions inherited from Ogre::Singleton< CompositorManager >
 Singleton (void)
 
 ~Singleton (void)
 

Static Public Member Functions

static CompositorManagergetSingleton (void)
 Get the singleton instance. More...
 
static CompositorManagergetSingletonPtr (void)
 Get the singleton instance. More...
 
- Static Public Member Functions inherited from Ogre::Singleton< CompositorManager >
static CompositorManagergetSingleton (void)
 Get the singleton instance. More...
 
static CompositorManagergetSingletonPtr (void)
 Get the singleton instance. More...
 

Detailed Description

Class for managing Compositor settings for Ogre.

Compositors provide the means to flexibly "composite" the final rendering result from multiple scene renders and intermediate operations like rendering fullscreen quads. This makes it possible to apply postfilter effects, HDRI postprocessing, and shadow effects to a Viewport.

When loaded from a script, a Compositor is in an 'unloaded' state and only stores the settings required. It does not at that stage load any textures. This is because the material settings may be loaded 'en masse' from bulk material script files, but only a subset will actually be required.
Because this is a subclass of ResourceManager, any files loaded will be searched for in any path or archive added to the resource paths/archives. See ResourceManager for details.

Member Typedef Documentation

◆ UniqueTextureSet

Constructor & Destructor Documentation

◆ CompositorManager()

Ogre::CompositorManager::CompositorManager ( )

◆ ~CompositorManager()

virtual Ogre::CompositorManager::~CompositorManager ( )
virtual

Member Function Documentation

◆ createImpl()

Resource* Ogre::CompositorManager::createImpl ( const String name,
ResourceHandle  handle,
const String group,
bool  isManual,
ManualResourceLoader loader,
const NameValuePairList createParams 
)
overridevirtual

Create a new resource instance compatible with this manager (no custom parameters are populated at this point).

Remarks
Subclasses must override this method and create a subclass of Resource.
Parameters
nameThe unique name of the resource
handleThe unique handle of the resource
groupThe name of the resource group to attach this new resource to
isManualIs this resource manually loaded? If so, you should really populate the loader parameter in order that the load process can call the loader back when loading is required.
loaderPointer to a ManualLoader implementation which will be called when the Resource wishes to load (should be supplied if you set isManual to true). You can in fact leave this parameter null if you wish, but the Resource will never be able to reload if anything ever causes it to unload. Therefore provision of a proper ManualLoader instance is strongly recommended.
createParamsIf any parameters are required to create an instance, they should be supplied here as name / value pairs. These do not need to be set on the instance (handled elsewhere), just used if required to differentiate which concrete class is created.

Implements Ogre::ResourceManager.

◆ initialise()

void Ogre::CompositorManager::initialise ( void  )

Initialises the Compositor manager, which also triggers it to parse all available .compositor scripts.

◆ create()

CompositorPtr Ogre::CompositorManager::create ( const String name,
const String group,
bool  isManual = false,
ManualResourceLoader loader = 0,
const NameValuePairList createParams = 0 
)

Create a new compositor.

See also
ResourceManager::createResource

◆ getByName()

CompositorPtr Ogre::CompositorManager::getByName ( const String name,
const String groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME 
)

Get a resource by name.

See also
ResourceManager::getResourceByName

◆ parseScript()

void Ogre::CompositorManager::parseScript ( DataStreamPtr stream,
const String groupName 
)
virtual

◆ getCompositorChain()

CompositorChain* Ogre::CompositorManager::getCompositorChain ( Viewport vp)

Get the compositor chain for a Viewport.

If there is none yet, a new compositor chain is registered. XXX We need a _notifyViewportRemoved to find out when this viewport disappears, so we can destroy its chain as well.

◆ hasCompositorChain()

bool Ogre::CompositorManager::hasCompositorChain ( const Viewport vp) const

Returns whether exists compositor chain for a viewport.

◆ removeCompositorChain()

void Ogre::CompositorManager::removeCompositorChain ( const Viewport vp)

Remove the compositor chain from a viewport if exists.

◆ addCompositor()

CompositorInstance* Ogre::CompositorManager::addCompositor ( Viewport vp,
const String compositor,
int  addPosition = -1 
)

Add a compositor to a viewport.

By default, it is added to end of the chain, after the other compositors.

Parameters
vpViewport to modify
compositorThe name of the compositor to apply
addPositionAt which position to add, defaults to the end (-1).
Returns
pointer to instance, or 0 if it failed.

◆ removeCompositor()

void Ogre::CompositorManager::removeCompositor ( Viewport vp,
const String compositor 
)

Remove a compositor from a viewport.

◆ setCompositorEnabled()

void Ogre::CompositorManager::setCompositorEnabled ( Viewport vp,
const String compositor,
bool  value 
)

Set the state of a compositor on a viewport to enabled or disabled.

Disabling a compositor stops it from rendering but does not free any resources. This can be more efficient than using removeCompositor and addCompositor in cases the filter is switched on and off a lot.

◆ _getTexturedRectangle2D()

Renderable* Ogre::CompositorManager::_getTexturedRectangle2D ( )

Get a textured fullscreen 2D rectangle, for internal use.

◆ removeAll()

void Ogre::CompositorManager::removeAll ( void  )
virtual

Overridden from ResourceManager since we have to clean up chains too.

Reimplemented from Ogre::ResourceManager.

◆ _reconstructAllCompositorResources()

void Ogre::CompositorManager::_reconstructAllCompositorResources ( )

Internal method for forcing all active compositors to recreate their resources.

◆ getPooledTexture()

TexturePtr Ogre::CompositorManager::getPooledTexture ( const String name,
const String localName,
uint32  w,
uint32  h,
PixelFormat  f,
uint  aa,
const String aaHint,
bool  srgb,
UniqueTextureSet texturesAlreadyAssigned,
CompositorInstance inst,
CompositionTechnique::TextureScope  scope 
)

Utility function to get an existing pooled texture matching a given definition, or creating one if one doesn't exist.

It also takes into account whether a pooled texture has already been supplied to this same requester already, in which case it won't give the same texture twice (this is important for example if you request 2 ping-pong textures, you don't want to get the same texture for both requests!

◆ freePooledTextures()

void Ogre::CompositorManager::freePooledTextures ( bool  onlyIfUnreferenced = true)

Free pooled textures from the shared pool (compositor instances still using them will keep them in memory though).

◆ registerCompositorLogic()

void Ogre::CompositorManager::registerCompositorLogic ( const String name,
CompositorLogic logic 
)

Register a compositor logic for listening in to expecting composition techniques.

◆ unregisterCompositorLogic()

void Ogre::CompositorManager::unregisterCompositorLogic ( const String name)

Removes a listener for compositor logic registered with registerCompositorLogic.

◆ getCompositorLogic()

CompositorLogic* Ogre::CompositorManager::getCompositorLogic ( const String name)

Get a compositor logic by its name.

◆ hasCompositorLogic()

bool Ogre::CompositorManager::hasCompositorLogic ( const String name)

Check if a compositor logic exists.

◆ registerCustomCompositionPass()

void Ogre::CompositorManager::registerCustomCompositionPass ( const String name,
CustomCompositionPass customPass 
)

Register a custom composition pass.

◆ unregisterCustomCompositionPass()

void Ogre::CompositorManager::unregisterCustomCompositionPass ( const String name)

◆ getCustomCompositionPass()

CustomCompositionPass* Ogre::CompositorManager::getCustomCompositionPass ( const String name)

Get a custom composition pass by its name.

◆ hasCustomCompositionPass()

bool Ogre::CompositorManager::hasCustomCompositionPass ( const String name)

Check if a compositor pass exists.

◆ _relocateChain()

void Ogre::CompositorManager::_relocateChain ( Viewport sourceVP,
Viewport destVP 
)

Relocates a compositor chain from one viewport to another.

Parameters
sourceVPThe viewport to take the chain from
destVPThe viewport to connect the chain to

◆ getSingleton()

static CompositorManager& Ogre::CompositorManager::getSingleton ( void  )
static

Get the singleton instance.

◆ getSingletonPtr()

static CompositorManager* Ogre::CompositorManager::getSingletonPtr ( void  )
static

Get the singleton instance.


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