OGRE-Next  4.0.0unstable
Object-Oriented Graphics Rendering Engine
Ogre::CompositorPassSceneDef Class Reference

#include <OgreCompositorPassSceneDef.h>

+ Inheritance diagram for Ogre::CompositorPassSceneDef:

Public Member Functions

 CompositorPassSceneDef (CompositorTargetDef *parentTargetDef)
 
void setLightVisibilityMask (uint32 visibilityMask)
 
void setUseDepthPrePass (const IdStringVec &textureName, IdString depthTextureName, IdString ssrTexture)
 
void setUseRefractions (IdString depthTextureName, IdString refractionsTexture)
 
void setVisibilityMask (uint32 visibilityMask)
 
- Public Member Functions inherited from Ogre::CompositorPassDef
 CompositorPassDef (CompositorPassType passType, CompositorTargetDef *parentTargetDef)
 
virtual ~CompositorPassDef ()
 
const CompositorTargetDefgetParentTargetDef () const
 
uint32 getRtIndex () const
 
CompositorPassType getType () const
 
void setAllClearColours (const ColourValue &clearValue)
 
void setAllLoadActions (LoadAction::LoadAction loadAction)
 
void setAllStoreActions (StoreAction::StoreAction storeAction)
 

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...
 
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 mFirstRQ
 First Render Queue ID to render. Inclusive. 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...
 
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...
 
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...
 
IdString mPrePassDepthTexture
 
PrePassMode mPrePassMode
 This is a depth pre-pass. More...
 
IdString mPrePassSsrTexture
 
IdStringVec mPrePassTexture
 Only used if mPrePassMode == PrePassUse. More...
 
IdString mRefractionsTexture
 
bool mReuseCullData
 When true, the frustum culling is skipped in this pass. More...
 
IdString mShadowNode
 
ShadowNodeRecalculation mShadowNodeRecalculation
 
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...
 
uint32 mVisibilityMask
 Viewport's visibility mask while rendering our pass Please don't write to this directly. More...
 
- Public Attributes inherited from Ogre::CompositorPassDef
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...
 
uint8 mExecutionMask
 
IdStringVec mExposedTextures
 
bool mFlushCommandBuffers
 Whether to flush the command buffer at the end of the pass. 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...
 
LoadAction::LoadAction mLoadActionColour [OGRE_MAX_MULTIPLE_RENDER_TARGETS]
 
LoadAction::LoadAction mLoadActionDepth
 
LoadAction::LoadAction mLoadActionStencil
 
uint32 mNumInitialPasses
 Number of times to perform the pass before stopping. -1 to never stop. More...
 
uint32 mNumViewports
 
String mProfilingId
 
bool mReadOnlyDepth
 
bool mReadOnlyStencil
 
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...
 
bool mSkipLoadStoreSemantics
 Ignore mLoadAction*‍/mStoreAction*. More...
 
StoreAction::StoreAction mStoreActionColour [OGRE_MAX_MULTIPLE_RENDER_TARGETS]
 
StoreAction::StoreAction mStoreActionDepth
 
StoreAction::StoreAction mStoreActionStencil
 
UavDependencyVec mUavDependencies
 
uint8 mViewportModifierMask
 
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...
 

Additional Inherited Members

- Public Types inherited from Ogre::CompositorPassDef
typedef vector< UavDependency >::type UavDependencyVec
 

Constructor & Destructor Documentation

◆ CompositorPassSceneDef()

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

Member Function Documentation

◆ setLightVisibilityMask()

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

◆ 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

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.

◆ 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.

◆ mFirstRQ

uint8 Ogre::CompositorPassSceneDef::mFirstRQ

First Render Queue ID to render. Inclusive.

◆ 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.

◆ 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)

◆ 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

◆ 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.

◆ 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.

◆ mShadowNode

IdString Ogre::CompositorPassSceneDef::mShadowNode

◆ mShadowNodeRecalculation

ShadowNodeRecalculation Ogre::CompositorPassSceneDef::mShadowNodeRecalculation

◆ 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)

◆ mVisibilityMask

uint32 Ogre::CompositorPassSceneDef::mVisibilityMask

Viewport's visibility mask while rendering our pass Please don't write to this directly.

Use setVisibilityMask()


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