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_p.h
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#ifndef SCENEEFFECTS_H
7#define SCENEEFFECTS_H
8
9//
10// W A R N I N G
11// -------------
12//
13// This file is not part of the Qt API. It exists purely as an
14// implementation detail. This header file may change from version to
15// version without notice, or even be removed.
16//
17// We mean it.
18//
19
20#include <QtQuick3D/private/qquick3deffect_p.h>
21#include <QtQuick3D/private/qquick3dsceneenvironment_p.h>
22
23QT_BEGIN_NAMESPACE
24
25class QQuick3DSceneEnvironment;
27
29{
30 Q_OBJECT
31 Q_PROPERTY(QQuick3DSceneEnvironment * environment READ environment WRITE setEnvironment NOTIFY environmentChanged)
33 QML_UNCREATABLE("SceneEffectBase is Abstract")
34public:
35 explicit SceneEffectBase(QQuick3DObject *parent = nullptr);
36
37 QQuick3DSceneEnvironment *environment() const;
38 void setEnvironment(QQuick3DSceneEnvironment *newEnvironment);
39
42
43protected:
44 void scheduleEnvUpdate();
45
46private:
47 QQuick3DSceneEnvironment *m_environment = nullptr;
48 virtual void registerWithEnv(SceneEffectEnvironment *newEnvironment) = 0;
49 virtual void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) = 0;
50};
51
53{
54 Q_OBJECT
55 QML_NAMED_ELEMENT(MainSceneEffect)
56public:
57 explicit MainSceneEffect(QQuick3DObject *p = nullptr);
58
59private:
60 void registerWithEnv(SceneEffectEnvironment *newEnvironment) override;
61 void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override;
62};
63
65{
66 Q_OBJECT
67 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
69public:
70 explicit DepthOfFieldEffect(QQuick3DObject *p = nullptr);
71
72 bool enabled() const;
73 void setEnabled(bool newEnabled);
74
77
78private:
79 void registerWithEnv(SceneEffectEnvironment *newEnvironment) override;
80 void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override;
81 bool m_enabled = false;
82};
83
85{
86 Q_OBJECT
87 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
89public:
90 explicit SsgiEnvEffect(QQuick3DObject *p = nullptr);
91
92 bool enabled() const;
93 void setEnabled(bool newEnabled);
94
97
98private:
99 void registerWithEnv(SceneEffectEnvironment *newEnvironment) override;
100 void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override;
101 bool m_enabled = false;
102};
103
105{
106 Q_OBJECT
107 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
109public:
110 explicit SsrEnvEffect(QQuick3DObject *p = nullptr);
111
112 bool enabled() const;
113 void setEnabled(bool newEnabled);
114
115signals:
117
118private:
119 void registerWithEnv(SceneEffectEnvironment *newEnvironment) override;
120 void unregisterWithEnv(SceneEffectEnvironment *oldEnvironment) override;
121 bool m_enabled = false;
122};
123
125{
126 Q_OBJECT
127 QML_NAMED_ELEMENT(SceneEffectEnvironment)
128
129public:
130 explicit SceneEffectEnvironment(QQuick3DObject *p = nullptr);
131 void setMainSceneEffect(MainSceneEffect *tonemapper);
133 void setSsgiEffect(SsgiEnvEffect *ssgi);
134 void setSsrEffect(SsrEnvEffect *ssr);
135
136protected:
137 QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override;
138
139private:
140 QVector<QQuick3DEffect *> m_effects;
141 MainSceneEffect *m_tonemapper = nullptr;
142 DepthOfFieldEffect *m_dof = nullptr;
143 SsgiEnvEffect *m_ssgi = nullptr;
144 SsrEnvEffect *m_ssr = nullptr;
145
146protected:
147 const QVector<QQuick3DEffect *> &effectList() const override;
148 bool useBuiltinTonemapper() const override;
149};
150
151QT_END_NAMESPACE
152
153#endif // SCENEEFFECTS_H
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.