Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
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
25QT_BEGIN_NAMESPACE
26
27class QSSGCommand;
28
29class Q_QUICK3DRUNTIMERENDER_EXPORT QSSGRenderUserPass : public QSSGRenderGraphObject
30{
31public:
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 DirtyFlag : quint8
46 {
47 ShaderDirty = 0x1
48 };
49 using FlagT = std::underlying_type_t<DirtyFlag>;
50
51 enum class State : quint8
52 {
53 None,
54 Ready,
55 Error,
56 };
57
58 static constexpr DirtyFlag DirtyMask { std::numeric_limits<FlagT>::max() };
59
60 QSSGRenderUserPass();
61 ~QSSGRenderUserPass();
62
63 bool isDirty(DirtyFlag flag = DirtyMask) const;
64 void markDirty(DirtyFlag flag);
65 void clearDirty(DirtyFlag flag);
66
67 bool isReady() const { return (m_state == State::Ready); }
68
69 void finalizeShaders(const QSSGRenderContextInterface &ctx);
70 void setDependencyIndex(quint32 index);
71
72 QVector<QSSGCommand *> commands;
73
74 QString key;
75 QColor clearColor = Qt::black;
76 QRhiTextureRenderTarget::Flags renderTargetFlags = {};
77
78 // Material Mode
79 MaterialModes materialMode = OriginalMaterial;
80 QSSGRenderGraphObject *overrideMaterial = nullptr;
81 QSSGUserShaderAugmentation shaderAugmentation;
82 QRhiDepthStencilClearValue depthStencilClearValue = { };
83 PassModes passMode = UserPass;
84
85 FlagT m_dirtyFlags = 0;
86 State m_state = State::None;
87 quint32 m_dependencyIndex = 0;
88
89 void resetCommands();
90};
91
92using QSSGRenderUserPassPtr = std::shared_ptr<QSSGRenderUserPass>;
93
94QT_END_NAMESPACE
95
96#endif // QSSGRENDERUSERPASS_P_H
Combined button and popup list for selecting options.
QByteArray replaceAugmentMacros(const QByteArray &shaderCode)