Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QSSGRenderLayer Struct Reference

#include <qssgrenderlayer_p.h>

+ Inheritance diagram for QSSGRenderLayer:
+ Collaboration diagram for QSSGRenderLayer:

Classes

struct  FogOptions
 
struct  LightProbeSettings
 

Public Types

enum class  AAMode : quint8 { NoAA = 0 , SSAA , MSAA , ProgressiveAA }
 
enum class  AAQuality : quint8 { Normal = 2 , High = 4 , VeryHigh = 8 }
 
enum class  HorizontalField : quint8 { LeftWidth = 0 , LeftRight , WidthRight }
 
enum class  VerticalField : quint8 { TopHeight = 0 , TopBottom , HeightBottom }
 
enum class  UnitType : quint8 { Percent = 0 , Pixels }
 
enum class  Background : quint8 {
  Transparent = 0 , Unspecified , Color , SkyBox ,
  SkyBoxCubeMap
}
 
enum class  TonemapMode : quint8 {
  None = 0 , Linear , Aces , HejlDawson ,
  Filmic , Custom
}
 
enum class  LayerFlag { EnableDepthTest = 0x1 , EnableDepthPrePass = 0x2 , RenderToTarget = 0x3 }
 
enum class  MaterialDebugMode : quint8 {
  None = 0 , BaseColor = 1 , Roughness , Metalness ,
  Diffuse , Specular , ShadowOcclusion , Emission ,
  AmbientOcclusion , Normal , Tangent , Binormal ,
  F0
}
 
enum class  RenderExtensionStage { Underlay , Overlay , Count }
 
- Public Types inherited from QSSGRenderNode
enum class  LocalState : quint8 { Active = 1 << 0 , Pickable = 1 << 1 }
 
enum class  GlobalState : quint8 { Active = 1 << 2 , Pickable = 1 << 3 }
 
enum class  DirtyFlag : quint32 {
  TransformDirty = 1 << 4 , OpacityDirty = 1 << 5 , ActiveDirty = 1 << 6 , PickableDirty = 1 << 7 ,
  SubNodeDirty = 1 << 8 , GlobalValuesDirty = TransformDirty | OpacityDirty | ActiveDirty | PickableDirty , DirtyMask = GlobalValuesDirty | SubNodeDirty
}
 
using FlagT = std::underlying_type_t<DirtyFlag>
 
using ChildList = QSSGInvasiveLinkedList<QSSGRenderNode, &QSSGRenderNode::previousSibling, &QSSGRenderNode::nextSibling>
 
- Public Types inherited from QSSGRenderGraphObject
enum  BaseType : quint32 {
  Node = 0x1000 , Light = 0x2000 , Camera = 0x4000 , Renderable = 0x8000 ,
  Resource = 0x10000 , Material = 0x20000 , Texture = 0x40000 , Extension = 0x80000 ,
  User = 0x80000000
}
 
enum class  Type : quint32 {
  Unknown = 0 , Node = BaseType::Node , Layer , Joint ,
  Skeleton , ImportScene , ReflectionProbe , DirectionalLight = BaseType::Light | BaseType::Node ,
  PointLight , SpotLight , OrthographicCamera = BaseType::Camera | BaseType::Node , PerspectiveCamera ,
  CustomFrustumCamera , CustomCamera , Model = BaseType::Renderable | BaseType::Node , Item2D ,
  Particles , SceneEnvironment = BaseType::Resource , Effect , Geometry ,
  TextureData , MorphTarget , ModelInstance , ModelBlendParticle ,
  ResourceLoader , DefaultMaterial = BaseType::Material | BaseType::Resource , PrincipledMaterial , CustomMaterial ,
  SpecularGlossyMaterial , Skin , Image2D = BaseType::Texture | BaseType::Resource , ImageCube ,
  RenderExtension = BaseType::Extension
}
 
enum class  Flags : quint32 { HasGraphicsResources = 0x1 }
 
using TypeT = std::underlying_type_t<Type>
 
using FlagT = std::underlying_type_t<Flags>
 

Public Member Functions

constexpr bool ssaoEnabled () const
 
 QSSGRenderLayer ()
 
 ~QSSGRenderLayer ()
 
void setProbeOrientation (const QVector3D &angles)
 
void addEffect (QSSGRenderEffect &inEffect)
 
bool hasEffect (QSSGRenderEffect *inEffect) const
 
void setImportScene (QSSGRenderNode &rootNode)
 
void removeImportScene (QSSGRenderNode &rootNode)
 
- Public Member Functions inherited from QSSGRenderNode
 QSSGRenderNode ()
 
 QSSGRenderNode (Type type)
 
 ~QSSGRenderNode () override
 
