SceneEnvironment QML Type

Lets you configure how a scene is rendered. More...

Import Statement: import QtQuick3D



Detailed Description

SceneEnvironment defines a set of global properties for how a scene should be rendered.

Property Documentation

[since 5.15] antialiasingMode : enumeration

This property controls the antialiasing mode that is applied when rendering the scene.

Possible values are:

SceneEnvironment.NoAANo antialiasing is applied.
SceneEnvironment.SSAASupersample antialiasing is applied.
SceneEnvironment.MSAAMultisample antialiasing is applied.
SceneEnvironment.ProgressiveAAProgressive antialiasing is applied.

The default value is SceneEnvironment.NoAA.


The scene is rendered in a higher resolution, and then scaled down to actual resolution.

Pros: High quality. Antialiases all scene content and not just geometry silhouettes.

Cons: Usually more expensive than MSAA. Increases video memory usage. Only supported with View3D items with renderMode set to Offscreen as the technique implies rendering to a texture first.


The edges of geometry are super-sampled, resulting in smoother silhouettes. This technique has no effect on the materials inside geometry, however.

Pros: Works with any View3D item regardless of the renderMode. Good results on geometry silhouettes, where aliasing is often most noticeable; works with fast animation without issues. Performance depends purely on the system's (GPU) capabilities.

Cons: Does not help with texture or reflection issues. Increases video memory usage. Can be expensive to use on less powerful graphics hardware. When using View3D items with a renderMode other than Offscreen, MSAA can only be controlled on a per-window basis, it cannot be enabled or disabled separately for the individual View3D items.

Note: For View3D items with a renderMode other than Offscreen, multisampling can only be enabled via the QSurfaceFormat of the QQuickWindow or QQuickView. This will then affect all content, both 2D and 3D, in that window.

Progressive antialiasing

This property enables and sets the level of progressive antialiasing applied to the scene.

When all content of the scene has stopped moving, the camera is jiggled very slightly between frames, and the result of each new frame is blended with the previous frames. The more frames you accumulate, the better looking the result.

Pros: Provides great results when all content in the scene is standing still.

Cons: Does not take effect if any visual changes are occurring. Expensive due to having to accumulate and blend. Increases video memory usage.

This property was introduced in Qt 5.15.

[since 5.15] antialiasingQuality : enumeration

This property sets the level of antialiasing applied to the scene. Behavior depends on used antialiasingMode. With antialiasingMode property set to NoAA this property doesn't have an effect.

Possible values are:

SceneEnvironment.MediumSSAA: Antialiasing uses 1.2x supersampling resolution.
MSAA: Antialiasing uses 2 samples per pixel.
ProgressiveAA: Antialiasing uses 2 frames for final image.
SceneEnvironment.HighSSAA: Antialiasing uses 1.5x supersampling resolution.
MSAA: Antialiasing uses 4 samples per pixel.
ProgressiveAA: Antialiasing uses 4 frames for final image.
SceneEnvironment.VeryHighSSAA: Antialiasing uses 2.0x supersampling resolution.
MSAA: Antialiasing uses 8 samples per pixel.
ProgressiveAA: Antialiasing uses 8 frames for final image.

The default value is SceneEnvironment.High

This property was introduced in Qt 5.15.

aoBias : float

This property defines a cutoff distance preventing objects from exhibiting ambient occlusion at close distances. Higher values increase the distance required between objects before ambient occlusion is seen.

Note: If you see ambient occlusion shadowing on objects where there should be no shadowing, increase the value slightly to clip away close results.

The default value is 0.0.

aoDistance : float

This property defines roughly how far ambient occlusion shadows spread away from objects. Greater distances cause increasing impact to performance.

The default value is 5.0.

aoDither : bool

When this property is enabled it scatters the edges of the ambient occlusion shadow bands to improve smoothness (at the risk of sometimes producing obvious patterned artifacts).

Note: Very large distances between the clipping planes of your camera may cause problems with ambient occlusion. If you are seeing odd banding in your ambient occlusion, try adjusting the clipFar property of your camera to be closer to your content.

