OGRE: Ogre::CompositorPassSceneDef Class Reference

| OGRE 2.2.4 Object-Oriented Graphics Rendering Engine

Public Types | Public Member Functions | Public Attributes | List of all members
Ogre::CompositorPassSceneDef Class Reference
Core » Effects

`#include <OgreCompositorPassSceneDef.h>`

Inheritance diagram for Ogre::CompositorPassSceneDef:
[legend]

## Public Types
typedef vector< UavDependency >::type | UavDependencyVec

## Public Member Functions
| CompositorPassSceneDef (CompositorTargetDef *parentTargetDef)
const CompositorTargetDef * | getParentTargetDef (void) const
uint32 | getRtIndex (void) const
CompositorPassType | getType () const
void | operator delete (void *ptr)
void | operator delete (void *ptr, const char *, int, const char *)
void | operator delete (void *ptr, void *)
void | operator delete[] (void *ptr)
void | operator delete[] (void *ptr, const char *, int, const char *)
void * | operator new (size_t sz)
void * | operator new (size_t sz, const char *file, int line, const char *func)
| operator new, with debug line info More...
void * | operator new (size_t sz, void *ptr)
| placement operator new More...
void * | operator new[] (size_t sz)
void * | operator new[] (size_t sz, const char *file, int line, const char *func)
| array operator new, with debug line info More...
void | setAllClearColours (const ColourValue &clearValue)
void | setAllLoadActions (LoadAction::LoadAction loadAction)
void | setAllStoreActions (StoreAction::StoreAction storeAction)
void | setLightVisibilityMask (uint32 visibilityMask)
void | setUseDepthPrePass (const IdStringVec &textureName, IdString depthTextureName, IdString ssrTexture)
void | setUseRefractions (IdString depthTextureName, IdString refractionsTexture)
void | setVisibilityMask (uint32 visibilityMask)

