28#ifndef __CompositorChain_H__
29#define __CompositorChain_H__
62 static const size_t LAST = (size_t)-1;
64 static const size_t BEST = 0;
205 RQListener() : mOperation(0), mSceneManager(0), mRenderSystem(0), mViewport(0) {}
227 CompositorInstance::RenderSystemOpPairs::iterator
currentOp, lastOp;
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
A viewpoint from which the scene will be rendered.
Render queue listener used to set up rendering events.
void notifyViewport(Viewport *vp)
Notify current destination viewport.
void flushUpTo(uint8 id)
Flush remaining render system operations.
void setOperation(CompositorInstance::TargetOperation *op, SceneManager *sm, RenderSystem *rs)
Set current operation and target.
SceneManager * mSceneManager
CompositorInstance::TargetOperation * mOperation
virtual void renderQueueStarted(uint8 queueGroupId, const String &invocation, bool &skipThisInvocation)
Event raised before a queue group is rendered.
virtual void renderQueueEnded(uint8 queueGroupId, const String &invocation, bool &repeatThisInvocation)
Event raised after a queue group is rendered.
RenderSystem * mRenderSystem
CompositorInstance::RenderSystemOpPairs::iterator currentOp
Chain of compositor effects applying to one viewport.
CompositorInstance * getCompositor(size_t index)
Get compositor instance by position.
CompositorInstance * getCompositor(const String &name)
Get compositor instance by name.
void _markDirty()
Mark state as dirty, and to be recompiled next frame.
void removeCompositor(size_t position=LAST)
Remove a compositor.
size_t getNumCompositors()
Get the number of compositors.
void preTargetOperation(CompositorInstance::TargetOperation &op, Viewport *vp, Camera *cam)
Prepare a viewport, the camera and the scene for a rendering operation.
CompositorInstance::CompiledState mCompiledState
Compiled state (updated with _compile)
Viewport * getViewport()
Get viewport that is the target of this chain.
virtual void preRenderTargetUpdate(const RenderTargetEvent &evt)
RenderSystemOperations mRenderSystemOperations
bool mDirty
State needs recompile.
void createOriginalScene()
bool mOldFindVisibleObjects
Store old find visible objects.
void setCompositorEnabled(size_t position, bool state)
Enable or disable a compositor, by position.
void _queuedOperation(CompositorInstance::RenderSystemOperation *op)
Internal method for registering a queued operation for deletion later.
String mOriginalSceneScheme
virtual void postViewportUpdate(const RenderTargetViewportEvent &evt)
CompositorInstance * getPreviousInstance(CompositorInstance *curr, bool activeOnly=true)
Get the previous instance in this chain to the one specified.
CompositorInstance * addCompositor(CompositorPtr filter, size_t addPosition=LAST, const String &scheme=StringUtil::BLANK)
Apply a compositor.
CompositorInstance * _getOriginalSceneCompositor(void)
Get the original scene compositor instance for this chain (internal use).
Viewport * mViewport
Viewport affected by this CompositorChain.
void destroyResources(void)
destroy internal resources
void clearCompiledState()
Clear compiled state.
virtual void viewportDimensionsChanged(Viewport *viewport)
bool mAnyCompositorsEnabled
Any compositors enabled?
void removeAllCompositors()
Remove all compositors.
CompositorInstance::TargetOperation mOutputOperation
float mOldLodBias
Store old camera LOD bias.
void _removeInstance(CompositorInstance *i)
Remove a compositor by pointer.
CompositorInstance * getNextInstance(CompositorInstance *curr, bool activeOnly=true)
Get the next instance in this chain to the one specified.
virtual ~CompositorChain()
Another gcc warning here, which is no problem because RenderTargetListener is never used to delete an...
vector< CompositorInstance::RenderSystemOperation * >::type RenderSystemOperations
Render System operations queued by last compile, these are created by this instance thus managed and ...
String mOldMaterialScheme
Store old viewport material scheme.
void _compile()
Compile this Composition chain into a series of RenderTarget operations.
VectorIterator< Instances > InstanceIterator
virtual void postRenderTargetUpdate(const RenderTargetEvent &evt)
CompositorInstance * mOriginalScene
Plainly renders the scene; implicit first compositor in the chain.
vector< CompositorInstance * >::type Instances
Data types.
CompositorChain(Viewport *vp)
void postTargetOperation(CompositorInstance::TargetOperation &op, Viewport *vp, Camera *cam)
Restore a viewport, the camera and the scene after a rendering operation.
bool mOldShadowsEnabled
Store old shadows enabled flag.
virtual void preViewportUpdate(const RenderTargetViewportEvent &evt)
virtual void viewportDestroyed(Viewport *viewport)
Instances mInstances
Postfilter instances in this chain.
void destroyOriginalScene()
unsigned int mOldClearEveryFrameBuffers
Old viewport settings.
InstanceIterator getCompositors()
Get an iterator over the compositor instances.
uint32 mOldVisibilityMask
Store old scene visibility mask.
virtual void viewportCameraChanged(Viewport *viewport)
Specific render system operation.
Operation setup for a RenderTarget (collected).
An instance of a Compositor object for one Viewport.
vector< TargetOperation >::type CompiledState
Abstract interface which classes must implement if they wish to receive events from the render queue.
Defines the functionality of a 3D API.
A interface class defining a listener which can be used to receive notifications of RenderTarget even...
Manages the organisation and rendering of a 'scene' i.e.
Reference-counted shared pointer, used for objects where implicit destruction is required.
static const String BLANK
Constant blank string, useful for returning by ref where local does not exist.
Concrete IteratorWrapper for nonconst access to the underlying container.
Listener interface so you can be notified of Viewport changes.
An abstraction of a viewport, i.e.
Struct containing information about a RenderTarget event.
Struct containing information about a RenderTarget Viewport-specific event.