43 Q_PROPERTY(QQuick3DEnvironmentAAModeValues antialiasingMode READ antialiasingMode WRITE setAntialiasingMode NOTIFY antialiasingModeChanged)
44 Q_PROPERTY(QQuick3DEnvironmentAAQualityValues antialiasingQuality READ antialiasingQuality WRITE setAntialiasingQuality NOTIFY antialiasingQualityChanged)
46 Q_PROPERTY(QQuick3DEnvironmentTemporalAAMode temporalAAMode READ temporalAAMode WRITE setTemporalAAMode NOTIFY temporalAAModeChanged REVISION(6, 11))
47 Q_PROPERTY(
bool temporalAAEnabled READ temporalAAEnabled WRITE setTemporalAAEnabled NOTIFY temporalAAEnabledChanged)
48 Q_PROPERTY(
float temporalAAStrength READ temporalAAStrength WRITE setTemporalAAStrength NOTIFY temporalAAStrengthChanged)
49 Q_PROPERTY(QQuick3DEnvironmentBackgroundTypes backgroundMode READ backgroundMode WRITE setBackgroundMode NOTIFY backgroundModeChanged)
50 Q_PROPERTY(QColor clearColor READ clearColor WRITE setClearColor NOTIFY clearColorChanged)
51 Q_PROPERTY(
bool depthTestEnabled READ depthTestEnabled WRITE setDepthTestEnabled NOTIFY depthTestEnabledChanged)
52 Q_PROPERTY(
bool depthPrePassEnabled READ depthPrePassEnabled WRITE setDepthPrePassEnabled NOTIFY depthPrePassEnabledChanged)
54 Q_PROPERTY(
float aoStrength READ aoStrength WRITE setAoStrength NOTIFY aoStrengthChanged)
55 Q_PROPERTY(
float aoDistance READ aoDistance WRITE setAoDistance NOTIFY aoDistanceChanged)
56 Q_PROPERTY(
float aoSoftness READ aoSoftness WRITE setAoSoftness NOTIFY aoSoftnessChanged)
57 Q_PROPERTY(
bool aoDither READ aoDither WRITE setAoDither NOTIFY aoDitherChanged)
58 Q_PROPERTY(
int aoSampleRate READ aoSampleRate WRITE setAoSampleRate NOTIFY aoSampleRateChanged)
59 Q_PROPERTY(
float aoBias READ aoBias WRITE setAoBias NOTIFY aoBiasChanged)
60 Q_PROPERTY(
bool aoEnabled READ aoEnabled WRITE setAoEnabled NOTIFY aoEnabledChanged REVISION(6, 5))
62 Q_PROPERTY(QQuick3DTexture *lightProbe READ lightProbe WRITE setLightProbe NOTIFY lightProbeChanged)
63 Q_PROPERTY(QQuick3DSkyMaterial *skyMaterial READ skyMaterial WRITE setSkyMaterial NOTIFY skyMaterialChanged REVISION(6, 12))
64 Q_PROPERTY(
float probeExposure READ probeExposure WRITE setProbeExposure NOTIFY probeExposureChanged)
65 Q_PROPERTY(
float probeHorizon READ probeHorizon WRITE setProbeHorizon NOTIFY probeHorizonChanged)
66 Q_PROPERTY(QVector3D probeOrientation READ probeOrientation WRITE setProbeOrientation NOTIFY probeOrientationChanged)
68 Q_PROPERTY(QQuick3DCubeMapTexture *skyBoxCubeMap READ skyBoxCubeMap WRITE setSkyBoxCubeMap NOTIFY skyBoxCubeMapChanged REVISION(6, 4))
70 Q_PROPERTY(QQuick3DEnvironmentTonemapModes tonemapMode READ tonemapMode WRITE setTonemapMode NOTIFY tonemapModeChanged)
72 Q_PROPERTY(QQmlListProperty<QQuick3DEffect> effects READ effects)
74 Q_PROPERTY(
float skyboxBlurAmount READ skyboxBlurAmount WRITE setSkyboxBlurAmount NOTIFY skyboxBlurAmountChanged REVISION(6, 4))
75 Q_PROPERTY(
bool specularAAEnabled READ specularAAEnabled WRITE setSpecularAAEnabled NOTIFY specularAAEnabledChanged REVISION(6, 4))
77 Q_PROPERTY(QQuick3DLightmapper *lightmapper READ lightmapper WRITE setLightmapper NOTIFY lightmapperChanged REVISION(6, 4))
79 Q_PROPERTY(QQuick3DDebugSettings *debugSettings READ debugSettings WRITE setDebugSettings NOTIFY debugSettingsChanged REVISION(6, 5))
80 Q_PROPERTY(QRect scissorRect READ scissorRect WRITE setScissorRect NOTIFY scissorRectChanged REVISION(6, 5))
82 Q_PROPERTY(QQuick3DFog *fog READ fog WRITE setFog NOTIFY fogChanged REVISION(6, 5))
84 Q_PROPERTY(QQuick3DEnvironmentOITMethod oitMethod READ oitMethod WRITE setOitMethod NOTIFY oitMethodChanged REVISION(6, 9))
86 QML_NAMED_ELEMENT(SceneEnvironment)
90 enum QQuick3DEnvironmentAAModeValues {
96 Q_ENUM(QQuick3DEnvironmentAAModeValues)
98 enum QQuick3DEnvironmentAAQualityValues {
103 Q_ENUM(QQuick3DEnvironmentAAQualityValues)
105 enum QQuick3DEnvironmentBackgroundTypes {
113 Q_ENUM(QQuick3DEnvironmentBackgroundTypes)
115 enum QQuick3DEnvironmentTonemapModes {
119 TonemapModeHejlDawson,
122 Q_ENUM(QQuick3DEnvironmentTonemapModes)
124 enum QQuick3DEnvironmentOITMethod
130 Q_ENUM(QQuick3DEnvironmentOITMethod)
132 enum QQuick3DEnvironmentTemporalAAMode
137 Q_ENUM(QQuick3DEnvironmentTemporalAAMode)
139 explicit QQuick3DSceneEnvironment(QQuick3DObject *parent =
nullptr);
140 ~QQuick3DSceneEnvironment() override;
142 QQuick3DEnvironmentAAModeValues antialiasingMode()
const;
143 QQuick3DEnvironmentAAQualityValues antialiasingQuality()
const;
144 Q_REVISION(6, 11) QQuick3DEnvironmentTemporalAAMode temporalAAMode()
const;
145 bool temporalAAEnabled()
const;
146 float temporalAAStrength()
const;
148 QQuick3DEnvironmentBackgroundTypes backgroundMode()
const;
149 QColor clearColor()
const;
151 float aoStrength()
const;
152 float aoDistance()
const;
153 float aoSoftness()
const;
154 bool aoDither()
const;
155 int aoSampleRate()
const;
156 float aoBias()
const;
157 Q_REVISION(6, 5)
bool aoEnabled()
const;
158 Q_REVISION(6, 5)
void setAoEnabled(
bool newAoEnabled);
160 QQuick3DTexture *lightProbe()
const;
161 Q_REVISION(6, 12) QQuick3DSkyMaterial *skyMaterial()
const;
162 float probeExposure()
const;
163 float probeHorizon()
const;
164 QVector3D probeOrientation()
const;
166 bool depthTestEnabled()
const;
167 bool depthPrePassEnabled()
const;
169 QQuick3DEnvironmentTonemapModes tonemapMode()
const;
171 QQmlListProperty<QQuick3DEffect> effects();
173 Q_REVISION(6, 4)
float skyboxBlurAmount()
const;
174 Q_REVISION(6, 4)
bool specularAAEnabled()
const;
175 Q_REVISION(6, 4) QQuick3DLightmapper *lightmapper()
const;
176 Q_REVISION(6, 4) QQuick3DCubeMapTexture *skyBoxCubeMap()
const;
178 Q_REVISION(6, 5) QQuick3DDebugSettings *debugSettings()
const;
179 Q_REVISION(6, 5) QRect scissorRect()
const;
181 Q_REVISION(6, 5) QQuick3DFog *fog()
const;
183 QQuick3DEnvironmentOITMethod Q_REVISION(6, 9) oitMethod()
const;
185 bool gridEnabled()
const;
186 void setGridEnabled(
bool newGridEnabled);
188 float gridScale()
const;
189 void setGridScale(
float newGridScale);
191 uint gridFlags()
const;
192 void setGridFlags(uint newGridFlags);
195 void setAntialiasingMode(QQuick3DSceneEnvironment::QQuick3DEnvironmentAAModeValues antialiasingMode);
196 void setAntialiasingQuality(QQuick3DSceneEnvironment::QQuick3DEnvironmentAAQualityValues antialiasingQuality);
197 Q_REVISION(6, 11)
void setTemporalAAMode(
const QQuick3DEnvironmentTemporalAAMode &newTemporalAAMode);
198 void setTemporalAAEnabled(
bool temporalAAEnabled);
199 void setTemporalAAStrength(
float strength);
201 void setBackgroundMode(QQuick3DSceneEnvironment::QQuick3DEnvironmentBackgroundTypes backgroundMode);
202 void setClearColor(
const QColor &clearColor);
204 void setAoStrength(
float aoStrength);
205 void setAoDistance(
float aoDistance);
206 void setAoSoftness(
float aoSoftness);
207 void setAoDither(
bool aoDither);
208 void setAoSampleRate(
int aoSampleRate);
209 void setAoBias(
float aoBias);
211 void setLightProbe(QQuick3DTexture *lightProbe);
212 Q_REVISION(6, 12)
void setSkyMaterial(QQuick3DSkyMaterial *skyMaterial);
213 void setProbeExposure(
float probeExposure);
214 void setProbeHorizon(
float probeHorizon);
215 void setProbeOrientation(
const QVector3D &orientation);
217 void setDepthTestEnabled(
bool depthTestEnabled);
218 void setDepthPrePassEnabled(
bool depthPrePassEnabled);
220 void setTonemapMode(QQuick3DSceneEnvironment::QQuick3DEnvironmentTonemapModes tonemapMode);
222 Q_REVISION(6, 4)
void setSkyboxBlurAmount(
float newSkyboxBlurAmount);
223 Q_REVISION(6, 4)
void setSpecularAAEnabled(
bool enabled);
224 Q_REVISION(6, 4)
void setSkyBoxCubeMap(QQuick3DCubeMapTexture *newSkyBoxCubeMap);
226 Q_REVISION(6, 4)
void setLightmapper(QQuick3DLightmapper *lightmapper);
228 Q_REVISION(6, 5)
void setDebugSettings(QQuick3DDebugSettings *newDebugSettings);
229 Q_REVISION(6, 5)
void setScissorRect(QRect scissorRect);
231 Q_REVISION(6, 5)
void setFog(QQuick3DFog *fog);
233 Q_REVISION(6, 9)
void setOitMethod(QQuick3DSceneEnvironment::QQuick3DEnvironmentOITMethod mode);
236 void antialiasingModeChanged();
237 void antialiasingQualityChanged();
238 Q_REVISION(6, 11)
void temporalAAModeChanged();
239 void temporalAAEnabledChanged();
240 void temporalAAStrengthChanged();
242 void backgroundModeChanged();
243 void clearColorChanged();
245 void aoStrengthChanged();
246 void aoDistanceChanged();
247 void aoSoftnessChanged();
248 void aoDitherChanged();
249 void aoSampleRateChanged();
250 void aoBiasChanged();
251 Q_REVISION(6, 5)
void aoEnabledChanged();
253 void lightProbeChanged();
254 Q_REVISION(6, 12)
void skyMaterialChanged();
255 void probeExposureChanged();
256 void probeHorizonChanged();
257 void probeOrientationChanged();
259 void depthTestEnabledChanged();
260 void depthPrePassEnabledChanged();
262 void tonemapModeChanged();
264 Q_REVISION(6, 4)
void skyboxBlurAmountChanged();
265 Q_REVISION(6, 4)
void specularAAEnabledChanged();
266 Q_REVISION(6, 4)
void lightmapperChanged();
267 Q_REVISION(6, 4)
void skyBoxCubeMapChanged();
269 Q_REVISION(6, 5)
void debugSettingsChanged();
270 Q_REVISION(6, 5)
void scissorRectChanged();
272 Q_REVISION(6, 5)
void fogChanged();
274 Q_REVISION(6, 9)
void oitMethodChanged();
277 QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override;
278 void itemChange(ItemChange,
const ItemChangeData &) override;
279 virtual const QVector<QQuick3DEffect *> &effectList()
const;
280 virtual bool useBuiltinTonemapper()
const;
283 friend class QQuick3DSceneRenderer;
285 enum InternalDirtyFlag : quint32
287 LightmapperDirty = 0x1,
289 using InternalDirtyFlagT = std::underlying_type_t<InternalDirtyFlag>;
291 static constexpr float defaultAoDistance() {
return 5.0f; }
293 QVector<QQuick3DEffect *> m_effects;
295 static void qmlAppendEffect(QQmlListProperty<QQuick3DEffect> *list, QQuick3DEffect *effect);
296 static QQuick3DEffect *qmlEffectAt(QQmlListProperty<QQuick3DEffect> *list, qsizetype index);
297 static qsizetype qmlEffectsCount(QQmlListProperty<QQuick3DEffect> *list);
298 static void qmlClearEffects(QQmlListProperty<QQuick3DEffect> *list);
300 void updateSceneManager(QQuick3DSceneManager *manager);
302 QQuick3DEnvironmentAAModeValues m_antialiasingMode = NoAA;
303 QQuick3DEnvironmentAAQualityValues m_antialiasingQuality = High;
304 QQuick3DEnvironmentTemporalAAMode m_temporalAAMode = TAADefault;
305 bool m_temporalAAEnabled =
false;
306 float m_temporalAAStrength = 0.3f;
307 bool m_specularAAEnabled =
false;
309 QQuick3DEnvironmentBackgroundTypes m_backgroundMode = Transparent;
310 QColor m_clearColor = Qt::black;
312 float m_aoStrength = 0.0f;
313 float m_aoDistance = defaultAoDistance();
314 float m_aoSoftness = 50.0f;
315 float m_aoBias = 0.0f;
316 int m_aoSampleRate = 2;
317 bool m_aoDither =
false;
318 bool m_aoEnabled =
false;
319 QQuick3DTexture *m_lightProbe =
nullptr;
320 QQuick3DSkyMaterial *m_skyMaterial =
nullptr;
321 float m_probeExposure = 1.0f;
322 float m_probeHorizon = 0.0f;
323 QVector3D m_probeOrientation;
325 bool m_depthTestEnabled =
true;
326 bool m_depthPrePassEnabled =
false;
327 QQuick3DEnvironmentTonemapModes m_tonemapMode = QQuick3DEnvironmentTonemapModes::TonemapModeLinear;
328 float m_skyboxBlurAmount = 0.0f;
329 QQuick3DLightmapper *m_lightmapper =
nullptr;
330 QMetaObject::Connection m_lightmapperSignalConnection;
331 QQuick3DCubeMapTexture *m_skyBoxCubeMap =
nullptr;
332 QQuick3DDebugSettings *m_debugSettings =
nullptr;
334 QMetaObject::Connection m_debugSettingsSignalConnection;
335 bool m_gridEnabled =
false;
336 uint m_gridFlags = 0;
337 float m_gridScale = 1.0f;
338 QQuick3DFog *m_fog =
nullptr;
339 QMetaObject::Connection m_fogSignalConnection;
340 QQuick3DEnvironmentOITMethod m_oitMethod = QQuick3DEnvironmentOITMethod::OITNone;
341 InternalDirtyFlagT m_dirtyFlags = { LightmapperDirty };