The default value is false.

See also PerspectiveCamera.clipFar and OrthographicCamera.clipFar.

aoSampleRate : int

This property defines ambient occlusion quality (more shades of gray) at the expense of performance.

The value must be 2, 3, or 4. The default value is 2.

aoSoftness : float

This property defines how smooth the edges of the ambient occlusion shading are.

The value must be between 0.0 and 50.0. The default value is 50.0.

aoStrength : float

This property defines the amount of ambient occulusion applied. Ambient occulusion is a form of approximated global illumination which causes non-directional self-shadowing where objects are close together. A value of 100 causes full darkness shadows; lower values cause the shadowing to appear lighter. A value of 0 disables ambient occlusion entirely, improving performance at a cost to the visual realism of 3D objects rendered in the scene.

All values other than 0 have the same impact to the performance.

The default value is 0.0. The maximum value is 100.0.

backgroundMode : enumeration

This property controls if and how the background of the scene should be cleared.

Note: Clearing does not always happen: depending on the renderMode property the View3D may not perform any clearing on its own, in which case SceneEnvironment.Transparent and SceneEnvironment.Color have no effect. Only the Offscreen mode (rendering into a texture) supports all clearing modes. With the Underlay mode, use QQuickWindow::setColor() or Window.color to control the clear color for the Qt Quick scene. SkyBox is handled differently, as it implies drawing actual geometry, so that works identically across all render modes.

SceneEnvironment.TransparentThe scene is cleared to be transparent. This is useful to render 3D content on top of another item. This mode has no effect when the View3D is using a renderMode of Underlay or Overlay.
SceneEnvironment.ColorThe scene is cleared with the color specified by the clearColor property. This mode has no effect when the View3D is using a renderMode of Underlay or Overlay.
SceneEnvironment.SkyBoxThe scene will not be cleared, but instead a SkyBox or Skydome will be rendered. The SkyBox is defined using the HDRI map defined in the lightProbe property.

The default value is SceneEnvironment.Transparent

See also QQuickWindow::setColor() and Window::color.

clearColor : color

This property defines which color will be used to clear the viewport when using SceneEnvironment.Color for the backgroundMode property.

The default value is Qt::black

See also backgroundMode.

depthPrePassEnabled : bool

When enabled, the renderer performs a Z-prepass for opaque objects, meaning it renders them with a simple shader and color write disabled in order to get the depth buffer pre-filled before issuing draw calls for the main rendering passes.

This can improve performance depending on the scene contents. It is typically scenes with lots of overlapping objects and expensive fragment shading that benefit from this. At the same time, it is worth noting that the renderer performs front to back sorting for opaque objects, which in itself helps reducing unnecessary fragment shading, and therefore the Z-prepass does not always bring significant improvements.

On GPUs that use a tiled rendering architecture, which is common in mobile and embedded systems, it is recommended to set this to false.

The default value is false.

Note: This property has no effect when depth testing is disabled.

depthTestEnabled : bool

