OGRE-Next: Ogre::HlmsBlendblock Struct Reference

| OGRE-Next 3.0.0 Object-Oriented Graphics Rendering Engine

Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | List of all members
Ogre::HlmsBlendblock Struct Reference
Core » Resources

A blend block contains settings that rarely change, and thus are common to many materials. More...

`#include <OgreHlmsDatablock.h>`

Inheritance diagram for Ogre::HlmsBlendblock:
[legend]

## Public Types
enum | BlendChannelMasks { BlendChannelRed = 0x01 , BlendChannelGreen = 0x02 , BlendChannelBlue = 0x04 , BlendChannelAlpha = 0x08 , BlendChannelAll = BlendChannelRed | BlendChannelGreen | BlendChannelBlue | BlendChannelAlpha , BlendChannelForceDisabled = 0x10 }

## Public Member Functions
| HlmsBlendblock ()
void | calculateSeparateBlendMode ()
| Sets mSeparateBlend to true or false based on current settings.
bool | isAutoTransparent () const
bool | isForcedTransparent () const
bool | operator!= (const HlmsBlendblock &_r) const
bool | operator== (const HlmsBlendblock &_r) const
void | setBlendType (SceneBlendType blendType)
| Shortcut to set the blend factors to common blending operations.
void | setBlendType (SceneBlendType colour, SceneBlendType alpha)
| Shortcut to set the blend factors to common blending operations.
void | setForceTransparentRenderOrder (bool bForceTransparent)
| Sometimes you want to force the RenderQueue to render back to front even if the object isn't alpha blended (e.g.
Public Member Functions inherited from Ogre::BasicBlock
| BasicBlock (uint8 blockType)

## Public Attributes
bool | mAlphaToCoverageEnabled
uint8 | mBlendChannelMask
| Masks which colour channels will be writing to.
SceneBlendOperation | mBlendOperation
SceneBlendOperation | mBlendOperationAlpha
SceneBlendFactor | mDestBlendFactor
SceneBlendFactor | mDestBlendFactorAlpha
uint8 | mIsTransparent
| This value calculated by HlmsManager::getBlendblock mIsTransparent = 0 -> Not transparent mIsTransparent |= 1 -> Automatically determined as transparent mIsTransparent |= 2 -> Forced to be considered as transparent by RenderQueue for render order mIsTransparent = 3 -> Forced & also automatically determined as transparent.
bool | mSeparateBlend
| Used to determine if separate alpha blending should be used for color and alpha channels.
SceneBlendFactor | mSourceBlendFactor
SceneBlendFactor | mSourceBlendFactorAlpha
Public Attributes inherited from Ogre::BasicBlock
uint8 | mAllowGlobalDefaults
| When zero, HlmsManager cannot override the block's values with enforced global settings.
uint8 | mBlockType
uint16 | mId
| The mId is only valid while mRefCount > 0; which means mRsData may contain valid data, else it's null.
uint16 | mLifetimeId
| Except for HlmsSamplerblocks, mLifetimeId is valid throghout the entire life of HlmsManager.
uint16 | mRefCount
void * | mRsData
| Render-System specific data.

## Detailed Description

A blend block contains settings that rarely change, and thus are common to many materials.

The reasons this structure isn't joined with HlmsMacroblock is that:

- The D3D11 API makes this distinction (much higher API overhead if we change i.e. depth settings) due to D3D11_RASTERIZER_DESC.
- This block contains information of whether the material is transparent. Transparent materials are sorted differently than opaque ones. Up to 32 different blocks are allowed!

## Member Enumeration Documentation

## ◆ BlendChannelMasks

enum Ogre::HlmsBlendblock::BlendChannelMasks

Enumerator
BlendChannelRed |
BlendChannelGreen |
BlendChannelBlue |
BlendChannelAlpha |
BlendChannelAll |
BlendChannelForceDisabled | Setting mBlendChannelMask = 0 will skip all channels (i.e. only depth and stencil) But pixel shader may still run due to side effects (e.g. pixel discard/alpha testing UAV outputs). Some drivers may not optimize this case due to the amount of checks needed to see if the PS has side effects or not. When force-disabled, we will not set a pixel shader, thus you can be certain it's running as optimized as it can be. However beware if you rely on discard/alpha testing or any other side effect, it will not render correctly Note: BlendChannelForceDisabled will be ignored if any of the other flags are set

## Constructor & Destructor Documentation

## ◆ HlmsBlendblock()

Ogre::HlmsBlendblock::HlmsBlendblock | ( |  | ) |

Referenced by operator!=(), and operator==().

