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
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
4
#ifndef QSSG_RENDER_EFFECT_H
5
#define QSSG_RENDER_EFFECT_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists purely as an
12
// implementation detail. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
18
#include <QtQuick3DRuntimeRender/private/qssgrendergraphobject_p.h>
19
#include <QtQuick3DRuntimeRender/private/qssgrendernode_p.h>
20
21
#include <QtQuick3DRuntimeRender/private/qssgrenderimage_p.h>
22
#include <QtQuick3DRuntimeRender/private/qssgrendershaderlibrarymanager_p.h>
23
24
#include <QtCore/QVariant>
25
26
QT_BEGIN_NAMESPACE
27
28
struct
QSSGRenderLayer
;
29
struct
QSSGCommand
;
30
class
QSSGRenderContextInterface
;
31
32
struct
Q_QUICK3DRUNTIMERENDER_EXPORT
QSSGRenderEffect
:
public
QSSGRenderGraphObject
33
{
34
QSSGRenderEffect
();
35
~QSSGRenderEffect
();
36
37
void
finalizeShaders(
const
QSSGRenderLayer
&
layer
,
QSSGRenderContextInterface
*renderContext);
38
39
enum class
Flags
:
quint8
40
{
41
Dirty
= 0x1u
42
};
43
using
FlagT
= std::underlying_type_t<Flags>;
44
45
struct
TextureProperty
46
{
47
QSSGRenderImage
*texImage =
nullptr
;
48
QByteArray
name
;
49
QSSGRenderShaderValue::Type
shaderDataType
;
50
QSSGRenderTextureFilterOp
minFilterType =
QSSGRenderTextureFilterOp::Linear
;
51
QSSGRenderTextureFilterOp
magFilterType =
QSSGRenderTextureFilterOp::Linear
;
52
QSSGRenderTextureFilterOp
mipFilterType =
QSSGRenderTextureFilterOp::Linear
;
53
QSSGRenderTextureCoordOp
horizontalClampType =
QSSGRenderTextureCoordOp::ClampToEdge
;
54
QSSGRenderTextureCoordOp
verticalClampType =
QSSGRenderTextureCoordOp::ClampToEdge
;
55
QSSGRenderTextureCoordOp
zClampType =
QSSGRenderTextureCoordOp::ClampToEdge
;
56
QSSGRenderTextureTypeValue
usageType
;
57
};
58
59
QVector<TextureProperty>
textureProperties
;
60
61
struct
Property
62
{
63
Property
() =
default
;
64
Property
(
const
QByteArray
&
name
,
const
QByteArray
&
typeName
,
const
QVariant
&
value
,
QSSGRenderShaderValue::Type
shaderDataType,
int
pid = -1)
65
:
name
(
name
),
typeName
(
typeName
),
value
(
value
), shaderDataType(shaderDataType), pid(pid)
66
{ }
67
QByteArray
name
;
68
QByteArray
typeName
;
69
mutable
QVariant
value
;
70
QSSGRenderShaderValue::Type
shaderDataType
;
71
int
pid
;
72
};
73
74
QVector<Property>
properties
;
75
76
QSSGRenderEffect
*m_nextEffect =
nullptr
;
77
78
void
markDirty();
79
void
clearDirty();
80
[[nodiscard]]
inline
bool
isDirty
()
const
{
return
((
flags
&
FlagT
(Flags::Dirty)) != 0); }
81
82
struct
Command
{
83
QSSGCommand
*
command
;
84
quint8
own
: 1;
85
};
86
QVector<Command>
commands
;
87
88
void
resetCommands();
89
90
const
char
*
className
=
nullptr
;
91
FlagT
flags
=
FlagT
(Flags::Dirty);
92
bool
requiresDepthTexture =
false
;
93
bool
incompleteBuildTimeObject =
false
;
// Used by the shadergen tool
94
QSSGRenderTextureFormat::Format
outputFormat =
QSSGRenderTextureFormat::Unknown
;
95
96
struct
ShaderPrepPassData
97
{
98
QByteArray
shaderPathKeyPrefix
;
// to be completed in finalizeShaders
99
QByteArray
vertexShaderCode[2];
// without main(), to be completed in finalizeShaders
100
QByteArray
fragmentShaderCode[2];
// same here
101
QSSGCustomShaderMetaData
vertexMetaData[2];
102
QSSGCustomShaderMetaData
fragmentMetaData[2];
103
int
bindShaderCmdIndex = 0;
104
};
105
106
struct
{
107
bool
valid =
false
;
108
QVector<ShaderPrepPassData>
passes
;
109
} shaderPrepData;
110
111
QString
debugObjectName
;
112
};
113
114
QT_END_NAMESPACE
115
116
#endif
QByteArray
\inmodule QtCore
Definition
qbytearray.h:57
QSSGRenderContextInterface
\inmodule QtQuick3D
Definition
qssgrendercontextcore.h:40
QSSGRenderGraphObject
Definition
qssgrendergraphobject.h:37
QString
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition
qstring.h:129
QVariant
\inmodule QtCore
Definition
qvariant.h:65
QSSGRenderShaderValue::Type
Type
Definition
qssgrenderbasetypes_p.h:275
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qstandardpaths_haiku.cpp:21
QT_END_NAMESPACE
Definition
qsharedpointer.cpp:1590
value
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
Definition
qeglstreamconvenience_p.h:46
layer
EGLOutputLayerEXT layer
Definition
qeglstreamconvenience_p.h:46
typeName
const char * typeName
Definition
qmetatype.cpp:959
flags
GLbitfield flags
Definition
qopengles2ext.h:1026
name
GLuint name
Definition
qopengles2ext.h:156
QSSGRenderableObjectFlag::Dirty
@ Dirty
QSSGRenderTextureCoordOp
QSSGRenderTextureCoordOp
Definition
qssgrenderbasetypes_p.h:209
QSSGRenderTextureCoordOp::ClampToEdge
@ ClampToEdge
QSSGRenderTextureFilterOp
QSSGRenderTextureFilterOp
Definition
qssgrenderbasetypes_p.h:202
QSSGRenderTextureFilterOp::Linear
@ Linear
QSSGRenderTextureTypeValue
QSSGRenderTextureTypeValue
Definition
qssgrenderbasetypes_p.h:321
quint8
unsigned char quint8
Definition
qtypes.h:46
className
const char className[16]
[1]
Definition
qwizard.cpp:100
QSSGCommand
Definition
qssgrendercommands_p.h:43
QSSGCustomShaderMetaData
Definition
qssgrendershaderlibrarymanager_p.h:36
QSSGRenderEffect::Command
Definition
qssgrendereffect_p.h:82
QSSGRenderEffect::Command::own
quint8 own
Definition
qssgrendereffect_p.h:84
QSSGRenderEffect::Command::command
QSSGCommand * command
Definition
qssgrendereffect_p.h:83
QSSGRenderEffect::Property
Definition
qssgrendereffect_p.h:62
QSSGRenderEffect::Property::typeName
QByteArray typeName
Definition
qssgrendereffect_p.h:68
QSSGRenderEffect::Property::Property
Property(const QByteArray &name, const QByteArray &typeName, const QVariant &value, QSSGRenderShaderValue::Type shaderDataType, int pid=-1)
Definition
qssgrendereffect_p.h:64
QSSGRenderEffect::Property::pid
int pid
Definition
qssgrendereffect_p.h:71
QSSGRenderEffect::Property::shaderDataType
QSSGRenderShaderValue::Type shaderDataType
Definition
qssgrendereffect_p.h:70
QSSGRenderEffect::Property::Property
Property()=default
QSSGRenderEffect::Property::name
QByteArray name
Definition
qssgrendereffect_p.h:67
QSSGRenderEffect::Property::value
QVariant value
Definition
qssgrendereffect_p.h:69
QSSGRenderEffect::ShaderPrepPassData
Definition
qssgrendereffect_p.h:97
QSSGRenderEffect::ShaderPrepPassData::shaderPathKeyPrefix
QByteArray shaderPathKeyPrefix
Definition
qssgrendereffect_p.h:98
QSSGRenderEffect::TextureProperty
Definition
qssgrendereffect_p.h:46
QSSGRenderEffect::TextureProperty::name
QByteArray name
Definition
qssgrendereffect_p.h:48
QSSGRenderEffect::TextureProperty::shaderDataType
QSSGRenderShaderValue::Type shaderDataType
Definition
qssgrendereffect_p.h:49
QSSGRenderEffect::TextureProperty::usageType
QSSGRenderTextureTypeValue usageType
Definition
qssgrendereffect_p.h:56
QSSGRenderEffect
Definition
qssgrendereffect_p.h:33
QSSGRenderEffect::commands
QVector< Command > commands
Definition
qssgrendereffect_p.h:86
QSSGRenderEffect::properties
QVector< Property > properties
Definition
qssgrendereffect_p.h:74
QSSGRenderEffect::textureProperties
QVector< TextureProperty > textureProperties
Definition
qssgrendereffect_p.h:59
QSSGRenderEffect::Flags
Flags
Definition
qssgrendereffect_p.h:40
QSSGRenderEffect::FlagT
std::underlying_type_t< Flags > FlagT
Definition
qssgrendereffect_p.h:43
QSSGRenderEffect::debugObjectName
QString debugObjectName
Definition
qssgrendereffect_p.h:111
QSSGRenderEffect::isDirty
bool isDirty() const
Definition
qssgrendereffect_p.h:80
QSSGRenderEffect::passes
QVector< ShaderPrepPassData > passes
Definition
qssgrendereffect_p.h:108
QSSGRenderImage
Definition
qssgrenderimage_p.h:34
QSSGRenderLayer
Definition
qssgrenderlayer_p.h:42
QSSGRenderTextureFormat::Format
Format
Definition
qssgrenderbasetypes_p.h:69
QSSGRenderTextureFormat::Unknown
@ Unknown
Definition
qssgrenderbasetypes_p.h:71
qtquick3d
src
runtimerender
graphobjects
qssgrendereffect_p.h
Generated by
1.10.0