39 Q_PROPERTY(QQuick3DEnvironmentAAModeValues antialiasingMode READ antialiasingMode WRITE setAntialiasingMode NOTIFY antialiasingModeChanged)
40 Q_PROPERTY(QQuick3DEnvironmentAAQualityValues antialiasingQuality READ antialiasingQuality WRITE setAntialiasingQuality NOTIFY antialiasingQualityChanged)
42 Q_PROPERTY(
bool temporalAAEnabled READ temporalAAEnabled WRITE setTemporalAAEnabled NOTIFY temporalAAEnabledChanged)
43 Q_PROPERTY(
float temporalAAStrength READ temporalAAStrength WRITE setTemporalAAStrength NOTIFY temporalAAStrengthChanged)
44 Q_PROPERTY(QQuick3DEnvironmentBackgroundTypes backgroundMode READ backgroundMode WRITE setBackgroundMode NOTIFY backgroundModeChanged)
45 Q_PROPERTY(QColor clearColor READ clearColor WRITE setClearColor NOTIFY clearColorChanged)
46 Q_PROPERTY(
bool depthTestEnabled READ depthTestEnabled WRITE setDepthTestEnabled NOTIFY depthTestEnabledChanged)
47 Q_PROPERTY(
bool depthPrePassEnabled READ depthPrePassEnabled WRITE setDepthPrePassEnabled NOTIFY depthPrePassEnabledChanged)
49 Q_PROPERTY(
float aoStrength READ aoStrength WRITE setAoStrength NOTIFY aoStrengthChanged)
50 Q_PROPERTY(
float aoDistance READ aoDistance WRITE setAoDistance NOTIFY aoDistanceChanged)
51 Q_PROPERTY(
float aoSoftness READ aoSoftness WRITE setAoSoftness NOTIFY aoSoftnessChanged)
52 Q_PROPERTY(
bool aoDither READ aoDither WRITE setAoDither NOTIFY aoDitherChanged)
53 Q_PROPERTY(
int aoSampleRate READ aoSampleRate WRITE setAoSampleRate NOTIFY aoSampleRateChanged)
54 Q_PROPERTY(
float aoBias READ aoBias WRITE setAoBias NOTIFY aoBiasChanged)
55 Q_PROPERTY(
bool aoEnabled READ aoEnabled WRITE setAoEnabled NOTIFY aoEnabledChanged REVISION(6, 5))
57 Q_PROPERTY(QQuick3DTexture *lightProbe READ lightProbe WRITE setLightProbe NOTIFY lightProbeChanged)
58 Q_PROPERTY(
float probeExposure READ probeExposure WRITE setProbeExposure NOTIFY probeExposureChanged)
59 Q_PROPERTY(
float probeHorizon READ probeHorizon WRITE setProbeHorizon NOTIFY probeHorizonChanged)
60 Q_PROPERTY(QVector3D probeOrientation READ probeOrientation WRITE setProbeOrientation NOTIFY probeOrientationChanged)
62 Q_PROPERTY(QQuick3DCubeMapTexture *skyBoxCubeMap READ skyBoxCubeMap WRITE setSkyBoxCubeMap NOTIFY skyBoxCubeMapChanged REVISION(6, 4))
64 Q_PROPERTY(QQuick3DEnvironmentTonemapModes tonemapMode READ tonemapMode WRITE setTonemapMode NOTIFY tonemapModeChanged)
66 Q_PROPERTY(QQmlListProperty<QQuick3DEffect> effects READ effects)
68 Q_PROPERTY(
float skyboxBlurAmount READ skyboxBlurAmount WRITE setSkyboxBlurAmount NOTIFY skyboxBlurAmountChanged REVISION(6, 4))
69 Q_PROPERTY(
bool specularAAEnabled READ specularAAEnabled WRITE setSpecularAAEnabled NOTIFY specularAAEnabledChanged REVISION(6, 4))
71 Q_PROPERTY(QQuick3DLightmapper *lightmapper READ lightmapper WRITE setLightmapper NOTIFY lightmapperChanged REVISION(6, 4))
73 Q_PROPERTY(QQuick3DDebugSettings *debugSettings READ debugSettings WRITE setDebugSettings NOTIFY debugSettingsChanged REVISION(6, 5))
74 Q_PROPERTY(QRect scissorRect READ scissorRect WRITE setScissorRect NOTIFY scissorRectChanged REVISION(6, 5))
76 Q_PROPERTY(QQuick3DFog *fog READ fog WRITE setFog NOTIFY fogChanged REVISION(6, 5))
78 Q_PROPERTY(QQuick3DEnvironmentOITMethod oitMethod READ oitMethod WRITE setOitMethod NOTIFY oitMethodChanged REVISION(6, 9))
80 QML_NAMED_ELEMENT(SceneEnvironment)
84 enum QQuick3DEnvironmentAAModeValues {
90 Q_ENUM(QQuick3DEnvironmentAAModeValues)
92 enum QQuick3DEnvironmentAAQualityValues {
97 Q_ENUM(QQuick3DEnvironmentAAQualityValues)
99 enum QQuick3DEnvironmentBackgroundTypes {
106 Q_ENUM(QQuick3DEnvironmentBackgroundTypes)
108 enum QQuick3DEnvironmentTonemapModes {
112 TonemapModeHejlDawson,
115 Q_ENUM(QQuick3DEnvironmentTonemapModes)
117 enum QQuick3DEnvironmentOITMethod
122 Q_ENUM(QQuick3DEnvironmentOITMethod)
124 explicit QQuick3DSceneEnvironment(QQuick3DObject *parent =
nullptr);
125 ~QQuick3DSceneEnvironment() override;
127 QQuick3DEnvironmentAAModeValues antialiasingMode()
const;
128 QQuick3DEnvironmentAAQualityValues antialiasingQuality()
const;
129 bool temporalAAEnabled()
const;
130 float temporalAAStrength()
const;
132 QQuick3DEnvironmentBackgroundTypes backgroundMode()
const;
133 QColor clearColor()
const;
135 float aoStrength()
const;
136 float aoDistance()
const;
137 float aoSoftness()
const;
138 bool aoDither()
const;
139 int aoSampleRate()
const;
140 float aoBias()
const;
141 Q_REVISION(6, 5)
bool aoEnabled()
const;
142 Q_REVISION(6, 5)
void setAoEnabled(
bool newAoEnabled);
144 QQuick3DTexture *lightProbe()
const;
145 float probeExposure()
const;
146 float probeHorizon()
const;
147 QVector3D probeOrientation()
const;
149 bool depthTestEnabled()
const;
150 bool depthPrePassEnabled()
const;
152 QQuick3DEnvironmentTonemapModes tonemapMode()
const;
154 QQmlListProperty<QQuick3DEffect> effects();
156 Q_REVISION(6, 4)
float skyboxBlurAmount()
const;
157 Q_REVISION(6, 4)
bool specularAAEnabled()
const;
158 Q_REVISION(6, 4) QQuick3DLightmapper *lightmapper()
const;
159 Q_REVISION(6, 4) QQuick3DCubeMapTexture *skyBoxCubeMap()
const;
161 Q_REVISION(6, 5) QQuick3DDebugSettings *debugSettings()
const;
162 Q_REVISION(6, 5) QRect scissorRect()
const;
164 Q_REVISION(6, 5) QQuick3DFog *fog()
const;
166 QQuick3DEnvironmentOITMethod Q_REVISION(6, 9) oitMethod()
const;
168 bool gridEnabled()
const;
169 void setGridEnabled(
bool newGridEnabled);
171 float gridScale()
const;
172 void setGridScale(
float newGridScale);
174 uint gridFlags()
const;
175 void setGridFlags(uint newGridFlags);
178 void setAntialiasingMode(QQuick3DSceneEnvironment::QQuick3DEnvironmentAAModeValues antialiasingMode);
179 void setAntialiasingQuality(QQuick3DSceneEnvironment::QQuick3DEnvironmentAAQualityValues antialiasingQuality);
180 void setTemporalAAEnabled(
bool temporalAAEnabled);
181 void setTemporalAAStrength(
float strength);
183 void setBackgroundMode(QQuick3DSceneEnvironment::QQuick3DEnvironmentBackgroundTypes backgroundMode);
184 void setClearColor(
const QColor &clearColor);
186 void setAoStrength(
float aoStrength);
187 void setAoDistance(
float aoDistance);
188 void setAoSoftness(
float aoSoftness);
189 void setAoDither(
bool aoDither);
190 void setAoSampleRate(
int aoSampleRate);
191 void setAoBias(
float aoBias);
193 void setLightProbe(QQuick3DTexture *lightProbe);
194 void setProbeExposure(
float probeExposure);
195 void setProbeHorizon(
float probeHorizon);
196 void setProbeOrientation(
const QVector3D &orientation);
198 void setDepthTestEnabled(
bool depthTestEnabled);
199 void setDepthPrePassEnabled(
bool depthPrePassEnabled);
201 void setTonemapMode(QQuick3DSceneEnvironment::QQuick3DEnvironmentTonemapModes tonemapMode);
203 Q_REVISION(6, 4)
void setSkyboxBlurAmount(
float newSkyboxBlurAmount);
204 Q_REVISION(6, 4)
void setSpecularAAEnabled(
bool enabled);
205 Q_REVISION(6, 4)
void setSkyBoxCubeMap(QQuick3DCubeMapTexture *newSkyBoxCubeMap);
207 Q_REVISION(6, 4)
void setLightmapper(QQuick3DLightmapper *lightmapper);
209 Q_REVISION(6, 5)
void setDebugSettings(QQuick3DDebugSettings *newDebugSettings);
210 Q_REVISION(6, 5)
void setScissorRect(QRect scissorRect);
212 Q_REVISION(6, 5)
void setFog(QQuick3DFog *fog);
214 Q_REVISION(6, 9)
void setOitMethod(QQuick3DSceneEnvironment::QQuick3DEnvironmentOITMethod mode);
217 void antialiasingModeChanged();
218 void antialiasingQualityChanged();
219 void temporalAAEnabledChanged();
220 void temporalAAStrengthChanged();
222 void backgroundModeChanged();
223 void clearColorChanged();
225 void aoStrengthChanged();
226 void aoDistanceChanged();
227 void aoSoftnessChanged();
228 void aoDitherChanged();
229 void aoSampleRateChanged();
230 void aoBiasChanged();
231 Q_REVISION(6, 5)
void aoEnabledChanged();
233 void lightProbeChanged();
234 void probeExposureChanged();
235 void probeHorizonChanged();
236 void probeOrientationChanged();
238 void depthTestEnabledChanged();
239 void depthPrePassEnabledChanged();
241 void tonemapModeChanged();
243 Q_REVISION(6, 4)
void skyboxBlurAmountChanged();
244 Q_REVISION(6, 4)
void specularAAEnabledChanged();
245 Q_REVISION(6, 4)
void lightmapperChanged();
246 Q_REVISION(6, 4)
void skyBoxCubeMapChanged();
248 Q_REVISION(6, 5)
void debugSettingsChanged();
249 Q_REVISION(6, 5)
void scissorRectChanged();
251 Q_REVISION(6, 5)
void fogChanged();
253 Q_REVISION(6, 9)
void oitMethodChanged();
256 QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override;
257 void itemChange(ItemChange,
const ItemChangeData &) override;
258 virtual const QVector<QQuick3DEffect *> &effectList()
const;
259 virtual bool useBuiltinTonemapper()
const;
262 friend class QQuick3DSceneRenderer;
264 static constexpr float defaultAoDistance() {
return 5.0f; }
266 QVector<QQuick3DEffect *> m_effects;
268 static void qmlAppendEffect(QQmlListProperty<QQuick3DEffect> *list, QQuick3DEffect *effect);
269 static QQuick3DEffect *qmlEffectAt(QQmlListProperty<QQuick3DEffect> *list, qsizetype index);
270 static qsizetype qmlEffectsCount(QQmlListProperty<QQuick3DEffect> *list);
271 static void qmlClearEffects(QQmlListProperty<QQuick3DEffect> *list);
273 void updateSceneManager(QQuick3DSceneManager *manager);
275 QQuick3DEnvironmentAAModeValues m_antialiasingMode = NoAA;
276 QQuick3DEnvironmentAAQualityValues m_antialiasingQuality = High;
277 bool m_temporalAAEnabled =
false;
278 float m_temporalAAStrength = 0.3f;
279 bool m_specularAAEnabled =
false;
281 QQuick3DEnvironmentBackgroundTypes m_backgroundMode = Transparent;
282 QColor m_clearColor = Qt::black;
284 float m_aoStrength = 0.0f;
285 float m_aoDistance = defaultAoDistance();
286 float m_aoSoftness = 50.0f;
287 float m_aoBias = 0.0f;
288 int m_aoSampleRate = 2;
289 bool m_aoDither =
false;
290 bool m_aoEnabled =
false;
291 QQuick3DTexture *m_lightProbe =
nullptr;
292 float m_probeExposure = 1.0f;
293 float m_probeHorizon = 0.0f;
294 QVector3D m_probeOrientation;
296 bool m_depthTestEnabled =
true;
297 bool m_depthPrePassEnabled =
false;
298 QQuick3DEnvironmentTonemapModes m_tonemapMode = QQuick3DEnvironmentTonemapModes::TonemapModeLinear;
299 float m_skyboxBlurAmount = 0.0f;
300 QQuick3DLightmapper *m_lightmapper =
nullptr;
301 QMetaObject::Connection m_lightmapperSignalConnection;
302 QQuick3DCubeMapTexture *m_skyBoxCubeMap =
nullptr;
303 QQuick3DDebugSettings *m_debugSettings =
nullptr;
305 QMetaObject::Connection m_debugSettingsSignalConnection;
306 bool m_gridEnabled =
false;
307 uint m_gridFlags = 0;
308 float m_gridScale = 1.0f;
309 QQuick3DFog *m_fog =
nullptr;
310 QMetaObject::Connection m_fogSignalConnection;
311 QQuick3DEnvironmentOITMethod m_oitMethod = QQuick3DEnvironmentOITMethod::OITNone;