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
qssgrendergraphobject.h
Go to the documentation of this file.
1
// Copyright (C) 2008-2012 NVIDIA Corporation.
2
// Copyright (C) 2023 The Qt Company Ltd.
3
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
4
// Qt-Security score:significant reason:default
5
6
7
#
ifndef
QSSG_RENDER_GRAPH_OBJECT_H
8
#
define
QSSG_RENDER_GRAPH_OBJECT_H
9
10
//
11
// W A R N I N G
12
// -------------
13
//
14
// This file is part of the QtQuick3D API, with limited compatibility guarantees.
15
// Usage of this API may make your code source and binary incompatible with
16
// future versions of Qt.
17
//
18
19
#
include
<
QtQuick3DRuntimeRender
/
qtquick3druntimerenderexports
.
h
>
20
#
include
<
QtCore
/
QDebug
>
21
#
include
<
QtCore
/
qtconfigmacros
.
h
>
22
#
include
<
QtQuick
/
qtquickglobal
.
h
>
23
24
QT_BEGIN_NAMESPACE
25
26
// NOTE: Duplicat to avoid pulling in private headers
27
#
ifndef
Q_QUICK3D_PROFILE_ID
28
#
if
QT_CONFIG
(
qml_debug
)
29
#
define
Q_QUICK3D_PROFILE_ID_
qint32
profilingId
=
-
1
;
30
#
else
31
#
define
Q_QUICK3D_PROFILE_ID_
32
#
endif
33
#
else
34
#
define
Q_QUICK3D_PROFILE_ID_
Q_QUICK3D_PROFILE_ID
35
#
endif
36
37
38
class
Q_QUICK3DRUNTIMERENDER_EXPORT
QSSGRenderGraphObject
39
{
40
Q_DISABLE_COPY_MOVE(QSSGRenderGraphObject)
41
public
:
42
// Types should be setup on construction. Change the type
43
// at your own risk as the type is used for RTTI purposes.
44
// See QSSGRenderGraphObject, QQuick3DObject and QSSceneDesc (asset useage).
45
46
enum
BaseType : quint32 {
47
// Internal types
48
Node = 0x1000,
49
Light = 0x2000,
50
Camera = 0x4000,
51
Renderable = 0x8000,
52
Resource = 0x10000,
53
Material = 0x20000,
54
Texture = 0x40000,
55
Extension = 0x80000,
56
User = 0x80000000,
57
};
58
59
enum
class
Type
:
quint32
{
60
Unknown
= 0,
61
// Nodes
62
Node
=
BaseType
::
Node
,
63
Root
,
// Node
64
Layer
,
// Node
65
Joint
,
// Node
66
Skeleton
,
// Node (A resource to the model node)
67
ImportScene
,
// Node
68
ReflectionProbe
,
69
SceneRoot
,
// Node
70
// Light nodes
71
DirectionalLight
=
BaseType
::
Light
|
BaseType
::
Node
,
72
PointLight
,
73
SpotLight
,
74
// Camera nodes
75
OrthographicCamera
=
BaseType
::
Camera
|
BaseType
::
Node
,
76
PerspectiveCamera
,
77
CustomFrustumCamera
,
// Perspective camera with user specified frustum bounds.
78
CustomCamera
,
79
// Renderable nodes
80
Model
=
BaseType
::
Renderable
|
BaseType
::
Node
,
// Renderable Node
81
Item2D
,
// Renderable Node
82
Particles
,
// Renderable Node
83
// Resources
84
SceneEnvironment
=
BaseType
::
Resource
,
// Resource
85
Effect
,
// Resource
86
Geometry
,
// Resource
87
TextureData
,
// Resource
88
MorphTarget
,
// Resource
89
ModelInstance
,
// Resource
90
ModelBlendParticle
,
// Resource
91
ResourceLoader
,
// Resource [meta]
92
RenderPass
,
// Resource
93
SkyMaterial
,
// Resource
94
Skin
,
// Resource
95
// Materials
96
DefaultMaterial
=
BaseType
::
Material
|
BaseType
::
Resource
,
// Resource
97
PrincipledMaterial
,
// Resource
98
CustomMaterial
,
// Resource
99
SpecularGlossyMaterial
,
//Resource
100
LegacySkin
,
// Reserved; Type::Skin had this value before Qt 6.13. Never construct an object with it.
101
// Textures
102
Image2D
=
BaseType
::
Texture
|
BaseType
::
Resource
,
// Resource
103
ImageCube
,
// Resource
104
RenderExtension
=
BaseType
::
Extension
,
// Extension
105
TextureProvider
,
// Extension
106
// User types E.g.: (User | Node) + 1)
107
};
108
using
TypeT = std::underlying_type_t<Type>;
109
110
enum
class
Flags
:
quint32
{
111
HasGraphicsResources
= 0x1,
112
InternallyReserved
= 0xffff0000,
113
};
114
using
FlagT = std::underlying_type_t<Flags>;
115
116
[[nodiscard]]
static
constexpr
bool
isNodeType
(
Type
type)
noexcept
117
{
118
return
(TypeT(type) & BaseType::Node);
119
}
120
121
[[nodiscard]]
static
constexpr
bool
isLight
(
Type
type)
noexcept
122
{
123
return
(TypeT(type) & BaseType::Light);
124
}
125
126
[[nodiscard]]
static
constexpr
bool
isCamera
(
Type
type)
noexcept
127
{
128
return
(TypeT(type) & BaseType::Camera);
129
}
130
131
[[nodiscard]]
static
constexpr
bool
isMaterial
(
Type
type)
noexcept
132
{
133
// Type::Skin had the LegacySkin value, in the material range, before
134
// Qt 6.13. Keep rejecting it here in case it reaches us from code
135
// built against the older headers, where the value was inlined.
136
return
(TypeT(type) & BaseType::Material) && (type != Type::LegacySkin);
137
}
138
139
[[nodiscard]]
static
constexpr
bool
isTexture
(
Type
type)
noexcept
140
{
141
return
(TypeT(type) & BaseType::Texture);
142
}
143
144
[[nodiscard]]
static
constexpr
bool
isRenderable
(
Type
type)
noexcept
145
{
146
return
(TypeT(type) & BaseType::Renderable);
147
}
148
149
[[nodiscard]]
static
constexpr
bool
isResource
(
Type
type)
noexcept
150
{
151
return
(TypeT(type) & BaseType::Resource);
152
}
153
154
[[nodiscard]]
static
constexpr
bool
isExtension
(
Type
type)
noexcept
155
{
156
return
(TypeT(type) & BaseType::Extension);
157
}
158
159
// Note: This could have been a non-static member, as we never create or use
160
// user types we do the built-in types; In any case just follow the existing pattern.
161
[[nodiscard]]
static
constexpr
bool
isUserType
(
Type
type)
noexcept
162
{
163
return
(TypeT(type) & BaseType::User);
164
}
165
166
// Objects tagged with HasGraphicsResources get special handling and will be queued for release
167
// on the render thread after the frame has been submitted. See cleanupNodes() in the scene manager.
168
[[nodiscard]]
inline
bool
hasGraphicsResources
()
const
noexcept
169
{
170
return
((flags & FlagT(Flags::HasGraphicsResources)) != 0);
171
}
172
173
const
Type
type
;
174
FlagT
flags
{ 0 };
175
Q_QUICK3D_PROFILE_ID_
176
177
virtual
~QSSGRenderGraphObject();
178
179
#
ifndef
QT_NO_DEBUG_STREAM
180
friend
Q_QUICK3DRUNTIMERENDER_EXPORT
QDebug
operator<<(QDebug stream, QSSGRenderGraphObject::Type type);
181
#
endif
182
183
protected
:
184
explicit
QSSGRenderGraphObject(QSSGRenderGraphObject::Type inType);
185
explicit
QSSGRenderGraphObject(QSSGRenderGraphObject::Type inType, FlagT inFlags) : type(inType), flags(inFlags) {}
186
};
187
188
#
ifndef
QT_NO_DEBUG_STREAM
189
Q_QUICK3DRUNTIMERENDER_EXPORT
QDebug
operator<<(QDebug, QSSGRenderGraphObject::Type type);
190
#
endif
191
192
QT_END_NAMESPACE
193
194
#
endif
// QSSG_RENDER_GRAPH_OBJECT_H
QGraphicsItemPrivate::flags
quint32 flags
Definition
qgraphicsitem_p.h:392
QPaintEngine::Type
Type
\value X11 \value Windows \value MacPrinter \value CoreGraphics \macos's Quartz2D (CoreGraphics) \val...
Definition
qpaintengine.h:158
QSSGRenderGraphObject
Definition
qssgrendergraphobject.h:39
QSSGRenderGraphObject::isCamera
static constexpr bool isCamera(Type type) noexcept
Definition
qssgrendergraphobject.h:126
QSSGRenderGraphObject::isRenderable
static constexpr bool isRenderable(Type type) noexcept
Definition
qssgrendergraphobject.h:144
QSSGRenderGraphObject::Flags::HasGraphicsResources
@ HasGraphicsResources
Definition
qssgrendergraphobject.h:111
QSSGRenderGraphObject::Flags::InternallyReserved
@ InternallyReserved
Definition
qssgrendergraphobject.h:112
QSSGRenderGraphObject::isNodeType
static constexpr bool isNodeType(Type type) noexcept
Definition
qssgrendergraphobject.h:116
QSSGRenderGraphObject::isUserType
static constexpr bool isUserType(Type type) noexcept
Definition
qssgrendergraphobject.h:161
QSSGRenderGraphObject::isExtension
static constexpr bool isExtension(Type type) noexcept
Definition
qssgrendergraphobject.h:154
QSSGRenderGraphObject::isResource
static constexpr bool isResource(Type type) noexcept
Definition
qssgrendergraphobject.h:149
QSSGRenderGraphObject::type
const Type type
Definition
qssgrendergraphobject.h:173
QSSGRenderGraphObject::isMaterial
static constexpr bool isMaterial(Type type) noexcept
Definition
qssgrendergraphobject.h:131
QSSGRenderGraphObject::Type::RenderExtension
@ RenderExtension
Definition
qssgrendergraphobject.h:104
QSSGRenderGraphObject::Type::Item2D
@ Item2D
Definition
qssgrendergraphobject.h:81
QSSGRenderGraphObject::Type::CustomFrustumCamera
@ CustomFrustumCamera
Definition
qssgrendergraphobject.h:77
QSSGRenderGraphObject::Type::SkyMaterial
@ SkyMaterial
Definition
qssgrendergraphobject.h:93
QSSGRenderGraphObject::Type::SpecularGlossyMaterial
@ SpecularGlossyMaterial
Definition
qssgrendergraphobject.h:99
QSSGRenderGraphObject::Type::RenderPass
@ RenderPass
Definition
qssgrendergraphobject.h:92
QSSGRenderGraphObject::Type::DefaultMaterial
@ DefaultMaterial
Definition
qssgrendergraphobject.h:96
QSSGRenderGraphObject::Type::OrthographicCamera
@ OrthographicCamera
Definition
qssgrendergraphobject.h:75
QSSGRenderGraphObject::Type::Layer
@ Layer
Definition
qssgrendergraphobject.h:64
QSSGRenderGraphObject::Type::PointLight
@ PointLight
Definition
qssgrendergraphobject.h:72
QSSGRenderGraphObject::Type::TextureProvider
@ TextureProvider
Definition
qssgrendergraphobject.h:105
QSSGRenderGraphObject::Type::CustomMaterial
@ CustomMaterial
Definition
qssgrendergraphobject.h:98
QSSGRenderGraphObject::Type::SpotLight
@ SpotLight
Definition
qssgrendergraphobject.h:73
QSSGRenderGraphObject::Type::Skeleton
@ Skeleton
Definition
qssgrendergraphobject.h:66
QSSGRenderGraphObject::Type::Node
@ Node
Definition
qssgrendergraphobject.h:62
QSSGRenderGraphObject::Type::SceneRoot
@ SceneRoot
Definition
qssgrendergraphobject.h:69
QSSGRenderGraphObject::Type::PerspectiveCamera
@ PerspectiveCamera
Definition
qssgrendergraphobject.h:76
QSSGRenderGraphObject::Type::ImageCube
@ ImageCube
Definition
qssgrendergraphobject.h:103
QSSGRenderGraphObject::Type::Unknown
@ Unknown
Definition
qssgrendergraphobject.h:60
QSSGRenderGraphObject::Type::MorphTarget
@ MorphTarget
Definition
qssgrendergraphobject.h:88
QSSGRenderGraphObject::Type::Skin
@ Skin
Definition
qssgrendergraphobject.h:94
QSSGRenderGraphObject::Type::SceneEnvironment
@ SceneEnvironment
Definition
qssgrendergraphobject.h:84
QSSGRenderGraphObject::Type::LegacySkin
@ LegacySkin
Definition
qssgrendergraphobject.h:100
QSSGRenderGraphObject::Type::ReflectionProbe
@ ReflectionProbe
Definition
qssgrendergraphobject.h:68
QSSGRenderGraphObject::Type::Model
@ Model
Definition
qssgrendergraphobject.h:80
QSSGRenderGraphObject::Type::Effect
@ Effect
Definition
qssgrendergraphobject.h:85
QSSGRenderGraphObject::Type::Particles
@ Particles
Definition
qssgrendergraphobject.h:82
QSSGRenderGraphObject::Type::Joint
@ Joint
Definition
qssgrendergraphobject.h:65
QSSGRenderGraphObject::Type::Image2D
@ Image2D
Definition
qssgrendergraphobject.h:102
QSSGRenderGraphObject::Type::ImportScene
@ ImportScene
Definition
qssgrendergraphobject.h:67
QSSGRenderGraphObject::Type::CustomCamera
@ CustomCamera
Definition
qssgrendergraphobject.h:78
QSSGRenderGraphObject::Type::DirectionalLight
@ DirectionalLight
Definition
qssgrendergraphobject.h:71
QSSGRenderGraphObject::Type::ModelBlendParticle
@ ModelBlendParticle
Definition
qssgrendergraphobject.h:90
QSSGRenderGraphObject::Type::ModelInstance
@ ModelInstance
Definition
qssgrendergraphobject.h:89
QSSGRenderGraphObject::Type::Geometry
@ Geometry
Definition
qssgrendergraphobject.h:86
QSSGRenderGraphObject::Type::ResourceLoader
@ ResourceLoader
Definition
qssgrendergraphobject.h:91
QSSGRenderGraphObject::Type::PrincipledMaterial
@ PrincipledMaterial
Definition
qssgrendergraphobject.h:97
QSSGRenderGraphObject::Type::TextureData
@ TextureData
Definition
qssgrendergraphobject.h:87
QSSGRenderGraphObject::Type::Root
@ Root
Definition
qssgrendergraphobject.h:63
QSSGRenderGraphObject::isTexture
static constexpr bool isTexture(Type type) noexcept
Definition
qssgrendergraphobject.h:139
QSSGRenderGraphObject::hasGraphicsResources
bool hasGraphicsResources() const noexcept
Definition
qssgrendergraphobject.h:168
QSSGRenderGraphObject::isLight
static constexpr bool isLight(Type type) noexcept
Definition
qssgrendergraphobject.h:121
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
operator<<
QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition
qdir.cpp:2620
operator<<
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition
qdir.cpp:2620
Flags
Flags
Definition
qfontsubset.cpp:651
RETURN_AS_STRING
#define RETURN_AS_STRING(T)
asString
static QT_BEGIN_NAMESPACE const char * asString(QSSGRenderGraphObject::Type type)
Definition
qssgrendergraphobject.cpp:12
Q_QUICK3D_PROFILE_ID_
#define Q_QUICK3D_PROFILE_ID_
Definition
qssgrendergraphobject.h:31
qtquick3d
src
runtimerender
graphobjects
qssgrendergraphobject.h
Generated on
for Qt by
1.18.0