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
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
7
9
15
16QQuick3DSceneEnvironment *SceneEffectBase::environment() const
17{
18 return m_environment;
19}
20
21void SceneEffectBase::setEnvironment(QQuick3DSceneEnvironment *newEnvironment)
22{
23 if (m_environment == newEnvironment)
24 return;
25
26 if (auto env = qobject_cast<SceneEffectEnvironment *>(m_environment))
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))
35
36 emit environmentChanged();
37}
38
40{
41 if (m_environment)
42 m_environment->update();
43}
44
45MainSceneEffect::MainSceneEffect(QQuick3DObject *p)
47{
48
49}
50
52{
53 if (newEnvironment)
54 newEnvironment->setMainSceneEffect(this);
55}
56
58{
59 if (oldEnvironment)
60 oldEnvironment->setMainSceneEffect(nullptr);
61}
62
63DepthOfFieldEffect::DepthOfFieldEffect(QQuick3DObject *p)
65{
66
67}
68
70{
71 if (newEnvironment)
72 newEnvironment->setDeptOfFieldEffect(this);
73}
74
76{
77 if (oldEnvironment)
78 oldEnvironment->setDeptOfFieldEffect(nullptr);
79}
80
82{
83 return m_enabled;
84}
85
86void DepthOfFieldEffect::setEnabled(bool newEnabled)
87{
88 if (m_enabled == newEnabled)
89 return;
90 m_enabled = newEnabled;
92 emit enabledChanged();
93}
94
95SsgiEnvEffect::SsgiEnvEffect(QQuick3DObject *p)
97{
98}
99
101{
102 if (newEnvironment)
103 newEnvironment->setSsgiEffect(this);
104}
105
107{
108 if (oldEnvironment)
109 oldEnvironment->setSsgiEffect(nullptr);
110}
111
113{
114 return m_enabled;
115}
116
117void SsgiEnvEffect::setEnabled(bool newEnabled)
118{
119 if (m_enabled == newEnabled)
120 return;
121
122 m_enabled = newEnabled;
124 emit enabledChanged();
125}
126
127SsrEnvEffect::SsrEnvEffect(QQuick3DObject *p)
128 : SceneEffectBase(p)
129{
130}
131
133{
134 if (newEnvironment)
135 newEnvironment->setSsrEffect(this);
136}
137
139{
140 if (oldEnvironment)
141 oldEnvironment->setSsrEffect(nullptr);
142}
143
145{
146 return m_enabled;
147}
148
149void SsrEnvEffect::setEnabled(bool newEnabled)
150{
151 if (m_enabled == newEnabled)
152 return;
153
154 m_enabled = newEnabled;
156 emit enabledChanged();
157}
158
159SceneEffectEnvironment::SceneEffectEnvironment(QQuick3DObject *p)
160 : QQuick3DSceneEnvironment(p)
161{
162}
163
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
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
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
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
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
222{
223 return m_effects;
224}
225
227{
228 return false;
229}
230
231QT_END_NAMESPACE
bool enabled() const
void registerWithEnv(SceneEffectEnvironment *newEnvironment) override
void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override
void setEnabled(bool newEnabled)
void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override
void registerWithEnv(SceneEffectEnvironment *newEnvironment) override
QObject * parent
Definition qobject.h:73
\qmltype Object3D \inqmlmodule QtQuick3D \nativetype QQuick3DObject \inherits QtObject
void setEnvironment(QQuick3DSceneEnvironment *newEnvironment)
virtual void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment)=0
QQuick3DSceneEnvironment * environment() const
virtual void registerWithEnv(SceneEffectEnvironment *newEnvironment)=0
void setSsgiEffect(SsgiEnvEffect *ssgi)
void setDeptOfFieldEffect(DepthOfFieldEffect *dof)
const QVector< QQuick3DEffect * > & effectList() const override
void setMainSceneEffect(MainSceneEffect *tonemapper)
QSSGRenderGraphObject * updateSpatialNode(QSSGRenderGraphObject *node) override
void setSsrEffect(SsrEnvEffect *ssr)
bool useBuiltinTonemapper() const override
void setEnabled(bool newEnabled)
void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override
bool enabled() const
void registerWithEnv(SceneEffectEnvironment *newEnvironment) override
bool enabled() const
void registerWithEnv(SceneEffectEnvironment *newEnvironment) override
void setEnabled(bool newEnabled)
void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override
Combined button and popup list for selecting options.