## Public Attributes
bool | mBakeLightingOnly
| When mUvBakingSet is set, tells whether we should bake the whole render result or just the lighting intensity, in order to create a lightmap. More...
bool | mCameraCubemapReorient
| When true, the camera will be rotated 90°, -90° or 180° depending on the value of mRtIndex and then restored to its original rotation after we're done. More...
IdString | mCameraName
| When empty, uses the default camera. More...
ColourValue | mClearColour [OGRE_MAX_MULTIPLE_RENDER_TARGETS]
float | mClearDepth
uint32 | mClearStencil
bool | mColourWrite
| When false will not really bind the RenderTarget for rendering and use a null colour buffer instead. More...
IdString | mCullCameraName
| When empty, it implies mCameraName == mCullCameraName. More...
IdString | mDepthTextureNoMsaa
bool | mEnableForwardPlus
| Enable ForwardPlus during the pass (if Forward3D or ForwardClustered systems were created). More...
uint8 | mExecutionMask
IdStringVec | mExposedTextures
uint8 | mFirstRQ
| First Render Queue ID to render. Inclusive. More...
bool | mFlushCommandBuffers
| Whether to flush the command buffer at the end of the pass. More...
bool | mFlushCommandBuffersAfterShadowNode
| Same as CompositorPassDef::mFlushCommandBuffers, but executed after the shadow node Note you may end up flushing twice if the shadow node also has flushing of its own. More...
bool | mGenNormalsGBuf
| Generate Normals for a GBuffer in RTV output 1, This flag is ignored mPrePassMode if mPrePassMode != PrePassNone. More...
uint32 | mIdentifier
| Custom value in case there's a listener attached (to identify the pass) More...
bool | mIncludeOverlays
| TODO: Refactor OgreOverlay to remove this design atrocity. More...
bool | mInstancedStereo
| When true, will render in instanced stereo mode, thus outputting left & right eyes at the same time. More...
uint8 | mLastRQ
| Last Render Queue ID to render. Not inclusive. More...
uint32 | mLightVisibilityMask
| Used by Forward+ to determine which lights should be used (via Light::setVisibilityFlags) More...
LoadAction::LoadAction | mLoadActionColour [OGRE_MAX_MULTIPLE_RENDER_TARGETS]
LoadAction::LoadAction | mLoadActionDepth
LoadAction::LoadAction | mLoadActionStencil
Real | mLodBias
| Multiplier to the Lod value. More...
IdString | mLodCameraName
| When empty, it implies mCameraName == mLodCameraName; except for shadow nodes. More...
String | mMaterialScheme
| The material scheme used for this pass. More...
uint32 | mNumInitialPasses
| Number of times to perform the pass before stopping. -1 to never stop. More...
uint32 | mNumViewports
IdString | mPrePassDepthTexture
PrePassMode | mPrePassMode
| This is a depth pre-pass. More...
IdString | mPrePassSsrTexture
IdStringVec | mPrePassTexture
| Only used if mPrePassMode == PrePassUse. More...
String | mProfilingId
bool | mReadOnlyDepth
bool | mReadOnlyStencil
IdString | mRefractionsTexture
bool | mReuseCullData
| When true, the frustum culling is skipped in this pass. More...
bool | mShadowMapFullViewport
| Only used if mShadowMapIdx is valid (if pass is owned by Shadow Nodes). More...
uint32 | mShadowMapIdx
| Shadow map index it belongs to (only filled in passes owned by Shadow Nodes) More...
IdString | mShadowNode
ShadowNodeRecalculation | mShadowNodeRecalculation
StoreAction::StoreAction | mStoreActionColour [OGRE_MAX_MULTIPLE_RENDER_TARGETS]
StoreAction::StoreAction | mStoreActionDepth
StoreAction::StoreAction | mStoreActionStencil
UavDependencyVec | mUavDependencies
bool | mUpdateLodLists
| When true, which Lod index is current will be updated. More...
Vector2 | mUvBakingOffset
| When mUvBakingSet is enabled, this defines the UV offset (in pixels). More...
uint8 | mUvBakingSet
| Used for baking lightmaps and similar stuff. More...
uint8 | mViewportModifierMask
uint32 | mVisibilityMask
| Viewport's visibility mask while rendering our pass. More...
ViewportRect | mVpRect [16]
| Viewport's region to draw. More...
bool | mWarnIfRtvWasFlushed
| Will issue a warning (by raising an exception) if Ogre is forced to flush the RenderTarget, which is very bad for performance on mobile, and can cause serious performance problems in Desktop if using MSAA, and also cause correctness problems (i.e. More...

## Member Typedef Documentation

## ◆ UavDependencyVec

typedef vector<UavDependency>::type Ogre::CompositorPassDef::UavDependencyVec
| inherited

## Constructor & Destructor Documentation

## ◆ CompositorPassSceneDef()

Ogre::CompositorPassSceneDef::CompositorPassSceneDef | ( | CompositorTargetDef * | parentTargetDef | ) |
| inline

References Ogre::RenderSystem::_getDefaultViewportMaterialScheme(), Ogre::Root::getRenderSystem(), and Ogre::Root::getSingleton().

## Member Function Documentation

## ◆ getParentTargetDef()

const CompositorTargetDef* Ogre::CompositorPassDef::getParentTargetDef | ( | void |  | ) | const
| inherited

## ◆ getRtIndex()

uint32 Ogre::CompositorPassDef::getRtIndex | ( | void |  | ) | const
| inherited

## ◆ getType()

CompositorPassType Ogre::CompositorPassDef::getType | ( | void |  | ) | const
| inlineinherited

## ◆ operator delete() [1/3]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr | ) |
| inlineinherited

## ◆ operator delete() [2/3]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr,
|  | const char * | ,
|  | int | ,
|  | const char * |
| ) |  |
| inlineinherited

## ◆ operator delete() [3/3]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr,
|  | void * |
| ) |  |
| inlineinherited

## ◆ operator delete[]() [1/2]

template<class Alloc >

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

## ◆ operator delete[]() [2/2]

template<class Alloc >

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

## ◆ operator new() [1/3]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz | ) |
| inlineinherited

## ◆ operator new() [2/3]

template<class Alloc >

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

operator new, with debug line info

## ◆ operator new() [3/3]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz,
|  | void * | ptr
| ) |  |
| inlineinherited

placement operator new

## ◆ operator new[]() [1/2]

template<class Alloc >

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

## ◆ operator new[]() [2/2]

template<class Alloc >

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

array operator new, with debug line info

## ◆ setAllClearColours()

void Ogre::CompositorPassDef::setAllClearColours | ( | const ColourValue & | clearValue | ) |
| inherited

## ◆ setAllLoadActions()

