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
qssgrendereffect_p.h
Go to the documentation of this file.
1
// Copyright (C) 2020 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
QSSG_RENDER_EFFECT_H
7
#
define
QSSG_RENDER_EFFECT_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
/
qssgrendernode_p
.
h
>
22
23
#
include
<
QtQuick3DRuntimeRender
/
private
/
qssgrenderimage_p
.
h
>
24
#
include
<
QtQuick3DRuntimeRender
/
private
/
qssgrendershaderlibrarymanager_p
.
h
>
25
26
#
include
<
QtCore
/
QVariant
>
27
28
QT_BEGIN_NAMESPACE
29
30
struct
QSSGRenderLayer;
31
class
QSSGCommand;
32
class
QSSGRenderContextInterface
;
33
34
struct
Q_QUICK3DRUNTIMERENDER_EXPORT
QSSGRenderEffect
:
public
QSSGRenderGraphObject
35
{
36
QSSGRenderEffect();
37
~QSSGRenderEffect();
38
39
void
finalizeShaders(
const
QSSGRenderLayer &layer, QSSGRenderContextInterface *renderContext);
40
41
enum
class
Flags : quint8
42
{
43
Dirty = 0x1u,
44
UsesDepthTexture = 0x2u,
45
UsesProjectionMatrix = 0x4u,
46
UsesInverseProjectionMatrix = 0x8u,
47
UsesViewMatrix = 0x10u,
48
UsesNormalTexture = 0x20u,
49
UsesMotionVectorTexture = 0x40u
50
};
51
using
FlagT = std::underlying_type_t<Flags>;
52
53
struct
TextureProperty
54
{
55
QSSGRenderImage *texImage =
nullptr
;
56
QByteArray name;
57
QSSGRenderShaderValue::Type shaderDataType;
58
QSSGRenderTextureFilterOp minFilterType = QSSGRenderTextureFilterOp::Linear;
59
QSSGRenderTextureFilterOp magFilterType = QSSGRenderTextureFilterOp::Linear;
60
QSSGRenderTextureFilterOp mipFilterType = QSSGRenderTextureFilterOp::Linear;
61
QSSGRenderTextureCoordOp horizontalClampType = QSSGRenderTextureCoordOp::ClampToEdge;
62
QSSGRenderTextureCoordOp verticalClampType = QSSGRenderTextureCoordOp::ClampToEdge;
63
QSSGRenderTextureCoordOp zClampType = QSSGRenderTextureCoordOp::ClampToEdge;
64
QSSGRenderTextureTypeValue usageType;
65
};
66
67
QVector<TextureProperty> textureProperties;
68
using
Property = QSSGBaseTypeProperty;
69
using
PropertyUniformsList = QList<Property>;
70
71
PropertyUniformsList properties;
72
73
QSSGRenderEffect *m_nextEffect =
nullptr
;
74
75
void
markDirty() { setFlag(QSSGRenderEffect::Flags::Dirty); }
76
void
clearDirty() { setFlag(QSSGRenderEffect::Flags::Dirty,
false
); }
77
[[nodiscard]]
bool
isDirty()
const
{
return
testFlag(QSSGRenderEffect::Flags::Dirty); }
78
79
void
setFlag(QSSGRenderEffect::Flags flag,
bool
enabled =
true
);
80
[[nodiscard]]
bool
testFlag(QSSGRenderEffect::Flags flag)
const
{
return
(flags & FlagT(flag)) != 0; }
81
82
QVector<QSSGCommand *> commands;
// all owned, these are copies of the gui thread commands
83
84
void
resetCommands();
85
86
const
char
*className =
nullptr
;
87
FlagT flags = FlagT(Flags::Dirty);
88
bool
incompleteBuildTimeObject =
false
;
// Used by the shadergen tool
89
QSSGRenderTextureFormat::Format outputFormat = QSSGRenderTextureFormat::Unknown;
90
91
struct
ShaderPrepPassData
92
{
93
QByteArray shaderPathKeyPrefix;
// to be completed in finalizeShaders
94
QByteArray vertexShaderCode[2];
// without main(), to be completed in finalizeShaders
95
QByteArray fragmentShaderCode[2];
// same here
96
QSSGCustomShaderMetaData vertexMetaData[2];
97
QSSGCustomShaderMetaData fragmentMetaData[2];
98
int
bindShaderCmdIndex = 0;
99
};
100
101
struct
{
102
bool
valid =
false
;
103
QVector<ShaderPrepPassData> passes;
104
} shaderPrepData;
105
106
QString debugObjectName;
107
};
108
109
QT_END_NAMESPACE
110
111
#
endif
QSSGRenderer::QSSGRenderContextInterface
friend class QSSGRenderContextInterface
Definition
qssgrenderer_p.h:105
QSSGRenderEffect
Definition
qssgrendereffect_p.h:35
qtquick3d
src
runtimerender
graphobjects
qssgrendereffect_p.h
Generated on
for Qt by
1.18.0