OgreCompositorChain.h
Go to the documentation of this file.
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of OGRE
4  (Object-oriented Graphics Rendering Engine)
5 For the latest info, see http://www.ogre3d.org/
6 
7 Copyright (c) 2000-2013 Torus Knot Software Ltd
8 
9 Permission is hereby granted, free of charge, to any person obtaining a copy
10 of this software and associated documentation files (the "Software"), to deal
11 in the Software without restriction, including without limitation the rights
12 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 copies of the Software, and to permit persons to whom the Software is
14 furnished to do so, subject to the following conditions:
15 
16 The above copyright notice and this permission notice shall be included in
17 all copies or substantial portions of the Software.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 THE SOFTWARE.
26 -----------------------------------------------------------------------------
27 */
28 #ifndef __CompositorChain_H__
29 #define __CompositorChain_H__
30 
31 #include "OgrePrerequisites.h"
34 #include "OgreCompositorInstance.h"
35 #include "OgreCompositor.h"
36 #include "OgreViewport.h"
37 #include "OgreHeaderPrefix.h"
38 
39 namespace Ogre {
49  {
50  public:
55  virtual ~CompositorChain();
56 
60 
62  static const size_t LAST = (size_t)-1;
64  static const size_t BEST = 0;
65 
74  CompositorInstance* addCompositor(CompositorPtr filter, size_t addPosition=LAST, const String& scheme = StringUtil::BLANK);
75 
80  void removeCompositor(size_t position=LAST);
81 
85 
89 
93 
97 
100  CompositorInstance* _getOriginalSceneCompositor(void) { return mOriginalScene; }
101 
105 
112  void setCompositorEnabled(size_t position, bool state);
113 
115  virtual void preRenderTargetUpdate(const RenderTargetEvent& evt);
117  virtual void postRenderTargetUpdate(const RenderTargetEvent& evt);
122 
124  virtual void viewportCameraChanged(Viewport* viewport);
126  virtual void viewportDimensionsChanged(Viewport* viewport);
128  virtual void viewportDestroyed(Viewport* viewport);
129 
132  void _markDirty();
133 
137 
142 
145 
148  void _compile();
149 
155  CompositorInstance* getNextInstance(CompositorInstance* curr, bool activeOnly = true);
156 
157  protected:
160 
164 
167 
169  bool mDirty;
172 
174 
183 
186 
190 
194 
197 
199  void destroyResources(void);
200 
203  {
204  public:
205  RQListener() : mOperation(0), mSceneManager(0), mRenderSystem(0), mViewport(0) {}
206 
209  virtual void renderQueueStarted(uint8 queueGroupId, const String& invocation, bool& skipThisInvocation);
212  virtual void renderQueueEnded(uint8 queueGroupId, const String& invocation, bool& repeatThisInvocation);
213 
216 
218  void notifyViewport(Viewport* vp) { mViewport = vp; }
219 
221  void flushUpTo(uint8 id);
222  private:
227  CompositorInstance::RenderSystemOpPairs::iterator currentOp, lastOp;
228  };
237  float mOldLodBias;
242 
243  };
246 } // namespace Ogre
247 
248 #include "OgreHeaderSuffix.h"
249 
250 #endif // __CompositorChain_H__
OgreHeaderSuffix.h
Ogre::CompositorChain::mOutputOperation
CompositorInstance::TargetOperation mOutputOperation
Definition: OgreCompositorChain.h:177
Ogre::CompositorChain::Instances
vector< CompositorInstance * >::type Instances
Data types.
Definition: OgreCompositorChain.h:58
Ogre::CompositorChain::_removeInstance
void _removeInstance(CompositorInstance *i)
Remove a compositor by pointer.
Ogre::CompositorChain::getPreviousInstance
CompositorInstance * getPreviousInstance(CompositorInstance *curr, bool activeOnly=true)
Get the previous instance in this chain to the one specified.
Ogre::RenderSystem
Defines the functionality of a 3D API.
Definition: OgreRenderSystem.h:126
Ogre::CompositorChain::postRenderTargetUpdate
virtual void postRenderTargetUpdate(const RenderTargetEvent &evt)
Ogre::AllocatedObject
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Definition: OgreMemoryAllocatedObject.h:59
Ogre
Definition: OgreAndroidLogListener.h:35
Ogre::CompositorChain::destroyResources
void destroyResources(void)
destroy internal resources
Ogre::CompositorChain::RQListener::notifyViewport
void notifyViewport(Viewport *vp)
Notify current destination viewport.
Definition: OgreCompositorChain.h:218
Ogre::Camera
A viewpoint from which the scene will be rendered.
Definition: OgreCamera.h:87
Ogre::CompositorChain::_compile
void _compile()
Compile this Composition chain into a series of RenderTarget operations.
Ogre::CompositorChain
Chain of compositor effects applying to one viewport.
Definition: OgreCompositorChain.h:49
OgreRenderQueueListener.h
OgreViewport.h
Ogre::CompositorChain::mCompiledState
CompositorInstance::CompiledState mCompiledState
Compiled state (updated with _compile)
Definition: OgreCompositorChain.h:176
Ogre::VectorIterator
Concrete IteratorWrapper for nonconst access to the underlying container.
Definition: OgreIteratorWrapper.h:186
Ogre::CompositorChain::removeCompositor
void removeCompositor(size_t position=LAST)
Remove a compositor.
Ogre::RenderQueueListener
Abstract interface which classes must implement if they wish to receive events from the render queue.
Definition: OgreRenderQueueListener.h:57
Ogre::CompositorChain::clearCompiledState
void clearCompiledState()
Clear compiled state.
Ogre::CompositorChain::createOriginalScene
void createOriginalScene()
Ogre::CompositorChain::mInstances
Instances mInstances
Postfilter instances in this chain.
Definition: OgreCompositorChain.h:166
Ogre::CompositorChain::~CompositorChain
virtual ~CompositorChain()
Another gcc warning here, which is no problem because RenderTargetListener is never used to delete an...
Ogre::CompositorChain::RQListener::mOperation
CompositorInstance::TargetOperation * mOperation
Definition: OgreCompositorChain.h:223
Ogre::Viewport::Listener
Listener interface so you can be notified of Viewport changes.
Definition: OgreViewport.h:62
Ogre::CompositorChain::mAnyCompositorsEnabled
bool mAnyCompositorsEnabled
Any compositors enabled?
Definition: OgreCompositorChain.h:171
Ogre::uint32
unsigned int uint32
Definition: OgrePlatform.h:359
Ogre::CompositorInstance::TargetOperation
Operation setup for a RenderTarget (collected).
Definition: OgreCompositorInstance.h:112
Ogre::String
_StringBase String
Definition: OgrePrerequisites.h:439
Ogre::CompositorChain::mOldMaterialScheme
String mOldMaterialScheme
Store old viewport material scheme.
Definition: OgreCompositorChain.h:239
Ogre::CompositorChain::getNextInstance
CompositorInstance * getNextInstance(CompositorInstance *curr, bool activeOnly=true)
Get the next instance in this chain to the one specified.
Ogre::CompositorChain::getNumCompositors
size_t getNumCompositors()
Get the number of compositors.
Ogre::CompositorChain::CompositorChain
CompositorChain(Viewport *vp)
OgreCompositor.h
Ogre::CompositorChain::RQListener::renderQueueStarted
virtual void renderQueueStarted(uint8 queueGroupId, const String &invocation, bool &skipThisInvocation)
Event raised before a queue group is rendered.
Ogre::CompositorChain::RQListener::renderQueueEnded
virtual void renderQueueEnded(uint8 queueGroupId, const String &invocation, bool &repeatThisInvocation)
Event raised after a queue group is rendered.
Ogre::CompositorChain::mOriginalSceneScheme
String mOriginalSceneScheme
Definition: OgreCompositorChain.h:173
Ogre::RenderTargetListener
A interface class defining a listener which can be used to receive notifications of RenderTarget even...
Definition: OgreRenderTargetListener.h:78
Ogre::StringUtil::BLANK
static const String BLANK
Constant blank string, useful for returning by ref where local does not exist.
Definition: OgreString.h:196
Ogre::CompositorChain::preViewportUpdate
virtual void preViewportUpdate(const RenderTargetViewportEvent &evt)
OgreHeaderPrefix.h
Ogre::SceneManager
Manages the organisation and rendering of a 'scene' i.e.
Definition: OgreSceneManager.h:144
Ogre::Viewport
An abstraction of a viewport, i.e.
Definition: OgreViewport.h:58
Ogre::CompositorChain::setCompositorEnabled
void setCompositorEnabled(size_t position, bool state)
Enable or disable a compositor, by position.
Ogre::RenderTargetEvent
Struct containing information about a RenderTarget event.
Definition: OgreRenderTargetListener.h:45
Ogre::CompositorChain::RQListener::flushUpTo
void flushUpTo(uint8 id)
Flush remaining render system operations.
OgrePrerequisites.h
Ogre::CompositorChain::mOldVisibilityMask
uint32 mOldVisibilityMask
Store old scene visibility mask.
Definition: OgreCompositorChain.h:233
Ogre::CompositorChain::getCompositors
InstanceIterator getCompositors()
Get an iterator over the compositor instances.
Ogre::CompositorChain::_queuedOperation
void _queuedOperation(CompositorInstance::RenderSystemOperation *op)
Internal method for registering a queued operation for deletion later.
Ogre::CompositorChain::_getOriginalSceneCompositor
CompositorInstance * _getOriginalSceneCompositor(void)
Get the original scene compositor instance for this chain (internal use).
Definition: OgreCompositorChain.h:100
Ogre::CompositorChain::mOldShadowsEnabled
bool mOldShadowsEnabled
Store old shadows enabled flag.
Definition: OgreCompositorChain.h:241
Ogre::CompositorChain::viewportDestroyed
virtual void viewportDestroyed(Viewport *viewport)
_OgreExport
#define _OgreExport
Definition: OgrePlatform.h:257
Ogre::CompositorChain::getViewport
Viewport * getViewport()
Get viewport that is the target of this chain.
Ogre::CompositorChain::mOriginalScene
CompositorInstance * mOriginalScene
Plainly renders the scene; implicit first compositor in the chain.
Definition: OgreCompositorChain.h:163
Ogre::CompositorChain::destroyOriginalScene
void destroyOriginalScene()
Ogre::CompositorInstance::RenderSystemOperation
Specific render system operation.
Definition: OgreCompositorInstance.h:100
Ogre::CompositorChain::RQListener::mRenderSystem
RenderSystem * mRenderSystem
Definition: OgreCompositorChain.h:225
Ogre::CompositorChain::mDirty
bool mDirty
State needs recompile.
Definition: OgreCompositorChain.h:169
Ogre::CompositorChain::mOldLodBias
float mOldLodBias
Store old camera LOD bias.
Definition: OgreCompositorChain.h:237
Ogre::SharedPtr
Reference-counted shared pointer, used for objects where implicit destruction is required.
Definition: OgreSharedPtr.h:112
Ogre::CompositorChain::viewportDimensionsChanged
virtual void viewportDimensionsChanged(Viewport *viewport)
Ogre::uint8
unsigned char uint8
Definition: OgrePlatform.h:361
Ogre::CompositorChain::postViewportUpdate
virtual void postViewportUpdate(const RenderTargetViewportEvent &evt)
Ogre::CompositorChain::_markDirty
void _markDirty()
Mark state as dirty, and to be recompiled next frame.
OgreRenderTargetListener.h
Ogre::CompositorChain::getCompositor
CompositorInstance * getCompositor(const String &name)
Get compositor instance by name.
Ogre::CompositorChain::removeAllCompositors
void removeAllCompositors()
Remove all compositors.
Ogre::CompositorInstance::CompiledState
vector< TargetOperation >::type CompiledState
Definition: OgreCompositorInstance.h:164
Ogre::CompositorChain::RQListener::mSceneManager
SceneManager * mSceneManager
Definition: OgreCompositorChain.h:224
Ogre::CompositorChain::RQListener::mViewport
Viewport * mViewport
Definition: OgreCompositorChain.h:226
Ogre::CompositorChain::mOurListener
RQListener mOurListener
Definition: OgreCompositorChain.h:229
OgreCompositorInstance.h
Ogre::CompositorChain::RenderSystemOperations
vector< CompositorInstance::RenderSystemOperation * >::type RenderSystemOperations
Render System operations queued by last compile, these are created by this instance thus managed and ...
Definition: OgreCompositorChain.h:181
Ogre::CompositorChain::mOldClearEveryFrameBuffers
unsigned int mOldClearEveryFrameBuffers
Old viewport settings.
Definition: OgreCompositorChain.h:231
Ogre::RenderTargetViewportEvent
Struct containing information about a RenderTarget Viewport-specific event.
Definition: OgreRenderTargetListener.h:53
Ogre::CompositorInstance
An instance of a Compositor object for one Viewport.
Definition: OgreCompositorInstance.h:51
Ogre::CompositorChain::RQListener::lastOp
CompositorInstance::RenderSystemOpPairs::iterator lastOp
Definition: OgreCompositorChain.h:227
Ogre::CompositorChain::postTargetOperation
void postTargetOperation(CompositorInstance::TargetOperation &op, Viewport *vp, Camera *cam)
Restore a viewport, the camera and the scene after a rendering operation.
Ogre::CompositorChain::RQListener
Render queue listener used to set up rendering events.
Definition: OgreCompositorChain.h:203
Ogre::CompositorChain::mViewport
Viewport * mViewport
Viewport affected by this CompositorChain.
Definition: OgreCompositorChain.h:159
Ogre::CompositorChain::RQListener::RQListener
RQListener()
Definition: OgreCompositorChain.h:205
Ogre::CompositorChain::preTargetOperation
void preTargetOperation(CompositorInstance::TargetOperation &op, Viewport *vp, Camera *cam)
Prepare a viewport, the camera and the scene for a rendering operation.
Ogre::CompositorChain::mRenderSystemOperations
RenderSystemOperations mRenderSystemOperations
Definition: OgreCompositorChain.h:182
Ogre::vector
Definition: OgrePrerequisites.h:492
Ogre::CompositorChain::InstanceIterator
VectorIterator< Instances > InstanceIterator
Definition: OgreCompositorChain.h:59
Ogre::CompositorChain::preRenderTargetUpdate
virtual void preRenderTargetUpdate(const RenderTargetEvent &evt)
Ogre::CompositorChain::viewportCameraChanged
virtual void viewportCameraChanged(Viewport *viewport)
Ogre::CompositorChain::RQListener::setOperation
void setOperation(CompositorInstance::TargetOperation *op, SceneManager *sm, RenderSystem *rs)
Set current operation and target.
Ogre::CompositorChain::mOldFindVisibleObjects
bool mOldFindVisibleObjects
Store old find visible objects.
Definition: OgreCompositorChain.h:235
Ogre::CompositorChain::addCompositor
CompositorInstance * addCompositor(CompositorPtr filter, size_t addPosition=LAST, const String &scheme=StringUtil::BLANK)
Apply a compositor.
Ogre::CompositorChain::getCompositor
CompositorInstance * getCompositor(size_t index)
Get compositor instance by position.

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.