void Ogre::CompositorPassDef::setAllLoadActions | ( | LoadAction::LoadAction | loadAction | ) |
| inherited

## ◆ setAllStoreActions()

void Ogre::CompositorPassDef::setAllStoreActions | ( | StoreAction::StoreAction | storeAction | ) |
| inherited

## ◆ setLightVisibilityMask()

void Ogre::CompositorPassSceneDef::setLightVisibilityMask | ( | uint32 | visibilityMask | ) |
| inline

References Ogre::VisibilityFlags::RESERVED_VISIBILITY_FLAGS.

## ◆ setUseDepthPrePass()

void Ogre::CompositorPassSceneDef::setUseDepthPrePass | ( | const IdStringVec & | textureName,
|  | IdString | depthTextureName,
|  | IdString | ssrTexture
| ) |  |
| inline

References Ogre::PrePassUse.

## ◆ setUseRefractions()

void Ogre::CompositorPassSceneDef::setUseRefractions | ( | IdString | depthTextureName,
|  | IdString | refractionsTexture
| ) |  |
| inline

## ◆ setVisibilityMask()

void Ogre::CompositorPassSceneDef::setVisibilityMask | ( | uint32 | visibilityMask | ) |
| inline

References Ogre::VisibilityFlags::RESERVED_VISIBILITY_FLAGS.

## Member Data Documentation

## ◆ mBakeLightingOnly

bool Ogre::CompositorPassSceneDef::mBakeLightingOnly

When mUvBakingSet is set, tells whether we should bake the whole render result or just the lighting intensity, in order to create a lightmap.

Typically, when baking with this setting, it's because you're going to use this texture with HlmsPbsDatablock as an emissive map and calling HlmsPbsDatablock::setUseEmissiveAsLightmap with true.

## ◆ mCameraCubemapReorient

bool Ogre::CompositorPassSceneDef::mCameraCubemapReorient

When true, the camera will be rotated 90°, -90° or 180° depending on the value of mRtIndex and then restored to its original rotation after we're done.

## ◆ mCameraName

IdString Ogre::CompositorPassSceneDef::mCameraName

When empty, uses the default camera.

## ◆ mClearColour

ColourValue Ogre::CompositorPassDef::mClearColour[OGRE_MAX_MULTIPLE_RENDER_TARGETS]
| inherited

## ◆ mClearDepth

float Ogre::CompositorPassDef::mClearDepth
| inherited

## ◆ mClearStencil

uint32 Ogre::CompositorPassDef::mClearStencil
| inherited

## ◆ mColourWrite

bool Ogre::CompositorPassDef::mColourWrite
| inherited

When false will not really bind the RenderTarget for rendering and use a null colour buffer instead.

Useful for depth prepass, or if the RTT is actually an UAV. Some passes may ignore this setting (e.g. Clear passes)

## ◆ mCullCameraName

IdString Ogre::CompositorPassSceneDef::mCullCameraName

When empty, it implies mCameraName == mCullCameraName.

## ◆ mDepthTextureNoMsaa

IdString Ogre::CompositorPassSceneDef::mDepthTextureNoMsaa

## ◆ mEnableForwardPlus

bool Ogre::CompositorPassSceneDef::mEnableForwardPlus

Enable ForwardPlus during the pass (if Forward3D or ForwardClustered systems were created).

Disabling optimizes performance when you don't need it.

## ◆ mExecutionMask

uint8 Ogre::CompositorPassDef::mExecutionMask
| inherited

## ◆ mExposedTextures

IdStringVec Ogre::CompositorPassDef::mExposedTextures
| inherited

## ◆ mFirstRQ

uint8 Ogre::CompositorPassSceneDef::mFirstRQ

First Render Queue ID to render. Inclusive.

## ◆ mFlushCommandBuffers

bool Ogre::CompositorPassDef::mFlushCommandBuffers
| inherited

Whether to flush the command buffer at the end of the pass.

This can incur in a performance overhead (see OpenGL's glFlush and D3D11' ID3D11DeviceContext::Flush) for info. Usually you want to leave this off. However for VR applications that must meet VSync, profiling may show your workload benefits from submitting earlier so the GPU can start right away executing rendering commands.

The main reason to use this is in CPU-bound scenarios where the GPU starts too late after sitting idle.

## ◆ mFlushCommandBuffersAfterShadowNode

