Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qssgrenderuserpass_p.h
Go to the documentation of this file.
1
// Copyright (C) 2025 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
5
6
#
ifndef
QSSGRENDERUSERPASS_P_H
7
#
define
QSSGRENDERUSERPASS_P_H
8
9
//
10
// W A R N I N G
11
// -------------
12
//
13
// This file is not part of the Qt API. It exists purely as an
14
// implementation detail. This header file may change from version to
15
// version without notice, or even be removed.
16
//
17
// We mean it.
18
//
19
20
#
include
<
QtQuick3DRuntimeRender
/
private
/
qssgrendergraphobject_p
.
h
>
21
#
include
<
QtQuick3DRuntimeRender
/
private
/
qssgrenderimage_p
.
h
>
22
23
#
include
<
QtCore
/
QVariant
>
24
25
QT_BEGIN_NAMESPACE
26
27
class
QSSGCommand;
28
29
class
Q_QUICK3DRUNTIMERENDER_EXPORT
QSSGRenderUserPass
:
public
QSSGRenderGraphObject
30
{
31
public
:
32
enum
MaterialModes {
33
OriginalMaterial,
34
AugmentMaterial,
35
OverrideMaterial
36
};
37
38
enum
PassModes {
39
UserPass,
40
SkyboxPass,
41
Item2DPass,
42
InfiniteGridPass
43
};
44
45
enum
class
Role : quint8 {
46
TopLevel,
47
SubPass
48
};
49
50
enum
class
DirtyFlag : quint8
51
{
52
ShaderDirty = 0x1
53
};
54
using
FlagT = std::underlying_type_t<DirtyFlag>;
55
56
enum
class
State : quint8
57
{
58
None,
59
Ready,
60
Error,
61
};
62
63
static
constexpr
DirtyFlag DirtyMask { std::numeric_limits<FlagT>::max() };
64
65
QSSGRenderUserPass();
66
~QSSGRenderUserPass();
67
68
bool
isDirty(DirtyFlag flag = DirtyMask)
const
;
69
void
markDirty(DirtyFlag flag);
70
void
clearDirty(DirtyFlag flag);
71
72
bool
isReady()
const
{
return
(m_state == State::Ready); }
73
74
void
finalizeShaders(
const
QSSGRenderContextInterface &ctx);
75
76
// Replaces the augment macros (e.g. BASE_COLOR) in \a shaderCode in-place with their
77
// built-in variable names, setting the corresponding feature flags on \a augmentation.
78
// Exposed for testing; normally called via finalizeShaders().
79
static
void
replaceAugmentMacros(QByteArray &shaderCode, QSSGUserShaderAugmentation &augmentation);
80
81
QVector<QSSGCommand *> commands;
82
83
QString key;
84
QColor clearColor = Qt::black;
85
QRhiTextureRenderTarget::Flags renderTargetFlags = {};
86
87
// Material Mode
88
MaterialModes materialMode = OriginalMaterial;
89
QSSGRenderGraphObject *overrideMaterial =
nullptr
;
90
QSSGUserShaderAugmentation shaderAugmentation;
91
QRhiDepthStencilClearValue depthStencilClearValue = { };
92
PassModes passMode = UserPass;
93
Role role = Role::TopLevel;
94
95
FlagT m_dirtyFlags = 0;
96
State m_state = State::None;
97
// Number of RenderPass ancestors of the frontend item. Deeper-nested passes
98
// render first ("children before parents"), so a pass declared inside its
99
// consumer renders before it. Derived at sync when the scene manager's pass
100
// set is dirty.
101
quint32 m_nestingDepth = 0;
102
// Registration order in the scene manager's userRenderPasses list. Used as a
103
// stable tiebreak when ordering scheduled passes with equal nesting depth,
104
// so the render order does not depend on when a provider scheduled a pass.
105
quint32 m_declarationOrder = 0;
106
107
void
resetCommands();
108
};
109
110
using
QSSGRenderUserPassPtr = std::shared_ptr<QSSGRenderUserPass>;
111
112
QT_END_NAMESPACE
113
114
#
endif
// QSSGRENDERUSERPASS_P_H
QSSGRenderUserPass
Definition
qssgrenderuserpass_p.h:30
QT_BEGIN_NAMESPACE::augmentMacroReplacement
constexpr QByteArrayView augmentMacroReplacement(AugmentMacro macro)
Definition
qssgrenderuserpass.cpp:93
QT_BEGIN_NAMESPACE::augmentMacroPairs
static constexpr MacroPair augmentMacroPairs[]
Definition
qssgrenderuserpass.cpp:74
QT_BEGIN_NAMESPACE::featureForMacro
static constexpr QSSGUserShaderAugmentation::FeatureFlags featureForMacro(AugmentMacro macro)
Definition
qssgrenderuserpass.cpp:36
QT_BEGIN_NAMESPACE::AugmentMacro
AugmentMacro
Definition
qssgrenderuserpass.cpp:22
QT_BEGIN_NAMESPACE::AugmentMacro::F90
@ F90
Definition
qssgrenderuserpass.cpp:33
QT_BEGIN_NAMESPACE::AugmentMacro::METALNESS
@ METALNESS
Definition
qssgrenderuserpass.cpp:25
QT_BEGIN_NAMESPACE::AugmentMacro::SPECULAR_LIGHT
@ SPECULAR_LIGHT
Definition
qssgrenderuserpass.cpp:27
QT_BEGIN_NAMESPACE::AugmentMacro::DIFFUSE_LIGHT
@ DIFFUSE_LIGHT
Definition
qssgrenderuserpass.cpp:26
QT_BEGIN_NAMESPACE::AugmentMacro::BASE_COLOR
@ BASE_COLOR
Definition
qssgrenderuserpass.cpp:23
QT_BEGIN_NAMESPACE::AugmentMacro::ROUGHNESS
@ ROUGHNESS
Definition
qssgrenderuserpass.cpp:24
QT_BEGIN_NAMESPACE::AugmentMacro::WORLD_BINORMAL
@ WORLD_BINORMAL
Definition
qssgrenderuserpass.cpp:31
QT_BEGIN_NAMESPACE::AugmentMacro::EMISSIVE_LIGHT
@ EMISSIVE_LIGHT
Definition
qssgrenderuserpass.cpp:28
QT_BEGIN_NAMESPACE::AugmentMacro::WORLD_NORMAL
@ WORLD_NORMAL
Definition
qssgrenderuserpass.cpp:29
QT_BEGIN_NAMESPACE::AugmentMacro::WORLD_TANGENT
@ WORLD_TANGENT
Definition
qssgrenderuserpass.cpp:30
QT_BEGIN_NAMESPACE::AugmentMacro::F0
@ F0
Definition
qssgrenderuserpass.cpp:32
QT_BEGIN_NAMESPACE::augmentMacroName
constexpr QByteArrayView augmentMacroName(AugmentMacro macro)
Definition
qssgrenderuserpass.cpp:88
QT_BEGIN_NAMESPACE::QSSGMaxReplacementLength
constexpr size_t QSSGMaxReplacementLength
Definition
qssgrenderuserpass.cpp:67
QT_BEGIN_NAMESPACE::QSSGMaxMacroLength
constexpr size_t QSSGMaxMacroLength
Definition
qssgrenderuserpass.cpp:66
Q_STATIC_LOGGING_CATEGORY
QT_BEGIN_NAMESPACE Q_STATIC_LOGGING_CATEGORY(lcSynthesizedIterableAccess, "qt.iterable.synthesized", QtWarningMsg)
QT_BEGIN_NAMESPACE::MacroPair
Definition
qssgrenderuserpass.cpp:69
QT_BEGIN_NAMESPACE::MacroPair::replacement
const char replacement[QSSGMaxReplacementLength]
Definition
qssgrenderuserpass.cpp:71
QT_BEGIN_NAMESPACE::MacroPair::macroName
const char macroName[QSSGMaxMacroLength]
Definition
qssgrenderuserpass.cpp:70
qtquick3d
src
runtimerender
graphobjects
qssgrenderuserpass_p.h
Generated on
for Qt by
1.18.0