## Member Function Documentation

## ◆ calculateSeparateBlendMode()

void Ogre::HlmsBlendblock::calculateSeparateBlendMode | ( |  | ) |

Sets mSeparateBlend to true or false based on current settings.

## ◆ isAutoTransparent()

bool Ogre::HlmsBlendblock::isAutoTransparent | ( |  | ) | const
| inline

References mIsTransparent.

## ◆ isForcedTransparent()

bool Ogre::HlmsBlendblock::isForcedTransparent | ( |  | ) | const
| inline

References mIsTransparent.

## ◆ operator!=()

bool Ogre::HlmsBlendblock::operator!= | ( | const HlmsBlendblock & | _r | ) | const
| inline

References HlmsBlendblock(), Ogre::BasicBlock::mAllowGlobalDefaults, mAlphaToCoverageEnabled, mBlendChannelMask, mBlendOperation, mBlendOperationAlpha, mDestBlendFactor, mDestBlendFactorAlpha, mIsTransparent, mSeparateBlend, mSourceBlendFactor, and mSourceBlendFactorAlpha.

## ◆ operator==()

bool Ogre::HlmsBlendblock::operator== | ( | const HlmsBlendblock & | _r | ) | const
| inline

References HlmsBlendblock().

## ◆ setBlendType() [1/2]

void Ogre::HlmsBlendblock::setBlendType | ( | SceneBlendType | blendType | ) |

Shortcut to set the blend factors to common blending operations.

Sets both blend and alpha to the same value and mSeparateBlend is turned off.

## ◆ setBlendType() [2/2]

void Ogre::HlmsBlendblock::setBlendType | ( | SceneBlendType | colour,
|  | SceneBlendType | alpha )

Shortcut to set the blend factors to common blending operations.

Sets colour and alpha individually, turns mSeparateBlend on.

## ◆ setForceTransparentRenderOrder()

void Ogre::HlmsBlendblock::setForceTransparentRenderOrder | ( | bool | bForceTransparent | ) |

Sometimes you want to force the RenderQueue to render back to front even if the object isn't alpha blended (e.g.

you're rendering refractive materials)

Parameters

  bForceTransparent | True to always render back to front, like any transparent. False for default behavior (opaque objects are rendered front to back, alpha blended objects are rendered back to front)

## Member Data Documentation

## ◆ mAlphaToCoverageEnabled

bool Ogre::HlmsBlendblock::mAlphaToCoverageEnabled

Referenced by operator!=().

## ◆ mBlendChannelMask

uint8 Ogre::HlmsBlendblock::mBlendChannelMask

Masks which colour channels will be writing to.

Default: BlendChannelAll For some advanced effects, you may wish to turn off the writing of certain colour channels, or even all of the colour channels so that only the depth buffer is updated in a rendering pass (if depth writes are on; may be you want to only update the stencil buffer).

Referenced by operator!=().

## ◆ mBlendOperation

SceneBlendOperation Ogre::HlmsBlendblock::mBlendOperation

Referenced by operator!=().

## ◆ mBlendOperationAlpha

SceneBlendOperation Ogre::HlmsBlendblock::mBlendOperationAlpha

Referenced by operator!=().

## ◆ mDestBlendFactor

SceneBlendFactor Ogre::HlmsBlendblock::mDestBlendFactor

Referenced by operator!=().

## ◆ mDestBlendFactorAlpha

SceneBlendFactor Ogre::HlmsBlendblock::mDestBlendFactorAlpha

Referenced by operator!=().

## ◆ mIsTransparent

uint8 Ogre::HlmsBlendblock::mIsTransparent

This value calculated by HlmsManager::getBlendblock mIsTransparent = 0 -> Not transparent mIsTransparent |= 1 -> Automatically determined as transparent mIsTransparent |= 2 -> Forced to be considered as transparent by RenderQueue for render order mIsTransparent = 3 -> Forced & also automatically determined as transparent.

Referenced by isAutoTransparent(), isForcedTransparent(), and operator!=().

## ◆ mSeparateBlend

bool Ogre::HlmsBlendblock::mSeparateBlend

Used to determine if separate alpha blending should be used for color and alpha channels.

Referenced by operator!=().

## ◆ mSourceBlendFactor

SceneBlendFactor Ogre::HlmsBlendblock::mSourceBlendFactor

Referenced by operator!=().

## ◆ mSourceBlendFactorAlpha

SceneBlendFactor Ogre::HlmsBlendblock::mSourceBlendFactorAlpha

Referenced by operator!=().

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

- OgreHlmsDatablock.h