void markDirty (DirtyFlag dirtyFlag)
 
void clearDirty (DirtyFlag dirtyFlag)
 
constexpr bool isDirty (DirtyFlag dirtyFlag=DirtyFlag::DirtyMask) const
 
void setState (LocalState state, bool on=true)
 
constexpr bool getLocalState (LocalState stateFlag) const
 
constexpr bool getGlobalState (GlobalState stateFlag) const
 
void addChild (QSSGRenderNode &inChild)
 
void removeChild (QSSGRenderNode &inChild)
 
void removeFromGraph ()
 
bool calculateGlobalVariables ()
 
QSSGBounds3 getBounds (QSSGBufferManager &inManager, bool inIncludeChildren=true) const
 
QSSGBounds3 getChildBounds (QSSGBufferManager &inManager) const
 
QVector3D getGlobalPos () const
 
QVector3D getGlobalPivot () const
 
QVector3D getDirection () const
 
QVector3D getScalingCorrectDirection () const
 
void calculateMVPAndNormalMatrix (const QMatrix4x4 &inViewProjection, QMatrix4x4 &outMVP, QMatrix3x3 &outNormalMatrix) const
 
QMatrix3x3 calculateNormalMatrix () const
 
- Public Member Functions inherited from QSSGRenderGraphObject
bool hasGraphicsResources () const noexcept
 
virtual Q_QUICK3D_PROFILE_ID_ ~QSSGRenderGraphObject ()
 

Public Attributes

QSSGRenderEffectfirstEffect
 
QSSGLayerRenderDatarenderData = nullptr
 
QList< QSSGRenderExtension * > renderExtensions [size_t(RenderExtensionStage::Count)]
 
QSSGRenderLayer::AAMode antialiasingMode
 
QSSGRenderLayer::AAQuality antialiasingQuality
 
QSSGRenderLayer::Background background
 
QVector3D clearColor
 
float aoStrength = 0.0f
 
float aoDistance = 5.0f
 
float aoSoftness = 50.0f
 
float aoBias = 0.0f
 
qint32 aoSamplerate = 2
 
bool aoDither = false
 
bool aoEnabled = false
 
QSSGRenderImagelightProbe { nullptr }
 
struct QSSGRenderLayer::LightProbeSettings lightProbeSettings
 
QSSGRenderImageskyBoxCubeMap = nullptr
 
bool temporalAAEnabled
 
float temporalAAStrength
 
bool ssaaEnabled
 
float ssaaMultiplier
 
bool specularAAEnabled
 
bool temporalAAIsActive
 
bool progressiveAAIsActive
 
uint tempAAPassIndex
 
uint progAAPassIndex
 
QVarLengthArray< QSSGRenderCamera *, 2 > explicitCameras
 
QVarLengthArray< QSSGRenderCamera *, 2 > renderedCameras
 
TonemapMode tonemapMode
 
LayerFlags layerFlags
 
QRhiShaderResourceBindingsskyBoxSrb = nullptr
 
QVarLengthArray< QRhiShaderResourceBindings *, 4 > item2DSrbs
 
bool skyBoxIsRgbe8 = false
 
float skyboxBlurAmount = 0.0f
 
bool gridEnabled = false
 
float gridScale = 1.0f
 
quint32 gridFlags = 0
 
QRhiShaderResourceBindingsgridSrb = nullptr
 
QSSGLightmapperOptions lmOptions
 
QRect scissorRect
 
struct QSSGRenderLayer::FogOptions fog
 
QVector< QSSGRenderGraphObject * > resourceLoaders
 
MaterialDebugMode debugMode = MaterialDebugMode::None
 
bool wireframeMode = false
 
QSSGRenderNodeimportSceneNode = nullptr
 
- Public Attributes inherited from QSSGRenderNode
QVector3D pivot
 
int staticFlags = 0
 
float localOpacity = 1.0f
 
FlagT flags { FlagT(DirtyFlag::GlobalValuesDirty) | FlagT(LocalState::Active) }
 
QMatrix4x4 localTransform
 
QMatrix4x4 globalTransform
 
QMatrix4x4 localInstanceTransform
 
QMatrix4x4 globalInstanceTransform
 
float globalOpacity = 1.0f
 
QSSGRenderNodeparent = nullptr
 
QSSGRenderNodenextSibling = nullptr
 
QSSGRenderNodepreviousSibling = nullptr
 
QSSGRenderNodeinstanceRoot = nullptr
 
quint32 dfsIndex = 0
 
ChildList children
 
QString debugObjectName
 