bool Ogre::CompositorPassSceneDef::mFlushCommandBuffersAfterShadowNode

Same as CompositorPassDef::mFlushCommandBuffers, but executed after the shadow node Note you may end up flushing twice if the shadow node also has flushing of its own.

Does not do anything if mShadowNodeRecalculation is set to SHADOW_NODE_REUSE (whether explicitly or automatically determined)

## ◆ mGenNormalsGBuf

bool Ogre::CompositorPassSceneDef::mGenNormalsGBuf

Generate Normals for a GBuffer in RTV output 1, This flag is ignored mPrePassMode if mPrePassMode != PrePassNone.

## ◆ mIdentifier

uint32 Ogre::CompositorPassDef::mIdentifier
| inherited

Custom value in case there's a listener attached (to identify the pass)

## ◆ mIncludeOverlays

bool Ogre::CompositorPassDef::mIncludeOverlays
| inherited

TODO: Refactor OgreOverlay to remove this design atrocity.

A custom overlay pass is a better alternative (or just use their own RQ)

## ◆ mInstancedStereo

bool Ogre::CompositorPassSceneDef::mInstancedStereo

When true, will render in instanced stereo mode, thus outputting left & right eyes at the same time.

## ◆ mLastRQ

uint8 Ogre::CompositorPassSceneDef::mLastRQ

Last Render Queue ID to render. Not inclusive.

## ◆ mLightVisibilityMask

uint32 Ogre::CompositorPassSceneDef::mLightVisibilityMask

Used by Forward+ to determine which lights should be used (via Light::setVisibilityFlags)

## ◆ mLoadActionColour

LoadAction::LoadAction Ogre::CompositorPassDef::mLoadActionColour[OGRE_MAX_MULTIPLE_RENDER_TARGETS]
| inherited

## ◆ mLoadActionDepth

LoadAction::LoadAction Ogre::CompositorPassDef::mLoadActionDepth
| inherited

## ◆ mLoadActionStencil

LoadAction::LoadAction Ogre::CompositorPassDef::mLoadActionStencil
| inherited

## ◆ mLodBias

Real Ogre::CompositorPassSceneDef::mLodBias

Multiplier to the Lod value.

What it means depends on the technique. You'll probably want to avoid setting it directly and rather use LodStrategy::transformBias

See also
  LodStrategy::transformBias

## ◆ mLodCameraName

IdString Ogre::CompositorPassSceneDef::mLodCameraName

When empty, it implies mCameraName == mLodCameraName; except for shadow nodes.

For shadow nodes, when empty, it will use the receiver's lod camera.

## ◆ mMaterialScheme

String Ogre::CompositorPassSceneDef::mMaterialScheme

The material scheme used for this pass.

If no material scheme is set then it will use the default scheme

## ◆ mNumInitialPasses

uint32 Ogre::CompositorPassDef::mNumInitialPasses
| inherited

Number of times to perform the pass before stopping. -1 to never stop.

## ◆ mNumViewports

uint32 Ogre::CompositorPassDef::mNumViewports
| inherited

## ◆ mPrePassDepthTexture

IdString Ogre::CompositorPassSceneDef::mPrePassDepthTexture

## ◆ mPrePassMode

PrePassMode Ogre::CompositorPassSceneDef::mPrePassMode

This is a depth pre-pass.

Note: Implementations may write to colour too for hybrid deferred & forward rendering. If you modify this, you probably want to modify mReadOnlyDepth & mReadOnlyStencil too

## ◆ mPrePassSsrTexture

IdString Ogre::CompositorPassSceneDef::mPrePassSsrTexture

## ◆ mPrePassTexture

IdStringVec Ogre::CompositorPassSceneDef::mPrePassTexture

Only used if mPrePassMode == PrePassUse.

## ◆ mProfilingId

String Ogre::CompositorPassDef::mProfilingId
| inherited

## ◆ mReadOnlyDepth

bool Ogre::CompositorPassDef::mReadOnlyDepth
| inherited

## ◆ mReadOnlyStencil

bool Ogre::CompositorPassDef::mReadOnlyStencil
| inherited

## ◆ mRefractionsTexture

IdString Ogre::CompositorPassSceneDef::mRefractionsTexture

## ◆ mReuseCullData

bool Ogre::CompositorPassSceneDef::mReuseCullData

When true, the frustum culling is skipped in this pass.