The default value is true. By default the renderer classifies the objects in the scene either as opaque or as semi-transparent. The objects (sub-meshes with the associated material) in the opaque list are rendered first, with depth testing and depth write enabled, providing optimal Z-culling for typical 3D objects that have no semi-transparent regions. The objects in the semi-transparent list are rendered with depth write disabled, although still with depth testing enabled (to test against the opaque objects), in back to front order (sorted based on their center point's distance from the camera). This allows correct blending ("see through") for 3D objects that involve semi-transparent regions on their surface, either due to the node opacity or due to some color or texture map in the material.

When this property is set to false, the Z-buffer is not written and tested against, the depth test is skipped, and all objects, including fully opaque ones, are rendered in one go, sorted back to front.

Setting this property to false should be rarely needed. It can be useful in scenes where it is known that there is little benefit in the two-round approach because either there are very few opaque objects, or they are transformed in a way that a single back to front sorted pass performs better.

Note: Setting this property to false may cause rendering errors in certain scenes. In addition, some features, such as shadows, ambient occlusion, SCREEN_TEXTURE and DEPTH_TEXTURE in custom materials and effects, will not behave correctly without enabling depth buffer usage.

Note: This flag has no control over the presence of a depth or depth-stencil buffer. Such buffers may still be allocated even when this is set to false.

[since 5.15] effects : List<QtQuick3D::Effect>

This property contains a list of post-processing effects that will be applied to the entire viewport. The result of each effect is fed to the next so the order is significant.

This property was introduced in Qt 5.15.

lightProbe : QtQuick3D::Texture

This property defines an image used to light the scene, either instead of, or in addition to standard lights.

The image is preferably a high-dynamic range image or a pre-generated cubemap. Pre-baking provides significant performance improvements at run time, because no time is spent on filtering and mipmap generation. If the source is a .hdr or other image, the GPU-based pre-processing happens at run time after loading the image file, and that can be potentially time consuming, in particular on embedded and mobile hardware. Therefore, it is strongly recommended that applications pre-process .hdr images at latest at build time, as described here.

Note: Using a Texture with sourceItem is not supported in combination with this property. Pre-filtering of all mip levels for dynamic Qt Quick content is typically not reasonable in practice due to performance implications.

probeExposure : float

This property modifies the amount of light emitted by the light probe.

By default exposure is set to is 1.0

probeHorizon : float

This property when defined with increasing values adds darkness (black) to the bottom half of the environment, forcing the lighting to come predominantly from the top of the image (and removing specific reflections from the lower half). This property is useful for accounting for a ground plane that would have the effect of obscuring the reflection of the light probe from the ground. This is necessary because light probe contributions come directily from the image without consideration for the content of the scene.

The expected value range for the probeHorizon property is between 0.0 and 1.0. Any value outside of this range will be clamped to the expected range.

By default probeHorizon is set to 0.0 which means the whole light probe is used without adjustment.

Note: The probeHorizon property only affects materials lighting, and has no effect on the rendering of the sky box.

probeOrientation : vector3d

This property when defines the orientation of the light probe. Orientation is defined in terms of euler angles in degrees over the x, y, and z axes.

Note: This value augments how the lightProbe Texture is sampled in combination with any texture rotations and offsets set on the lightProbe texture.

temporalAAEnabled : bool

When this property is enabled temporal antialiasing will be used.

The camera is jiggled very slightly between frames, and the result of each new frame is blended with the previous frame.

Note: Temporal antialiasing doesn't have an effect when antialiasingMode is MSAA.

Note: When combined with ProgressiveAA antialiasingMode, temporalAA is used when scene animates while ProgressiveAA is used once animations stop.

Pros: Due to the jiggling camera it finds real details that were otherwise lost; low impact on performance.

Cons: Fast-moving objects cause one-frame ghosting.

[since 5.15] temporalAAStrength : float

This property modifies the amount of temporal movement (antialiasing). This has an effect only when temporalAAEnabled property is true.

This property was introduced in Qt 5.15.

See also temporalAAEnabled.

[since 6.0] tonemapMode : enumeration

This property defines how colors are tonemapped before rendering. All rendering in Qt Quick 3D is performed in linear color space and can in many cases lead to generating color values that are not displayable. The tonemapMode determines the technique that is used to remap colors into a displayable range.

The default value is SceneEnvironment.TonemapModeLinear

SceneEnvironment.TonemapModeNoneAll Tonemapping is bypassed. This mode is useful when performing post processing effects.
SceneEnvironment.TonemapModeLinearLinear tonemapping is applied. Colors are gamma corrected and returned in sRGB color space.
SceneEnvironment.TonemapModeAcesAcademy Color Encoding System tonemapping is applied.
SceneEnvironment.TonemapModeHejlDawsonHejl-Dawson tonemapping is applied.
SceneEnvironment.TonemapModeFilmicFilmic tonemapping is applied.

Note: When using post processing effects, many effects expect untonemapped linear color data. It is important to bypass the built-in tonemapping in this case by using the SceneEnvironment.TonemapModeNone value.

This property was introduced in Qt 6.0.

© 2024 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.