42 Q_PROPERTY(QQuick3DEnvironmentAAModeValues antialiasingMode READ antialiasingMode WRITE setAntialiasingMode NOTIFY antialiasingModeChanged)
43 Q_PROPERTY(QQuick3DEnvironmentAAQualityValues antialiasingQuality READ antialiasingQuality WRITE setAntialiasingQuality NOTIFY antialiasingQualityChanged)
45 Q_PROPERTY(QQuick3DEnvironmentTemporalAAMode temporalAAMode READ temporalAAMode WRITE setTemporalAAMode NOTIFY temporalAAModeChanged REVISION(6, 11))
46 Q_PROPERTY(
bool temporalAAEnabled READ temporalAAEnabled WRITE setTemporalAAEnabled NOTIFY temporalAAEnabledChanged)
47 Q_PROPERTY(
float temporalAAStrength READ temporalAAStrength WRITE setTemporalAAStrength NOTIFY temporalAAStrengthChanged)
48 Q_PROPERTY(QQuick3DEnvironmentBackgroundTypes backgroundMode READ backgroundMode WRITE setBackgroundMode NOTIFY backgroundModeChanged)
49 Q_PROPERTY(QColor clearColor READ clearColor WRITE setClearColor NOTIFY clearColorChanged)
50 Q_PROPERTY(
bool depthTestEnabled READ depthTestEnabled WRITE setDepthTestEnabled NOTIFY depthTestEnabledChanged)
51 Q_PROPERTY(
bool depthPrePassEnabled READ depthPrePassEnabled WRITE setDepthPrePassEnabled NOTIFY depthPrePassEnabledChanged)
53 Q_PROPERTY(
float aoStrength READ aoStrength WRITE setAoStrength NOTIFY aoStrengthChanged)
54 Q_PROPERTY(
float aoDistance READ aoDistance WRITE setAoDistance NOTIFY aoDistanceChanged)
55 Q_PROPERTY(
float aoSoftness READ aoSoftness WRITE setAoSoftness NOTIFY aoSoftnessChanged)
56 Q_PROPERTY(
bool aoDither READ aoDither WRITE setAoDither NOTIFY aoDitherChanged)
57 Q_PROPERTY(
int aoSampleRate READ aoSampleRate WRITE setAoSampleRate NOTIFY aoSampleRateChanged)
58 Q_PROPERTY(
float aoBias READ aoBias WRITE setAoBias NOTIFY aoBiasChanged)
59 Q_PROPERTY(
bool aoEnabled READ aoEnabled WRITE setAoEnabled NOTIFY aoEnabledChanged REVISION(6, 5))
61 Q_PROPERTY(QQuick3DTexture *lightProbe READ lightProbe WRITE setLightProbe NOTIFY lightProbeChanged)
62 Q_PROPERTY(
float probeExposure READ probeExposure WRITE setProbeExposure NOTIFY probeExposureChanged)
63 Q_PROPERTY(
float probeHorizon READ probeHorizon WRITE setProbeHorizon NOTIFY probeHorizonChanged)
64 Q_PROPERTY(QVector3D probeOrientation READ probeOrientation WRITE setProbeOrientation NOTIFY probeOrientationChanged)
66 Q_PROPERTY(QQuick3DCubeMapTexture *skyBoxCubeMap READ skyBoxCubeMap WRITE setSkyBoxCubeMap NOTIFY skyBoxCubeMapChanged REVISION(6, 4))
68 Q_PROPERTY(QQuick3DEnvironmentTonemapModes tonemapMode READ tonemapMode WRITE setTonemapMode NOTIFY tonemapModeChanged)
70 Q_PROPERTY(QQmlListProperty<QQuick3DEffect> effects READ effects)
72 Q_PROPERTY(
float skyboxBlurAmount READ skyboxBlurAmount WRITE setSkyboxBlurAmount NOTIFY skyboxBlurAmountChanged REVISION(6, 4))
73 Q_PROPERTY(
bool specularAAEnabled READ specularAAEnabled WRITE setSpecularAAEnabled NOTIFY specularAAEnabledChanged REVISION(6, 4))
75 Q_PROPERTY(QQuick3DLightmapper *lightmapper READ lightmapper WRITE setLightmapper NOTIFY lightmapperChanged REVISION(6, 4))
77 Q_PROPERTY(QQuick3DDebugSettings *debugSettings READ debugSettings WRITE setDebugSettings NOTIFY debugSettingsChanged REVISION(6, 5))
78 Q_PROPERTY(QRect scissorRect READ scissorRect WRITE setScissorRect NOTIFY scissorRectChanged REVISION(6, 5))
80 Q_PROPERTY(QQuick3DFog *fog READ fog WRITE setFog NOTIFY fogChanged REVISION(6, 5))
82 Q_PROPERTY(QQuick3DEnvironmentOITMethod oitMethod READ oitMethod WRITE setOitMethod NOTIFY oitMethodChanged REVISION(6, 9))
84 QML_NAMED_ELEMENT(SceneEnvironment)
88 enum QQuick3DEnvironmentAAModeValues {
94 Q_ENUM(QQuick3DEnvironmentAAModeValues)
96 enum QQuick3DEnvironmentAAQualityValues {
101 Q_ENUM(QQuick3DEnvironmentAAQualityValues)
103 enum QQuick3DEnvironmentBackgroundTypes {
110 Q_ENUM(QQuick3DEnvironmentBackgroundTypes)
112 enum QQuick3DEnvironmentTonemapModes {
116 TonemapModeHejlDawson,
119 Q_ENUM(QQuick3DEnvironmentTonemapModes)
121 enum QQuick3DEnvironmentOITMethod
127 Q_ENUM(QQuick3DEnvironmentOITMethod)
129 enum QQuick3DEnvironmentTemporalAAMode
134 Q_ENUM(QQuick3DEnvironmentTemporalAAMode)
136 explicit QQuick3DSceneEnvironment(QQuick3DObject *parent =
nullptr);
137 ~QQuick3DSceneEnvironment() override;
139 QQuick3DEnvironmentAAModeValues antialiasingMode()
const;
140 QQuick3DEnvironmentAAQualityValues antialiasingQuality()
const;
141 Q_REVISION(6, 11) QQuick3DEnvironmentTemporalAAMode temporalAAMode()
const;
142 bool temporalAAEnabled()
const;
143 float temporalAAStrength()
const;
145 QQuick3DEnvironmentBackgroundTypes backgroundMode()
const;
146 QColor clearColor()
const;
148 float aoStrength()
const;
149 float aoDistance()
const;
150 float aoSoftness()
const;
151 bool aoDither()
const;
152 int aoSampleRate()
const;
153 float aoBias()
const;
154 Q_REVISION(6, 5)
bool aoEnabled()
const;
155 Q_REVISION(6, 5)
void setAoEnabled(
bool newAoEnabled);
157 QQuick3DTexture *lightProbe()
const;
158 float probeExposure()
const;
159 float probeHorizon()
const;
160 QVector3D probeOrientation()
const;
162 bool depthTestEnabled()
const;
163 bool depthPrePassEnabled()
const;
165 QQuick3DEnvironmentTonemapModes tonemapMode()
const;
167 QQmlListProperty<QQuick3DEffect> effects();
169 Q_REVISION(6, 4)
float skyboxBlurAmount()
const;
170 Q_REVISION(6, 4)
bool specularAAEnabled()
const;
171 Q_REVISION(6, 4) QQuick3DLightmapper *lightmapper()
const;
172 Q_REVISION(6, 4) QQuick3DCubeMapTexture *skyBoxCubeMap()
const;
174 Q_REVISION(6, 5) QQuick3DDebugSettings *debugSettings()
const;
175 Q_REVISION(6, 5) QRect scissorRect()
const;
177 Q_REVISION(6, 5) QQuick3DFog *fog()
const;
179 QQuick3DEnvironmentOITMethod Q_REVISION(6, 9) oitMethod()
const;
181 bool gridEnabled()
const;
182 void setGridEnabled(
bool newGridEnabled);
184 float gridScale()
const;
185 void setGridScale(
float newGridScale);
187 uint gridFlags()
const;
188 void setGridFlags(uint newGridFlags);
191 void setAntialiasingMode(QQuick3DSceneEnvironment::QQuick3DEnvironmentAAModeValues antialiasingMode);
192 void setAntialiasingQuality(QQuick3DSceneEnvironment::QQuick3DEnvironmentAAQualityValues antialiasingQuality);
193 Q_REVISION(6, 11)
void setTemporalAAMode(
const QQuick3DEnvironmentTemporalAAMode &newTemporalAAMode);
194 void setTemporalAAEnabled(
bool temporalAAEnabled);
195 void setTemporalAAStrength(
float strength);
197 void setBackgroundMode(QQuick3DSceneEnvironment::QQuick3DEnvironmentBackgroundTypes backgroundMode);
198 void setClearColor(
const QColor &clearColor);
200 void setAoStrength(
float aoStrength);
201 void setAoDistance(
float aoDistance);
202 void setAoSoftness(
float aoSoftness);
203 void setAoDither(
bool aoDither);
204 void setAoSampleRate(
int aoSampleRate);
205 void setAoBias(
float aoBias);
207 void setLightProbe(QQuick3DTexture *lightProbe);
208 void setProbeExposure(
float probeExposure);
209 void setProbeHorizon(
float probeHorizon);
210 void setProbeOrientation(
const QVector3D &orientation);
212 void setDepthTestEnabled(
bool depthTestEnabled);
213 void setDepthPrePassEnabled(
bool depthPrePassEnabled);
215 void setTonemapMode(QQuick3DSceneEnvironment::QQuick3DEnvironmentTonemapModes tonemapMode);
217 Q_REVISION(6, 4)
void setSkyboxBlurAmount(
float newSkyboxBlurAmount);
218 Q_REVISION(6, 4)
void setSpecularAAEnabled(
bool enabled);
219 Q_REVISION(6, 4)
void setSkyBoxCubeMap(QQuick3DCubeMapTexture *newSkyBoxCubeMap);
221 Q_REVISION(6, 4)
void setLightmapper(QQuick3DLightmapper *lightmapper);
223 Q_REVISION(6, 5)
void setDebugSettings(QQuick3DDebugSettings *newDebugSettings);
224 Q_REVISION(6, 5)
void setScissorRect(QRect scissorRect);
226 Q_REVISION(6, 5)
void setFog(QQuick3DFog *fog);
228 Q_REVISION(6, 9)
void setOitMethod(QQuick3DSceneEnvironment::QQuick3DEnvironmentOITMethod mode);
231 void antialiasingModeChanged();
232 void antialiasingQualityChanged();
233 Q_REVISION(6, 11)
void temporalAAModeChanged();
234 void temporalAAEnabledChanged();
235 void temporalAAStrengthChanged();
237 void backgroundModeChanged();
238 void clearColorChanged();
240 void aoStrengthChanged();
241 void aoDistanceChanged();
242 void aoSoftnessChanged();
243 void aoDitherChanged();
244 void aoSampleRateChanged();
245 void aoBiasChanged();
246 Q_REVISION(6, 5)
void aoEnabledChanged();
248 void lightProbeChanged();
249 void probeExposureChanged();
250 void probeHorizonChanged();
251 void probeOrientationChanged();
253 void depthTestEnabledChanged();
254 void depthPrePassEnabledChanged();
256 void tonemapModeChanged();
258 Q_REVISION(6, 4)
void skyboxBlurAmountChanged();
259 Q_REVISION(6, 4)
void specularAAEnabledChanged();
260 Q_REVISION(6, 4)
void lightmapperChanged();
261 Q_REVISION(6, 4)
void skyBoxCubeMapChanged();
263 Q_REVISION(6, 5)
void debugSettingsChanged();
264 Q_REVISION(6, 5)
void scissorRectChanged();
266 Q_REVISION(6, 5)
void fogChanged();
268 Q_REVISION(6, 9)
void oitMethodChanged();
271 QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override;
272 void itemChange(ItemChange,
const ItemChangeData &) override;
273 virtual const QVector<QQuick3DEffect *> &effectList()
const;
274 virtual bool useBuiltinTonemapper()
const;
277 friend class QQuick3DSceneRenderer;
279 static constexpr float defaultAoDistance() {
return 5.0f; }
281 QVector<QQuick3DEffect *> m_effects;
283 static void qmlAppendEffect(QQmlListProperty<QQuick3DEffect> *list, QQuick3DEffect *effect);
284 static QQuick3DEffect *qmlEffectAt(QQmlListProperty<QQuick3DEffect> *list, qsizetype index);
285 static qsizetype qmlEffectsCount(QQmlListProperty<QQuick3DEffect> *list);
286 static void qmlClearEffects(QQmlListProperty<QQuick3DEffect> *list);
288 void updateSceneManager(QQuick3DSceneManager *manager);
290 QQuick3DEnvironmentAAModeValues m_antialiasingMode = NoAA;
291 QQuick3DEnvironmentAAQualityValues m_antialiasingQuality = High;
292 QQuick3DEnvironmentTemporalAAMode m_temporalAAMode = TAADefault;
293 bool m_temporalAAEnabled =
false;
294 float m_temporalAAStrength = 0.3f;
295 bool m_specularAAEnabled =
false;
297 QQuick3DEnvironmentBackgroundTypes m_backgroundMode = Transparent;
298 QColor m_clearColor = Qt::black;
300 float m_aoStrength = 0.0f;
301 float m_aoDistance = defaultAoDistance();
302 float m_aoSoftness = 50.0f;
303 float m_aoBias = 0.0f;
304 int m_aoSampleRate = 2;
305 bool m_aoDither =
false;
306 bool m_aoEnabled =
false;
307 QQuick3DTexture *m_lightProbe =
nullptr;
308 float m_probeExposure = 1.0f;
309 float m_probeHorizon = 0.0f;
310 QVector3D m_probeOrientation;
312 bool m_depthTestEnabled =
true;
313 bool m_depthPrePassEnabled =
false;
314 QQuick3DEnvironmentTonemapModes m_tonemapMode = QQuick3DEnvironmentTonemapModes::TonemapModeLinear;
315 float m_skyboxBlurAmount = 0.0f;
316 QQuick3DLightmapper *m_lightmapper =
nullptr;
317 QMetaObject::Connection m_lightmapperSignalConnection;
318 QQuick3DCubeMapTexture *m_skyBoxCubeMap =
nullptr;
319 QQuick3DDebugSettings *m_debugSettings =
nullptr;
321 QMetaObject::Connection m_debugSettingsSignalConnection;
322 bool m_gridEnabled =
false;
323 uint m_gridFlags = 0;
324 float m_gridScale = 1.0f;
325 QQuick3DFog *m_fog =
nullptr;
326 QMetaObject::Connection m_fogSignalConnection;
327 QQuick3DEnvironmentOITMethod m_oitMethod = QQuick3DEnvironmentOITMethod::OITNone;