- Public Attributes inherited from QSSGRenderGraphObject
const Type type
 
FlagT flags { 0 }
 

Static Public Attributes

static size_t constexpr TonemapModeCount = 6
 
- Static Public Attributes inherited from QSSGRenderNode
static constexpr QVector3D initScale { 1.0f, 1.0f, 1.0f }
 

Additional Inherited Members

- Static Public Member Functions inherited from QSSGRenderNode
static QMatrix4x4 calculateTransformMatrix (QVector3D position, QVector3D scale, QVector3D pivot, QQuaternion rotation)
 
static void calculateMVPAndNormalMatrix (const QMatrix4x4 &globalTransfor, const QMatrix4x4 &inViewProjection, QMatrix4x4 &outMVP, QMatrix3x3 &outNormalMatrix)
 
static float signedSquared (float val)
 
- Static Public Member Functions inherited from QSSGRenderGraphObject
static constexpr bool isNodeType (Type type) noexcept
 
static constexpr bool isLight (Type type) noexcept
 
static constexpr bool isCamera (Type type) noexcept
 
static constexpr bool isMaterial (Type type) noexcept
 
static constexpr bool isTexture (Type type) noexcept
 
static constexpr bool isRenderable (Type type) noexcept
 
static constexpr bool isResource (Type type) noexcept
 
static constexpr bool isExtension (Type type) noexcept
 
static constexpr bool isUserType (Type type) noexcept
 
- Protected Member Functions inherited from QSSGRenderGraphObject
 QSSGRenderGraphObject (QSSGRenderGraphObject::Type inType)
 
 QSSGRenderGraphObject (QSSGRenderGraphObject::Type inType, FlagT inFlags)
 

Detailed Description

Definition at line 41 of file qssgrenderlayer_p.h.

Member Enumeration Documentation

◆ AAMode

enum class QSSGRenderLayer::AAMode : quint8
strong
Enumerator
NoAA 
SSAA 
MSAA 
ProgressiveAA 

Definition at line 43 of file qssgrenderlayer_p.h.

◆ AAQuality

enum class QSSGRenderLayer::AAQuality : quint8
strong
Enumerator
Normal 
High 
VeryHigh 

Definition at line 51 of file qssgrenderlayer_p.h.

◆ Background

enum class QSSGRenderLayer::Background : quint8
strong
Enumerator
Transparent 
Unspecified 
Color 
SkyBox 
SkyBoxCubeMap 

Definition at line 78 of file qssgrenderlayer_p.h.

◆ HorizontalField

Enumerator
LeftWidth 
LeftRight 
WidthRight 

Definition at line 58 of file qssgrenderlayer_p.h.

◆ LayerFlag

enum class QSSGRenderLayer::LayerFlag
strong
Enumerator
EnableDepthTest 
EnableDepthPrePass 

True when we render a depth pass before.

RenderToTarget 

Does this layer render to the normal render target,.

Definition at line 98 of file qssgrenderlayer_p.h.

◆ MaterialDebugMode

Enumerator
None 
BaseColor 
Roughness 
Metalness 
Diffuse 
Specular 
ShadowOcclusion 
Emission 
AmbientOcclusion 
Normal 
Tangent 
Binormal 
F0 

Definition at line 106 of file qssgrenderlayer_p.h.

◆ RenderExtensionStage

Enumerator
Underlay 
Overlay 
Count 

Definition at line 126 of file qssgrenderlayer_p.h.

◆ TonemapMode

enum class QSSGRenderLayer::TonemapMode : quint8
strong
Enumerator
None 
Linear 
Aces 
HejlDawson 
Filmic 
Custom 

Definition at line 87 of file qssgrenderlayer_p.h.

◆ UnitType

enum class QSSGRenderLayer::UnitType : quint8
strong
Enumerator
Percent 
Pixels 

Definition at line 72 of file qssgrenderlayer_p.h.

◆ VerticalField

Enumerator
TopHeight 
TopBottom 
HeightBottom 

Definition at line 65 of file qssgrenderlayer_p.h.

Constructor & Destructor Documentation

◆ QSSGRenderLayer()

QT_BEGIN_NAMESPACE QSSGRenderLayer::QSSGRenderLayer ( )

Definition at line 12 of file qssgrenderlayer.cpp.

References QSSGRenderNode::Active.

◆ ~QSSGRenderLayer()

QSSGRenderLayer::~QSSGRenderLayer ( )

Definition at line 28 of file qssgrenderlayer.cpp.

References importSceneNode, and renderData.

Member Function Documentation

◆ addEffect()

void QSSGRenderLayer::addEffect ( QSSGRenderEffect & inEffect)