To cull objects, data from the most recent frustum culling execution are used.

## ◆ mShadowMapFullViewport

bool Ogre::CompositorPassDef::mShadowMapFullViewport
| inherited

Only used if mShadowMapIdx is valid (if pass is owned by Shadow Nodes).

If true, we won't force the viewport to fit the region of the UV atlas on the texture, and respect mVp* settings instead.

## ◆ mShadowMapIdx

uint32 Ogre::CompositorPassDef::mShadowMapIdx
| inherited

Shadow map index it belongs to (only filled in passes owned by Shadow Nodes)

## ◆ mShadowNode

IdString Ogre::CompositorPassSceneDef::mShadowNode

## ◆ mShadowNodeRecalculation

ShadowNodeRecalculation Ogre::CompositorPassSceneDef::mShadowNodeRecalculation

## ◆ mStoreActionColour

StoreAction::StoreAction Ogre::CompositorPassDef::mStoreActionColour[OGRE_MAX_MULTIPLE_RENDER_TARGETS]
| inherited

## ◆ mStoreActionDepth

StoreAction::StoreAction Ogre::CompositorPassDef::mStoreActionDepth
| inherited

## ◆ mStoreActionStencil

StoreAction::StoreAction Ogre::CompositorPassDef::mStoreActionStencil
| inherited

## ◆ mUavDependencies

UavDependencyVec Ogre::CompositorPassDef::mUavDependencies
| inherited

## ◆ mUpdateLodLists

bool Ogre::CompositorPassSceneDef::mUpdateLodLists

When true, which Lod index is current will be updated.

Reasons to set this to false:

1. You don't use LOD (i.e. you're GPU bottleneck). Setting to false helps CPU.
2. LODs have been calculated in a previous pass. This happens if previous pass(es) all used the same lod camera and all RenderQueue IDs this pass will use have been rendered already and updated their lod lists.
   Remarks
     Automatically set to false for shadow nodes that leave mLodCameraName empty

## ◆ mUvBakingOffset

Vector2 Ogre::CompositorPassSceneDef::mUvBakingOffset

When mUvBakingSet is enabled, this defines the UV offset (in pixels).

Without conservative rasterization, the baking won't render on pixels that are being partially touched by the triangle.

This causes severe artifacts when the baked result is used (background colour of the texture leaks into the triangle).

Without conservative rasterization, a sound solution is to render multiple times with pixel (or subpixel) offsets in order to add some padding around the borders of each triangle in the lightmap.

MSAA can also be used instead, but certain types of baking (e.g. GBuffer baking) don't work well because the MSAA sample locations are not in the center.

See https://ndotl.wordpress.com/2018/08/29/baking-artifact-free-lightmaps/

## ◆ mUvBakingSet

uint8 Ogre::CompositorPassSceneDef::mUvBakingSet

Used for baking lightmaps and similar stuff.

When set to 0xFF it is disabled. Otherwise, the selected UV set will be used to bake the texture with the render results. If the mesh doesn't have such UV, then the max UV will be used. If the mesh doesn't have UVs, it is up to the Hlms implementation what to do (probably raise an exception)

## ◆ mViewportModifierMask

uint8 Ogre::CompositorPassDef::mViewportModifierMask
| inherited

## ◆ mVisibilityMask

uint32 Ogre::CompositorPassSceneDef::mVisibilityMask

Viewport's visibility mask while rendering our pass.

## ◆ mVpRect

ViewportRect Ogre::CompositorPassDef::mVpRect[16]
| inherited

Viewport's region to draw.

## ◆ mWarnIfRtvWasFlushed

bool Ogre::CompositorPassDef::mWarnIfRtvWasFlushed
| inherited

Will issue a warning (by raising an exception) if Ogre is forced to flush the RenderTarget, which is very bad for performance on mobile, and can cause serious performance problems in Desktop if using MSAA, and also cause correctness problems (i.e.

bad rendering) if store action is StoreAction::Resolve.

Remarks
  Flushes are caused by splitting rendering to the same RenderTarget in multiple passes while rendering to a different RenderTarget in the middle. It's not always possible to avoid it, but if so, consider doing it.

  No warning will be issued if the RenderTargets getting flushed have their LoadAction set to LoadAction::Clear (or LoadAction::ClearOnTilers on tilers).

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

- OgreCompositorPassSceneDef.h