OgreCompositorInstance.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 __CompositorInstance_H__
29 #define __CompositorInstance_H__
30 
31 #include "OgrePrerequisites.h"
32 #include "OgreMaterialManager.h"
33 #include "OgreTexture.h"
34 #include "OgreRenderQueue.h"
36 #include "OgreHeaderPrefix.h"
37 
38 namespace Ogre {
46 
51  {
52  public:
59  {
60  public:
61  virtual ~Listener();
62 
74  virtual void notifyMaterialSetup(uint32 pass_id, MaterialPtr &mat);
75 
86  virtual void notifyMaterialRender(uint32 pass_id, MaterialPtr &mat);
87 
92  virtual void notifyResourcesCreated(bool forResizeOnly);
93 
94  };
100  {
101  public:
104  virtual void execute(SceneManager *sm, RenderSystem *rs) = 0;
105  };
107  typedef std::pair<int, RenderSystemOperation*> RenderSystemOpPair;
112  {
113  public:
115  {
116  }
118  target(inTarget), currentQueueGroupID(0), visibilityMask(0xFFFFFFFF),
119  lodBias(1.0f),
120  onlyInitial(false), hasBeenRendered(false), findVisibleObjects(false),
121  materialScheme(MaterialManager::DEFAULT_SCHEME_NAME), shadowsEnabled(true)
122  {
123  }
126 
129 
133 
137 
140  float lodBias;
141 
144  typedef std::bitset<RENDER_QUEUE_COUNT> RenderQueueBitSet;
145 
148 
163  };
165 
170  void setEnabled(bool value);
171 
174  bool getEnabled() const { return mEnabled; }
175 
182  void setAlive(bool value);
183 
186  bool getAlive() const { return mAlive; }
187 
201  const String& getTextureInstanceName(const String& name, size_t mrtIndex);
202 
216  TexturePtr getTextureInstance(const String& name, size_t mrtIndex);
217 
225 
226 
231  virtual void _compileTargetOperations(CompiledState &compiledState);
232 
236  virtual void _compileOutputOperation(TargetOperation &finalState);
237 
241 
245 
253  void setTechnique(CompositionTechnique* tech, bool reuseTextures = true);
254 
268  void setScheme(const String& schemeName, bool reuseTextures = true);
269 
271  const String& getScheme() const { return mTechnique ? mTechnique->getSchemeName() : StringUtil::BLANK; }
272 
279 
283 
290 
295 
299 
303 
306  void _fireNotifyResourcesCreated(bool forResizeOnly);
307  private:
315  bool mEnabled;
317  bool mAlive;
330 
334 
337 
341  virtual void collectPasses(TargetOperation &finalState, CompositionTargetPass *target);
342 
348 
351  void createResources(bool forResizeOnly);
352 
355  void freeResources(bool forResizeOnly, bool clearReserveTextures);
356 
360 
367  const String &getSourceForTex(const String &name, size_t mrtIndex = 0);
368 
372 
374  String getMRTTexLocalName(const String& baseName, size_t attachment);
375 
380  bool *hwGammaWrite, uint *fsaa, String* fsaaHint);
381 
384 
385  friend class CompositorChain;
386  };
390 } // namespace Ogre
391 
392 #include "OgreHeaderSuffix.h"
393 
394 #endif // __CompositorInstance_H__
OgreHeaderSuffix.h
Ogre::CompositorInstance::notifyCameraChanged
void notifyCameraChanged(Camera *camera)
Notify this instance that the primary viewport's camera has changed.
OgreRenderQueue.h
Ogre::CompositorInstance::getTargetForTex
RenderTarget * getTargetForTex(const String &name)
Get RenderTarget for a named local texture.
Ogre::CompositorInstance::setTechnique
void setTechnique(CompositionTechnique *tech, bool reuseTextures=true)
Change the technique we're using to render this compositor.
Ogre::RENDER_QUEUE_COUNT
const size_t RENDER_QUEUE_COUNT
Definition: OgreCompositorInstance.h:45
Ogre::CompositorInstance::deriveTextureRenderTargetOptions
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 targe...
Ogre::RenderSystem
Defines the functionality of a 3D API.
Definition: OgreRenderSystem.h:126
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::CompositorInstance::QuadMaterialMap
map< int, MaterialPtr >::type QuadMaterialMap
Definition: OgreCompositorInstance.h:106
Ogre::CompositorInstance::RenderSystemOperation::execute
virtual void execute(SceneManager *sm, RenderSystem *rs)=0
Set state to SceneManager and RenderSystem.
Ogre::CompositorInstance::LocalMRTMap
map< String, MultiRenderTarget * >::type LocalMRTMap
Store a list of MRTs we've created.
Definition: OgreCompositorInstance.h:322
Ogre::CompositorInstance::setAlive
void setAlive(bool value)
Set alive/active flag.
Ogre::CompositorInstance::mListeners
Listeners mListeners
Definition: OgreCompositorInstance.h:333
Ogre::map
Definition: OgrePrerequisites.h:534
Ogre::Camera
A viewpoint from which the scene will be rendered.
Definition: OgreCamera.h:87
Ogre::Compositor
Class representing a Compositor object.
Definition: OgreCompositor.h:51
Ogre::CompositorInstance::getSourceForTex
const String & getSourceForTex(const String &name, size_t mrtIndex=0)
Get source texture name for a named local texture.
Ogre::CompositorChain
Chain of compositor effects applying to one viewport.
Definition: OgreCompositorChain.h:49
Ogre::CompositorInstance::RenderSystemOpPair
std::pair< int, RenderSystemOperation * > RenderSystemOpPair
Definition: OgreCompositorInstance.h:107
Ogre::CompositorInstance::createResources
void createResources(bool forResizeOnly)
Create local rendertextures and other resources.
OgreMaterialManager.h
Ogre::CompositorInstance::_fireNotifyResourcesCreated
void _fireNotifyResourcesCreated(bool forResizeOnly)
Notify listeners of a material render.
Ogre::CompositorInstance::TargetOperation::hasBeenRendered
bool hasBeenRendered
"Has been rendered" flag; used in combination with onlyInitial to determine whether to skip this targ...
Definition: OgreCompositorInstance.h:155
Ogre::MaterialManager
Class for managing Material settings for Ogre.
Definition: OgreMaterialManager.h:65
Ogre::CompositorInstance::_fireNotifyMaterialSetup
void _fireNotifyMaterialSetup(uint32 pass_id, MaterialPtr &mat)
Notify listeners of a material compilation.
Ogre::CompositorInstance::getTextureInstanceName
const String & getTextureInstanceName(const String &name, size_t mrtIndex)
Get the instance name for a local texture.
Ogre::CompositorInstance::addListener
void addListener(Listener *l)
Add a listener.
Ogre::uint32
unsigned int uint32
Definition: OgrePlatform.h:359
Ogre::CompositorInstance::CompositorInstance
CompositorInstance(CompositionTechnique *technique, CompositorChain *chain)
Ogre::CompositorInstance::getEnabled
bool getEnabled() const
Get enabled flag.
Definition: OgreCompositorInstance.h:174
Ogre::CompositorInstance::mReserveTextures
ReserveTextureMap mReserveTextures
Textures that are not currently in use, but that we want to keep for now, for example if we switch te...
Definition: OgreCompositorInstance.h:329
Ogre::CompositorInstance::TargetOperation
Operation setup for a RenderTarget (collected).
Definition: OgreCompositorInstance.h:112
Ogre::String
_StringBase String
Definition: OgrePrerequisites.h:439
Ogre::CompositorInstance::TargetOperation::lodBias
float lodBias
LOD offset.
Definition: OgreCompositorInstance.h:140
Ogre::CompositionTechnique
Base composition technique, can be subclassed in plugins.
Definition: OgreCompositionTechnique.h:46
Ogre::CompositorInstance::RenderSystemOperation::~RenderSystemOperation
virtual ~RenderSystemOperation()
Ogre::CompositorInstance::getMRTTexLocalName
String getMRTTexLocalName(const String &baseName, size_t attachment)
Util method for assigning a local texture name to a MRT attachment.
Ogre::CompositorInstance::mLocalMRTs
LocalMRTMap mLocalMRTs
Definition: OgreCompositorInstance.h:323
Ogre::CompositorInstance::mPreviousInstance
CompositorInstance * mPreviousInstance
Previous instance (set by chain).
Definition: OgreCompositorInstance.h:336
Ogre::CompositorInstance::getChain
CompositorChain * getChain()
Get Chain that this instance is part of.
Ogre::CompositorInstance::TargetOperation::findVisibleObjects
bool findVisibleObjects
Whether this op needs to find visible scene objects or not.
Definition: OgreCompositorInstance.h:158
Ogre::CompositorInstance::getRenderTarget
RenderTarget * getRenderTarget(const String &name)
Get the render target for a given render texture name.
Ogre::CompositorInstance::_compileTargetOperations
virtual void _compileTargetOperations(CompiledState &compiledState)
Recursively collect target states (except for final Pass).
Ogre::CompositorInstance::TargetOperation::renderSystemOperations
RenderSystemOpPairs renderSystemOperations
RenderSystem operations to queue into the scene manager, by uint8.
Definition: OgreCompositorInstance.h:132
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::RENDER_QUEUE_MAX
@ RENDER_QUEUE_MAX
Final possible render queue, don't exceed this.
Definition: OgreRenderQueue.h:76
Ogre::CompositorInstance::removeListener
void removeListener(Listener *l)
Remove a listener.
Ogre::CompositorInstance::TargetOperation::target
RenderTarget * target
Target.
Definition: OgreCompositorInstance.h:125
Ogre::CompositorInstance::Listener::notifyMaterialSetup
virtual void notifyMaterialSetup(uint32 pass_id, MaterialPtr &mat)
Notification of when a render target operation involving a material (like rendering a quad) is compil...
OgreHeaderPrefix.h
Ogre::RenderTarget
A 'canvas' which can receive the results of a rendering operation.
Definition: OgreRenderTarget.h:66
Ogre::SceneManager
Manages the organisation and rendering of a 'scene' i.e.
Definition: OgreSceneManager.h:144
Ogre::CompositorInstance::Listener::~Listener
virtual ~Listener()
Ogre::CompositionTargetPass
Object representing one render to a RenderTarget or Viewport in the Ogre Composition framework.
Definition: OgreCompositionTargetPass.h:46
Ogre::CompositorInstance::setEnabled
void setEnabled(bool value)
Set enabled flag.
Ogre::CompositorInstance::setScheme
void setScheme(const String &schemeName, bool reuseTextures=true)
Pick a technique to use to render this compositor based on a scheme.
OgrePrerequisites.h
OgreTexture.h
Ogre::CompositorInstance::Listener::notifyMaterialRender
virtual void notifyMaterialRender(uint32 pass_id, MaterialPtr &mat)
Notification before a render target operation involving a material (like rendering a quad),...
Ogre::CompositorInstance::getTechnique
CompositionTechnique * getTechnique()
Get CompositionTechnique used by this instance.
Ogre::CompositorInstance::TargetOperation::TargetOperation
TargetOperation()
Definition: OgreCompositorInstance.h:114
Ogre::CompositorInstance::TargetOperation::shadowsEnabled
bool shadowsEnabled
Whether shadows will be enabled.
Definition: OgreCompositorInstance.h:162
Ogre::CompositorInstance::mEnabled
bool mEnabled
Is this instance enabled?
Definition: OgreCompositorInstance.h:315
Ogre::CompositorInstance::TargetOperation::TargetOperation
TargetOperation(RenderTarget *inTarget)
Definition: OgreCompositorInstance.h:117
Ogre::CompositorInstance::Listener::notifyResourcesCreated
virtual void notifyResourcesCreated(bool forResizeOnly)
Notification after resources have been created (or recreated).
Ogre::CompositorInstance::createLocalMaterial
MaterialPtr createLocalMaterial(const String &srcName)
Create a local dummy material with one technique but no passes.
_OgreExport
#define _OgreExport
Definition: OgrePlatform.h:257
Ogre::CompositorInstance::ReserveTextureMap
map< CompositionTechnique::TextureDefinition *, TexturePtr >::type ReserveTextureMap
Definition: OgreCompositorInstance.h:324
Ogre::CompositorInstance::LocalTextureMap
map< String, TexturePtr >::type LocalTextureMap
Map from name->local texture.
Definition: OgreCompositorInstance.h:319
Ogre::CompositorInstance::RenderSystemOperation
Specific render system operation.
Definition: OgreCompositorInstance.h:100
Ogre::CompositorInstance::TargetOperation::materialScheme
String materialScheme
Which material scheme this op will use.
Definition: OgreCompositorInstance.h:160
Ogre::CompositorInstance::_fireNotifyMaterialRender
void _fireNotifyMaterialRender(uint32 pass_id, MaterialPtr &mat)
Notify listeners of a material render.
Ogre::CompositorInstance::mAlive
bool mAlive
Is this instance allocating resources?
Definition: OgreCompositorInstance.h:317
Ogre::CompositorInstance::Listener
Provides an interface to "listen in" to to render system operations executed by this CompositorInstan...
Definition: OgreCompositorInstance.h:59
Ogre::SharedPtr< Material >
Ogre::CompositorInstance::getTextureInstance
TexturePtr getTextureInstance(const String &name, size_t mrtIndex)
Get the instance of a local texture.
Ogre::map::type
std::map< K, V, P, A > type
Definition: OgrePrerequisites.h:536
Ogre::CompositorInstance::CompiledState
vector< TargetOperation >::type CompiledState
Definition: OgreCompositorInstance.h:164
Ogre::CompositorInstance::_compileOutputOperation
virtual void _compileOutputOperation(TargetOperation &finalState)
Compile the final (output) operation.
Ogre::uint
unsigned int uint
Definition: OgrePrerequisites.h:114
Ogre::CompositorInstance::mTechnique
CompositionTechnique * mTechnique
Composition technique used by this instance.
Definition: OgreCompositorInstance.h:311
Ogre::CompositorInstance::TargetOperation::RenderQueueBitSet
std::bitset< RENDER_QUEUE_COUNT > RenderQueueBitSet
A set of render queues to either include or exclude certain render queues.
Definition: OgreCompositorInstance.h:144
Ogre::CompositorInstance::collectPasses
virtual void collectPasses(TargetOperation &finalState, CompositionTargetPass *target)
Collect rendering passes.
Ogre::CompositorInstance::~CompositorInstance
virtual ~CompositorInstance()
Ogre::CompositorInstance::mCompositor
Compositor * mCompositor
Compositor of which this is an instance.
Definition: OgreCompositorInstance.h:309
Ogre::CompositorInstance::TargetOperation::visibilityMask
uint32 visibilityMask
Scene visibility mask If this is 0, the scene is not rendered at all.
Definition: OgreCompositorInstance.h:136
Ogre::CompositorInstance::notifyResized
void notifyResized()
Notify this instance that the primary surface has been resized.
Ogre::CompositorInstance::TargetOperation::currentQueueGroupID
int currentQueueGroupID
Current group ID.
Definition: OgreCompositorInstance.h:128
Ogre::CompositorInstance::RenderSystemOpPairs
vector< RenderSystemOpPair >::type RenderSystemOpPairs
Definition: OgreCompositorInstance.h:108
Ogre::CompositorInstance::queueRenderSystemOp
void queueRenderSystemOp(TargetOperation &finalState, RenderSystemOperation *op)
Queue a render system operation.
Ogre::CompositorInstance::Listeners
vector< Listener * >::type Listeners
Vector of listeners.
Definition: OgreCompositorInstance.h:332
Ogre::CompositorInstance
An instance of a Compositor object for one Viewport.
Definition: OgreCompositorInstance.h:51
Ogre::CompositorInstance::mChain
CompositorChain * mChain
Composition chain of which this instance is part.
Definition: OgreCompositorInstance.h:313
Ogre::CompositorInstance::TargetOperation::onlyInitial
bool onlyInitial
Definition: OgreCompositorInstance.h:151
Ogre::vector
Definition: OgrePrerequisites.h:492
Ogre::CompositorInstance::getAlive
bool getAlive() const
Get alive flag.
Definition: OgreCompositorInstance.h:186
Ogre::CompositorInstance::getCompositor
Compositor * getCompositor()
Get Compositor of which this is an instance.
OgreCompositionTechnique.h
Ogre::CompositorInstance::mLocalTextures
LocalTextureMap mLocalTextures
Definition: OgreCompositorInstance.h:320
Ogre::CompositorInstance::TargetOperation::renderQueues
RenderQueueBitSet renderQueues
Which renderqueues to render from scene.
Definition: OgreCompositorInstance.h:147
Ogre::CompositorInstance::freeResources
void freeResources(bool forResizeOnly, bool clearReserveTextures)
Destroy local rendertextures and other resources.
Ogre::CompositorInstance::getScheme
const String & getScheme() const
Returns the name of the scheme this compositor is using.
Definition: OgreCompositorInstance.h:271

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