Definition at line 43 of file qssgrenderlayer.cpp.

References firstEffect.

◆ hasEffect()

bool QSSGRenderLayer::hasEffect ( QSSGRenderEffect * inEffect) const

Definition at line 50 of file qssgrenderlayer.cpp.

References firstEffect, and QSSGRenderEffect::m_nextEffect.

◆ removeImportScene()

void QSSGRenderLayer::removeImportScene ( QSSGRenderNode & rootNode)

Definition at line 78 of file qssgrenderlayer.cpp.

References QSSGInvasiveLinkedList< T, Previous, Next >::back(), QSSGRenderNode::children, QSSGInvasiveLinkedList< T, Previous, Next >::clear(), importSceneNode, and QSSGInvasiveLinkedList< T, Previous, Next >::isEmpty().

Referenced by QQuick3DSceneRenderer::synchronize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setImportScene()

void QSSGRenderLayer::setImportScene ( QSSGRenderNode & rootNode)

Definition at line 59 of file qssgrenderlayer.cpp.

References QSSGRenderNode::QSSGRenderNode(), QSSGRenderNode::children, QSSGInvasiveLinkedList< T, Previous, Next >::clear(), importSceneNode, QSSGInvasiveLinkedList< T, Previous, Next >::push_back(), and Q_ASSERT.

Referenced by QQuick3DSceneRenderer::synchronize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setProbeOrientation()

void QSSGRenderLayer::setProbeOrientation ( const QVector3D & angles)

Definition at line 35 of file qssgrenderlayer.cpp.

References lightProbeSettings.

◆ ssaoEnabled()

constexpr bool QSSGRenderLayer::ssaoEnabled ( ) const
inlineconstexpr

Definition at line 144 of file qssgrenderlayer_p.h.

Member Data Documentation

◆ antialiasingMode

QSSGRenderLayer::AAMode QSSGRenderLayer::antialiasingMode

◆ antialiasingQuality

QSSGRenderLayer::AAQuality QSSGRenderLayer::antialiasingQuality

◆ aoBias

float QSSGRenderLayer::aoBias = 0.0f

Definition at line 139 of file qssgrenderlayer_p.h.

◆ aoDistance

float QSSGRenderLayer::aoDistance = 5.0f

Definition at line 137 of file qssgrenderlayer_p.h.

◆ aoDither

bool QSSGRenderLayer::aoDither = false

Definition at line 141 of file qssgrenderlayer_p.h.

◆ aoEnabled

bool QSSGRenderLayer::aoEnabled = false

Definition at line 142 of file qssgrenderlayer_p.h.

◆ aoSamplerate

qint32 QSSGRenderLayer::aoSamplerate = 2

Definition at line 140 of file qssgrenderlayer_p.h.

◆ aoSoftness

float QSSGRenderLayer::aoSoftness = 50.0f

Definition at line 138 of file qssgrenderlayer_p.h.

◆ aoStrength

float QSSGRenderLayer::aoStrength = 0.0f

Definition at line 136 of file qssgrenderlayer_p.h.

◆ background

QSSGRenderLayer::Background QSSGRenderLayer::background

Definition at line 132 of file qssgrenderlayer_p.h.

◆ clearColor

QVector3D QSSGRenderLayer::clearColor

Definition at line 133 of file qssgrenderlayer_p.h.

◆ debugMode

MaterialDebugMode QSSGRenderLayer::debugMode = MaterialDebugMode::None

Definition at line 220 of file qssgrenderlayer_p.h.

◆ explicitCameras

QVarLengthArray<QSSGRenderCamera *, 2> QSSGRenderLayer::explicitCameras

Definition at line 170 of file qssgrenderlayer_p.h.

◆ firstEffect

◆ fog

struct QSSGRenderLayer::FogOptions QSSGRenderLayer::fog

◆ gridEnabled

bool QSSGRenderLayer::gridEnabled = false

Definition at line 190 of file qssgrenderlayer_p.h.

◆ gridFlags

quint32 QSSGRenderLayer::gridFlags = 0

Definition at line 192 of file qssgrenderlayer_p.h.

◆ gridScale

float QSSGRenderLayer::gridScale = 1.0f

Definition at line 191 of file qssgrenderlayer_p.h.

◆ gridSrb

QRhiShaderResourceBindings* QSSGRenderLayer::gridSrb = nullptr

Definition at line 193 of file qssgrenderlayer_p.h.

◆ importSceneNode

QSSGRenderNode* QSSGRenderLayer::importSceneNode = nullptr

Definition at line 232 of file qssgrenderlayer_p.h.

