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
5
7
13
14QQuick3DSceneEnvironment *SceneEffectBase::environment() const
15{
16 return m_environment;
17}
18
19void SceneEffectBase::setEnvironment(QQuick3DSceneEnvironment *newEnvironment)
20{
21 if (m_environment == newEnvironment)
22 return;
23
24 if (auto env = qobject_cast<SceneEffectEnvironment *>(m_environment))
26
27 m_environment = newEnvironment;
28
29 QQuick3DObjectPrivate::attachWatcher(this, &SceneEffectBase::setEnvironment, newEnvironment, m_environment);
30
31 if (auto env = qobject_cast<SceneEffectEnvironment *>(m_environment))
33
34 emit environmentChanged();
35}
36
38{
39 if (m_environment)
40 m_environment->update();
41}
42
44{
45 Q_UNUSED(env);
46 qWarning() << "We shouldn't be here!!!";
47}
49{
50 Q_UNUSED(oldEnvironment);
51 qWarning() << "We shouldn't be here!!!";
52}
53
54MainSceneEffect::MainSceneEffect(QQuick3DObject *p)
56{
57
58}
59
61{
62 if (newEnvironment)
63 newEnvironment->setMainSceneEffect(this);
64}
65
67{
68 if (oldEnvironment)
69 oldEnvironment->setMainSceneEffect(nullptr);
70}
71
72DepthOfFieldEffect::DepthOfFieldEffect(QQuick3DObject *p)
74{
75
76}
77
79{
80 if (newEnvironment)
81 newEnvironment->setDeptOfFieldEffect(this);
82}
83
85{
86 if (oldEnvironment)
87 oldEnvironment->setDeptOfFieldEffect(nullptr);
88}
89
91{
92 return m_enabled;
93}
94
95void DepthOfFieldEffect::setEnabled(bool newEnabled)
96{
97 if (m_enabled == newEnabled)
98 return;
99 m_enabled = newEnabled;
101 emit enabledChanged();
102}
103
104SsgiEnvEffect::SsgiEnvEffect(QQuick3DObject *p)
105 : SceneEffectBase(p)
106{
107}
108
110{
111 if (newEnvironment)
112 newEnvironment->setSsgiEffect(this);
113}
114
116{
117 if (oldEnvironment)
118 oldEnvironment->setSsgiEffect(nullptr);
119}
120
122{
123 return m_enabled;
124}
125
126void SsgiEnvEffect::setEnabled(bool newEnabled)
127{
128 if (m_enabled == newEnabled)
129 return;
130
131 m_enabled = newEnabled;
133 emit enabledChanged();
134}
135
136SceneEffectEnvironment::SceneEffectEnvironment(QQuick3DObject *p)
137 : QQuick3DSceneEnvironment(p)
138{
139}
140
142{
143 if (m_tonemapper == tonemapper)
144 return;
145
146 QQuick3DObjectPrivate::attachWatcher(this, &SceneEffectEnvironment::setMainSceneEffect, tonemapper, m_tonemapper);
147
148 m_tonemapper = tonemapper;
149}
150
152{
153 if (m_dof == dof)
154 return;
155
156 QQuick3DObjectPrivate::attachWatcher(this, &SceneEffectEnvironment::setDeptOfFieldEffect, dof, m_dof);
157
158 m_dof = dof;
159}
160
162{
163 if (m_ssgi == ssgi)
164 return;
165
166 QQuick3DObjectPrivate::attachWatcher(this, &SceneEffectEnvironment::setSsgiEffect, ssgi, m_ssgi);
167
168 m_ssgi = ssgi;
169}
170
172{
173 m_effects = QQuick3DSceneEnvironment::effectList();
174 if (m_ssgi && m_ssgi->enabled())
175 m_effects.push_back(m_ssgi);
176 if (m_dof && m_dof->enabled())
177 m_effects.push_back(m_dof);
178 if (m_tonemapper)
179 m_effects.push_back(m_tonemapper);
180 node = QQuick3DSceneEnvironment::updateSpatialNode(node);
181
182 return node;
183}
184
186{
187 return m_effects;
188}
189
191{
192 return false;
193}
194
195QT_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
virtual void registerWithEnv(SceneEffectEnvironment *newEnvironment)=0
virtual void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment)=0
void setEnvironment(QQuick3DSceneEnvironment *newEnvironment)
QQuick3DSceneEnvironment * environment() const
void setSsgiEffect(SsgiEnvEffect *ssgi)
void setDeptOfFieldEffect(DepthOfFieldEffect *dof)
const QVector< QQuick3DEffect * > & effectList() const override
void setMainSceneEffect(MainSceneEffect *tonemapper)
QSSGRenderGraphObject * updateSpatialNode(QSSGRenderGraphObject *node) override
bool useBuiltinTonemapper() const override
void setEnabled(bool newEnabled)
void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override
bool enabled() const
void registerWithEnv(SceneEffectEnvironment *newEnvironment) override