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
sceneeffects.cpp
Go to the documentation of this file.
1
// Copyright (C) 2022 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
#
include
"sceneeffects_p.h"
7
8
QT_BEGIN_NAMESPACE
9
10
SceneEffectBase
::
SceneEffectBase
(
QQuick3DObject
*
parent
)
11
:
QQuick3DEffect
(
parent
)
12
{
13
14
}
15
16
QQuick3DSceneEnvironment *
SceneEffectBase
::
environment
()
const
17
{
18
return
m_environment;
19
}
20
21
void
SceneEffectBase
::
setEnvironment
(QQuick3DSceneEnvironment *newEnvironment)
22
{
23
if
(m_environment == newEnvironment)
24
return
;
25
26
if
(
auto
env = qobject_cast<SceneEffectEnvironment *>(m_environment))
27
unregisterWithEnv
(
env
)
;
28
29
m_environment = newEnvironment;
30
31
QQuick3DObjectPrivate::attachWatcher(
this
, &SceneEffectBase::setEnvironment, newEnvironment, m_environment);
32
33
if
(
auto
env = qobject_cast<SceneEffectEnvironment *>(m_environment))
34
registerWithEnv
(
env
)
;
35
36
emit environmentChanged();
37
}
38
39
void
SceneEffectBase
::
scheduleEnvUpdate
()
40
{
41
if
(m_environment)
42
m_environment->update();
43
}
44
45
MainSceneEffect
::MainSceneEffect(QQuick3DObject *p)
46
:
SceneEffectBase
(p)
47
{
48
49
}
50
51
void
MainSceneEffect
::
registerWithEnv
(
SceneEffectEnvironment
*newEnvironment)
52
{
53
if
(newEnvironment)
54
newEnvironment
->
setMainSceneEffect
(
this
)
;
55
}
56
57
void
MainSceneEffect
::
unregisterWithEnv
(
SceneEffectEnvironment
*oldEnvironment)
58
{
59
if
(oldEnvironment)
60
oldEnvironment
->
setMainSceneEffect
(
nullptr
)
;
61
}
62
63
DepthOfFieldEffect
::DepthOfFieldEffect(QQuick3DObject *p)
64
:
SceneEffectBase
(p)
65
{
66
67
}
68
69
void
DepthOfFieldEffect
::
registerWithEnv
(
SceneEffectEnvironment
*newEnvironment)
70
{
71
if
(newEnvironment)
72
newEnvironment
->
setDeptOfFieldEffect
(
this
)
;
73
}
74
75
void
DepthOfFieldEffect
::
unregisterWithEnv
(
SceneEffectEnvironment
*oldEnvironment)
76
{
77
if
(oldEnvironment)
78
oldEnvironment
->
setDeptOfFieldEffect
(
nullptr
)
;
79
}
80
81
bool
DepthOfFieldEffect
::
enabled
()
const
82
{
83
return
m_enabled;
84
}
85
86
void
DepthOfFieldEffect
::
setEnabled
(
bool
newEnabled)
87
{
88
if
(m_enabled == newEnabled)
89
return
;
90
m_enabled = newEnabled;
91
scheduleEnvUpdate
();
92
emit enabledChanged();
93
}
94
95
SsgiEnvEffect
::SsgiEnvEffect(QQuick3DObject *p)
96
:
SceneEffectBase
(p)
97
{
98
}
99
100
void
SsgiEnvEffect
::
registerWithEnv
(
SceneEffectEnvironment
*newEnvironment)
101
{
102
if
(newEnvironment)
103
newEnvironment
->
setSsgiEffect
(
this
)
;
104
}
105
106
void
SsgiEnvEffect
::
unregisterWithEnv
(
SceneEffectEnvironment
*oldEnvironment)
107
{
108
if
(oldEnvironment)
109
oldEnvironment
->
setSsgiEffect
(
nullptr
)
;
110
}
111
112
bool
SsgiEnvEffect
::
enabled
()
const
113
{
114
return
m_enabled;
115
}
116
117
void
SsgiEnvEffect
::
setEnabled
(
bool
newEnabled)
118
{
119
if
(m_enabled == newEnabled)
120
return
;
121
122
m_enabled = newEnabled;
123
scheduleEnvUpdate
();
124
emit enabledChanged();
125
}
126
127
SsrEnvEffect
::SsrEnvEffect(QQuick3DObject *p)
128
:
SceneEffectBase
(p)
129
{
130
}
131
132
void
SsrEnvEffect
::
registerWithEnv
(
SceneEffectEnvironment
*newEnvironment)
133
{
134
if
(newEnvironment)
135
newEnvironment
->
setSsrEffect
(
this
)
;
136
}
137
138
void
SsrEnvEffect
::
unregisterWithEnv
(
SceneEffectEnvironment
*oldEnvironment)
139
{
140
if
(oldEnvironment)
141
oldEnvironment
->
setSsrEffect
(
nullptr
)
;
142
}
143
144
bool
SsrEnvEffect
::
enabled
()
const
145
{
146
return
m_enabled;
147
}
148
149
void
SsrEnvEffect
::
setEnabled
(
bool
newEnabled)
150
{
151
if
(m_enabled == newEnabled)
152
return
;
153
154
m_enabled = newEnabled;
155
scheduleEnvUpdate
();
156
emit enabledChanged();
157
}
158
159
SceneEffectEnvironment
::SceneEffectEnvironment(QQuick3DObject *p)
160
: QQuick3DSceneEnvironment(p)
161
{
162
}
163
164
void
SceneEffectEnvironment
::
setMainSceneEffect
(
MainSceneEffect
*tonemapper)
165
{
166
if
(m_tonemapper == tonemapper)
167
return
;
168
169
QQuick3DObjectPrivate::attachWatcher(
this
, &SceneEffectEnvironment::setMainSceneEffect, tonemapper, m_tonemapper);
170
171
m_tonemapper = tonemapper;
172
}
173
174
void
SceneEffectEnvironment
::
setDeptOfFieldEffect
(
DepthOfFieldEffect
*dof)
175
{
176
if
(m_dof == dof)
177
return
;
178
179
QQuick3DObjectPrivate::attachWatcher(
this
, &SceneEffectEnvironment::setDeptOfFieldEffect, dof, m_dof);
180
181
m_dof = dof;
182
}
183
184
void
SceneEffectEnvironment
::
setSsgiEffect
(
SsgiEnvEffect
*ssgi)
185
{
186
if
(m_ssgi == ssgi)
187
return
;
188
189
QQuick3DObjectPrivate::attachWatcher(
this
, &SceneEffectEnvironment::setSsgiEffect, ssgi, m_ssgi);
190
191
m_ssgi = ssgi;
192
}
193
194
void
SceneEffectEnvironment
::
setSsrEffect
(
SsrEnvEffect
*ssr)
195
{
196
if
(m_ssr == ssr)
197
return
;
198
199
QQuick3DObjectPrivate::attachWatcher(
this
, &SceneEffectEnvironment::setSsrEffect, ssr, m_ssr);
200
201
m_ssr = ssr;
202
}
203
204
QSSGRenderGraphObject
*
SceneEffectEnvironment
::
updateSpatialNode
(QSSGRenderGraphObject *node)
205
{
206
m_effects = QQuick3DSceneEnvironment::effectList();
207
if
(m_ssgi && m_ssgi->enabled())
208
m_effects.push_back(m_ssgi);
209
if
(m_ssr && m_ssr
->
enabled
(
)
) {
210
m_effects.push_back(m_ssr);
211
}
212
if
(m_dof && m_dof->enabled())
213
m_effects.push_back(m_dof);
214
if
(m_tonemapper)
215
m_effects.push_back(m_tonemapper);
216
node = QQuick3DSceneEnvironment::updateSpatialNode(node);
217
218
return
node;
219
}
220
221
const
QVector
<
QQuick3DEffect
*> &
SceneEffectEnvironment
::
effectList
()
const
222
{
223
return
m_effects;
224
}
225
226
bool
SceneEffectEnvironment
::
useBuiltinTonemapper
()
const
227
{
228
return
false
;
229
}
230
231
QT_END_NAMESPACE
DepthOfFieldEffect
Definition
sceneeffects_p.h:65
DepthOfFieldEffect::enabled
bool enabled() const
Definition
sceneeffects.cpp:81
DepthOfFieldEffect::registerWithEnv
void registerWithEnv(SceneEffectEnvironment *newEnvironment) override
Definition
sceneeffects.cpp:69
DepthOfFieldEffect::unregisterWithEnv
void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override
Definition
sceneeffects.cpp:75
DepthOfFieldEffect::setEnabled
void setEnabled(bool newEnabled)
Definition
sceneeffects.cpp:86
MainSceneEffect
Definition
sceneeffects_p.h:53
MainSceneEffect::unregisterWithEnv
void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override
Definition
sceneeffects.cpp:57
MainSceneEffect::registerWithEnv
void registerWithEnv(SceneEffectEnvironment *newEnvironment) override
Definition
sceneeffects.cpp:51
QObjectData::parent
QObject * parent
Definition
qobject.h:74
QQuick3DObject
\qmltype Object3D \inqmlmodule QtQuick3D \nativetype QQuick3DObject \inherits QtObject
Definition
qquick3dobject.h:24
SceneEffectBase
Definition
sceneeffects_p.h:29
SceneEffectBase::setEnvironment
void setEnvironment(QQuick3DSceneEnvironment *newEnvironment)
Definition
sceneeffects.cpp:21
SceneEffectBase::unregisterWithEnv
virtual void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment)=0
SceneEffectBase::environment
QQuick3DSceneEnvironment * environment() const
Definition
sceneeffects.cpp:16
SceneEffectBase::registerWithEnv
virtual void registerWithEnv(SceneEffectEnvironment *newEnvironment)=0
SceneEffectBase::scheduleEnvUpdate
void scheduleEnvUpdate()
Definition
sceneeffects.cpp:39
SceneEffectEnvironment
Definition
sceneeffects_p.h:125
SceneEffectEnvironment::setSsgiEffect
void setSsgiEffect(SsgiEnvEffect *ssgi)
Definition
sceneeffects.cpp:184
SceneEffectEnvironment::setDeptOfFieldEffect
void setDeptOfFieldEffect(DepthOfFieldEffect *dof)
Definition
sceneeffects.cpp:174
SceneEffectEnvironment::effectList
const QVector< QQuick3DEffect * > & effectList() const override
Definition
sceneeffects.cpp:221
SceneEffectEnvironment::setMainSceneEffect
void setMainSceneEffect(MainSceneEffect *tonemapper)
Definition
sceneeffects.cpp:164
SceneEffectEnvironment::updateSpatialNode
QSSGRenderGraphObject * updateSpatialNode(QSSGRenderGraphObject *node) override
Definition
sceneeffects.cpp:204
SceneEffectEnvironment::setSsrEffect
void setSsrEffect(SsrEnvEffect *ssr)
Definition
sceneeffects.cpp:194
SceneEffectEnvironment::useBuiltinTonemapper
bool useBuiltinTonemapper() const override
Definition
sceneeffects.cpp:226
SsgiEnvEffect
Definition
sceneeffects_p.h:85
SsgiEnvEffect::setEnabled
void setEnabled(bool newEnabled)
Definition
sceneeffects.cpp:117
SsgiEnvEffect::unregisterWithEnv
void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override
Definition
sceneeffects.cpp:106
SsgiEnvEffect::enabled
bool enabled() const
Definition
sceneeffects.cpp:112
SsgiEnvEffect::registerWithEnv
void registerWithEnv(SceneEffectEnvironment *newEnvironment) override
Definition
sceneeffects.cpp:100
SsrEnvEffect
Definition
sceneeffects_p.h:105
SsrEnvEffect::enabled
bool enabled() const
Definition
sceneeffects.cpp:144
SsrEnvEffect::registerWithEnv
void registerWithEnv(SceneEffectEnvironment *newEnvironment) override
Definition
sceneeffects.cpp:132
SsrEnvEffect::setEnabled
void setEnabled(bool newEnabled)
Definition
sceneeffects.cpp:149
SsrEnvEffect::unregisterWithEnv
void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override
Definition
sceneeffects.cpp:138
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
qtquick3d
src
helpers
impl
sceneeffects.cpp
Generated on
for Qt by
1.18.0