Referenced by ~QSSGRenderLayer(), removeImportScene(), and setImportScene().

◆ item2DSrbs

QVarLengthArray<QRhiShaderResourceBindings *, 4> QSSGRenderLayer::item2DSrbs

Definition at line 183 of file qssgrenderlayer_p.h.

◆ layerFlags

LayerFlags QSSGRenderLayer::layerFlags
Initial value:
@ EnableDepthPrePass
True when we render a depth pass before.
@ RenderToTarget
Does this layer render to the normal render target,.

Definition at line 177 of file qssgrenderlayer_p.h.

◆ lightProbe

QSSGRenderImage* QSSGRenderLayer::lightProbe { nullptr }

Definition at line 147 of file qssgrenderlayer_p.h.

Referenced by QQuick3DSceneRenderer::renderToRhiTexture().

◆ lightProbeSettings

struct QSSGRenderLayer::LightProbeSettings QSSGRenderLayer::lightProbeSettings

Referenced by setProbeOrientation().

◆ lmOptions

QSSGLightmapperOptions QSSGRenderLayer::lmOptions

Definition at line 196 of file qssgrenderlayer_p.h.

◆ progAAPassIndex

uint QSSGRenderLayer::progAAPassIndex

◆ progressiveAAIsActive

bool QSSGRenderLayer::progressiveAAIsActive

Definition at line 165 of file qssgrenderlayer_p.h.

Referenced by QQuick3DSceneRenderer::renderToRhiTexture().

◆ renderData

◆ renderedCameras

◆ renderExtensions

QList<QSSGRenderExtension *> QSSGRenderLayer::renderExtensions[size_t(RenderExtensionStage::Count)]

Definition at line 127 of file qssgrenderlayer_p.h.

Referenced by QQuick3DSceneRenderer::synchronize().

◆ resourceLoaders

QVector<QSSGRenderGraphObject *> QSSGRenderLayer::resourceLoaders

Definition at line 218 of file qssgrenderlayer_p.h.

◆ scissorRect

QRect QSSGRenderLayer::scissorRect

Definition at line 199 of file qssgrenderlayer_p.h.

Referenced by QQuick3DSceneRenderer::synchronize().

◆ skyboxBlurAmount

float QSSGRenderLayer::skyboxBlurAmount = 0.0f

Definition at line 187 of file qssgrenderlayer_p.h.

◆ skyBoxCubeMap

QSSGRenderImage* QSSGRenderLayer::skyBoxCubeMap = nullptr

Definition at line 155 of file qssgrenderlayer_p.h.

Referenced by QQuick3DSceneRenderer::renderToRhiTexture().

◆ skyBoxIsRgbe8

bool QSSGRenderLayer::skyBoxIsRgbe8 = false

Definition at line 184 of file qssgrenderlayer_p.h.

◆ skyBoxSrb

QRhiShaderResourceBindings* QSSGRenderLayer::skyBoxSrb = nullptr

Definition at line 182 of file qssgrenderlayer_p.h.

◆ specularAAEnabled

bool QSSGRenderLayer::specularAAEnabled

Definition at line 161 of file qssgrenderlayer_p.h.

◆ ssaaEnabled

bool QSSGRenderLayer::ssaaEnabled

Definition at line 159 of file qssgrenderlayer_p.h.

◆ ssaaMultiplier

float QSSGRenderLayer::ssaaMultiplier

Definition at line 160 of file qssgrenderlayer_p.h.

◆ tempAAPassIndex

uint QSSGRenderLayer::tempAAPassIndex

◆ temporalAAEnabled

bool QSSGRenderLayer::temporalAAEnabled

Definition at line 157 of file qssgrenderlayer_p.h.

Referenced by QQuick3DSceneRenderer::synchronize().

◆ temporalAAIsActive

bool QSSGRenderLayer::temporalAAIsActive

Definition at line 164 of file qssgrenderlayer_p.h.

Referenced by QQuick3DSceneRenderer::renderToRhiTexture().

◆ temporalAAStrength

float QSSGRenderLayer::temporalAAStrength

Definition at line 158 of file qssgrenderlayer_p.h.

◆ tonemapMode

TonemapMode QSSGRenderLayer::tonemapMode

Definition at line 175 of file qssgrenderlayer_p.h.

◆ TonemapModeCount

size_t constexpr QSSGRenderLayer::TonemapModeCount = 6
staticconstexpr

Definition at line 96 of file qssgrenderlayer_p.h.

Referenced by getSkyboxIndex().

◆ wireframeMode

bool QSSGRenderLayer::wireframeMode = false

Definition at line 222 of file qssgrenderlayer_p.h.


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