SceneEnvironment QML Type

用于配置场景的渲染方式。更多

Import Statement: import QtQuick3D
Inherits:

Object3D

Inherited By:

ExtendedSceneEnvironment

属性

详细说明

SceneEnvironment 定义了一组场景渲染的全局属性。

注: QtQuick3D.Helpers 模块提供了一种ExtendedSceneEnvironment 类型,它继承自 SceneEnvironment 并在其上添加了许多内置特效。

要使用 SceneEnvironment 或ExtendedSceneEnvironment ,请将View3Denvironment property 与这些类型的实例关联起来。该对象可以内联声明,例如像这样:

View3D {
    environment: SceneEnvironment {
        antialiasingMode: SceneEnvironment.MSAA
        tonemapMode: SceneEnvironment.TonemapModeFilmic
        backgroundMode: SceneEnvironment.SkyBox
        lightProbe: Texture {
            source: "panoramic_hdri_background.hdr"
        }
    }
}

另外,也可以单独定义环境对象。然后,它可以被一个或多个View3D 对象引用。下面是一个示例代码片段,这次使用的是ExtendedSceneEnvironment

ExtendedSceneEnvironment {
    id: myEnv
    vignetteEnabled: true
}

View3D {
    width: parent.width / 2
    environment: myEnv
}

View3D {
    width: parent.width / 2
    x: parent.width / 2
    environment: myEnv
}

功能概述

另请参阅 ExtendedSceneEnvironment

属性文档

antialiasingMode : enumeration

该属性控制渲染场景时应用的抗锯齿模式。

可能的值有

常量说明
SceneEnvironment.NoAA不应用抗锯齿。
SceneEnvironment.SSAA应用超采样抗锯齿。
SceneEnvironment.MSAA应用多采样抗锯齿。
SceneEnvironment.ProgressiveAA应用渐进式抗锯齿。

默认值为SceneEnvironment.NoAA

超采样

以较高分辨率渲染场景,然后缩放到实际分辨率。

优点高质量。可反差所有场景内容,而不仅仅是几何轮廓。

缺点:通常比 MSAA 更昂贵。会增加视频内存使用量。支持View3D 项目中除 Inline 之外的所有渲染模式,但由于该技术意味着首先要渲染到纹理,因此使用 Underlay 或 Overlay 渲染模式启用 SSAA 会导致使用通常不需要的中间纹理和渲染传递,这意味着性能成本可能会更加明显。建议仅在默认渲染模式为 "离屏 "时使用 SSAA。

多重采样

对几何体的边缘进行超级采样,使轮廓更加平滑。但这种技术对几何体内部的材质没有影响。

优点适用于任何View3D 项目,与渲染模式无关。对几何体轮廓的效果很好,因为在几何体轮廓中混叠现象通常最明显;在快速动画中也能正常工作。性能完全取决于系统(GPU)的能力。

缺点:无助于解决纹理或反射问题。会增加视频内存使用量。在性能较弱的图形硬件上使用可能比较昂贵。可根据 renderMode 控制每个窗口或单个View3D 项目。在使用已应用特效的 Underlay/Overlay 或 Offscreen 时,可为每个View3D 项目控制 MSAA。另一方面,使用不带任何效果的 Underlay/Overlay 或 Inline 会使 MSAA 受控于每个窗口。

注意: 对于View3D 项目,如果使用的renderMode 不是 Underlay/Overlay(带效果的 Underlay/Overlay)或 Offscreen,则只能通过QQuickWindowQQuickViewQSurfaceFormat 启用多重采样。这将影响该窗口中的所有内容,包括 2D 和 3D 内容。

渐进式抗锯齿

该属性用于启用和设置应用于场景的渐进抗锯齿级别。

当场景中的所有内容都停止移动时,摄像机会在帧与帧之间轻微抖动,每个新帧的结果都会与之前的帧混合。累积的帧数越多,效果越好。

优点当场景中的所有内容都静止不动时,效果会很好。

缺点:在发生任何视觉变化时都不会生效。由于需要累积和混合,因此成本较高。增加视频内存使用量。

注意: 渐进式抗锯齿目前不支持多视图渲染,也不应在 VR/AR 应用程序中使用。

有关抗锯齿方法的更多讨论,请参阅 "抗锯齿最佳实践"。


antialiasingQuality : enumeration

此属性设置应用于场景的抗锯齿级别。行为取决于所使用的antialiasingMode 。当antialiasingMode 属性设置为NoAA 时,该属性不会产生影响。

可能的值有

常量说明
SceneEnvironment.MediumSSAA:抗锯齿使用 1.2 倍超采样分辨率。
MSAA:抗锯齿使用每个像素 2 个采样点。
ProgressiveAA:抗锯齿使用 2 帧最终图像。
SceneEnvironment.HighSSAA:抗锯齿使用 1.5 倍超采样分辨率。
MSAA:MSAA:抗锯齿技术使用每个像素 4 个采样点。
ProgressiveAA:抗锯齿技术使用 4 帧最终图像。
SceneEnvironment.VeryHighSSAA:抗锯齿使用 2.0 倍超采样分辨率。
MSAA:MSAA:抗锯齿技术使用每个像素 8 个采样点。
ProgressiveAA:抗锯齿对最终图像使用 8 帧。

默认值为SceneEnvironment.High


aoBias : real

该属性定义了防止物体在近距离显示环境遮挡的截止距离。数值越大,在出现环境遮挡之前物体之间所需的距离就越长。

注意: 如果在本应没有阴影的物体上看到环境遮挡阴影,可稍微增大该值,以消除近距离的效果。

默认值为 0.0。


aoDistance : real

该属性大致定义了环境闭塞阴影从物体扩散的距离。距离越远,对性能的影响越大。

默认值为 5.0。

图片为默认aoSoftness 和最大aoStrength

aoDistance 为 5aoDistance 为 1

注: 要获得视觉效果良好的屏幕空间环境闭塞效果,需要仔细调整一系列相关参数,如aoStrength,aoSoftness, aoDistance ,aoDither,aoBias, 和aoSampleRate

另请参见 aoStrengthaoSoftness


aoDither : bool

当启用该属性时,它会分散环境闭塞阴影带的边缘,以提高平滑度(有时可能会产生明显的图案伪影)。

注意: 相机剪辑平面之间的距离过大可能会导致环境光遮蔽出现问题。如果您在环境遮蔽中看到奇怪的条带,请尝试调整相机的clipFar 属性,使其更接近内容。

默认值为false

另请参阅 PerspectiveCamera.clipFarOrthographicCamera.clipFar


aoEnabled : bool [since 6.5]

启用或禁用环境遮蔽。

默认值为false ,表示已禁用环境遮蔽。

注: 如果aoStrengthaoDistance 为 0,那么将此属性设置为true 也会适当设置这些值,使环境遮蔽有效。

注: 要获得视觉效果良好的屏幕空间环境遮蔽,需要仔细调整一系列相关参数,如aoStrength,aoSoftness,aoDistance,aoDither,aoBiasaoSampleRate

该属性在 Qt 6.5 中引入。

另请参见 aoStrengthaoDistance


aoSampleRate : int

该属性以牺牲性能为代价定义环境闭塞的质量(更多灰色阴影)。

值必须为 2、3 或 4。默认值为 2。


aoSoftness : real

该属性定义环境遮蔽阴影边缘的平滑程度。

数值必须在 0.0 和 50.0 之间。默认值为 50.0。

图片为默认值aoDistance 和最大值aoStrength

软度为 50aoSoftness 为 25

注: 要获得视觉效果良好的屏幕空间环境闭塞效果,需要仔细调整一系列相关参数,如aoStrength, aoSoftness,aoDistance,aoDither,aoBias, 和aoSampleRate

另请参见 aoStrengthaoDistance


aoStrength : real

该属性定义了所应用的环境隐蔽量。环境遮蔽是一种近似全局光照的形式,会在物体靠近时产生非定向的自阴影。值为 100 时,会产生全黑阴影;值越小,阴影越淡。如果数值为 0,则会完全禁用环境光遮蔽,从而提高性能,但会影响场景中 3D 物体渲染的视觉逼真度。

0 以外的所有值对性能的影响相同。

默认值为 0.0。最大值为 100.0。

值为 0 相当于将aoEnabled 设置为 false。

图中为默认的aoSoftnessaoDistance

aoStrength 为 0(禁用 AO)aoStrength 为 100aoStrength 为 50

注: 要获得视觉效果良好的屏幕空间环境闭塞效果,需要仔细调整一系列相关参数,如 aoStrength、aoSoftness,aoDistance,aoDither,aoBiasaoSampleRate

另请参见 aoEnabled,aoDistance, 和aoSoftness


backgroundMode : enumeration

该属性控制是否以及如何清除场景背景。

注意: View 3D 背景颜色缓冲区的清除并不总是发生:根据renderMode 属性,View3D 本身可能不会执行任何清除操作,在这种情况下,SceneEnvironment.TransparentSceneEnvironment.Color 没有任何作用。只有默认的Offscreen render mode (渲染到纹理中)才支持所有的清除模式。在Underlay 模式下,使用QQuickWindow::setColor() 或Window.color 控制Qt Quick 场景的清除颜色。SkyBox 的处理方式不同,因为它意味着绘制实际的几何图形,所以在所有渲染模式下都能正常工作。

常量说明
SceneEnvironment.Transparent将场景清除为透明。这对于在另一个项目上渲染 3D 内容非常有用。当View3D 使用 Underlay 或 Overlay 渲染模式且未启用任何后期处理时,此模式不会产生任何影响。
SceneEnvironment.Color使用clearColor 属性指定的颜色清除场景。当View3D 使用 Underlay 或 Overlay 渲染模式且未启用任何后期处理时,该模式不起作用。
SceneEnvironment.SkyBox场景不会被清除,但会渲染一个 SkyBox 或 Skydome。SkyBox 是使用lightProbe 属性中定义的 HDRI 贴图定义的。
SceneEnvironment.SkyBoxCubeMap场景不会被清除,但会渲染一个 SkyBox 或 Skydome。SkyBox 是使用skyBoxCubeMap 属性中定义的立方体贴图定义的。

默认值为SceneEnvironment.Transparent

以下面的示例为例。苏珊娜模型应使用balsam 工具进行预处理,并来自glTF 示例模型库

import QtQuick
import QtQuick3D
import QtQuick3D.Helpers

Item {
    width: 1280
    height: 720

    View3D {
        id: v3d
        anchors.fill: parent

        environment: ExtendedSceneEnvironment {
            backgroundMode: SceneEnvironment.SkyBox
            lightProbe: Texture { source: "00455_OpenfootageNET_field_low.hdr" }

            glowEnabled: true
            glowStrength: 1.25
            glowBloom: 0.25
            glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive
        }

        DirectionalLight {
        }

        Suzanne {
            scale: Qt.vector3d(50, 50, 50)
            z: -500
        }

        PerspectiveCamera {
            id: camera
        }

        WasdController {
            controlledObject: camera
        }
    }
}

除了使用DirectionalLight 之外,我们还使用了基于图像的照明,并将探针纹理用作天空盒,结果如下:

如果没有光探测器会发生什么?

backgroundMode: SceneEnvironment.Transparent

这里的背景不是由View3D 提供的,而是由托管 2D 和 3D 场景的QQuickWindowQQuickView 提供的。照明仅基于DirectionalLight

使用固定的透明色:

backgroundMode: SceneEnvironment.Color
clearColor: "green"

另请参阅 lightProbe,QQuickWindow::setColor(),Window::color, 和View3D


clearColor : color

SceneEnvironment.Color 用于backgroundMode 属性时,该属性定义了用于清除视口的颜色。

默认值为Qt::black

另请参阅 backgroundMode


debugSettings : QtQuick3D::DebugSettings [since 6.5]

该属性指定了一个DebugSettings 对象,用于配置渲染器的调试工具。在构建过程中,SceneEnvironment 会自动创建一个与自身相关的DebugSettings 对象,因此通常不需要设置自定义的DebugSettings

启用线框模式渲染场景的示例:

可视化网格的法向量:

可视化镜面光照贡献:

该属性在 Qt 6.5 中引入。

另请参阅 DebugSettings


depthPrePassEnabled : bool

启用该属性后,渲染器会对不透明对象执行 Z-prepass(Z-prepass)处理,这意味着渲染器在渲染不透明对象时会禁用简单着色器和颜色写入功能,以便在为主要渲染处理发出绘制调用之前预先填充深度缓冲区。

这可以根据场景内容提高性能。通常情况下,有大量重叠对象和昂贵片段着色的场景会从中受益。同时,值得注意的是,渲染器会对不透明对象执行前后排序,这本身就有助于减少不必要的片段着色,因此 Z-prepass 并不总能带来显著的改善。

在使用平铺渲染架构(这在移动和嵌入式系统中很常见)的 GPU 上,建议将其设置为false

默认值为false

注意: 禁用深度测试时,此属性不会产生任何影响。


depthTestEnabled : bool

默认值为true 。默认情况下,渲染器会将场景中的对象分类为opaquesemi-transparent 。首先渲染opaque 列表中的对象(具有相关材质的子模型),并启用深度测试和深度写入,从而为没有半透明区域的典型 3D 物体提供最佳的 Z 剔除效果。semi-transparent 列表中的物体将在禁用深度写入的情况下进行渲染,但仍会启用深度测试(针对不透明物体进行测试),并按照从后向前的顺序(根据中心点与摄像机的距离排序)进行渲染。这样就可以正确混合("透视")三维物体的表面半透明区域,这些半透明区域可能是由于node opacity ,也可能是由于材质中的某些颜色或纹理贴图。

将此属性设置为false 时,Z 缓冲区不会被写入并进行测试,深度测试也会被跳过,所有物体(包括完全不透明的物体)都会按从前到后的顺序一次性渲染。

将此属性设置为false 应该很少需要。在一些场景中,使用两轮渲染的好处不大,因为不透明对象很少,或者这些对象的变换方式使得从后往前排序的单次渲染效果更好,这时就需要使用该属性。

注意: 将此属性设置为false 可能会在某些场景中导致渲染错误。此外,如果不启用深度缓冲区,自定义材质和特效中的阴影、环境闭塞、SCREEN_TEXTUREDEPTH_TEXTURE 等某些功能将无法正常运行。

注意: 该标记无法控制深度或深度模板缓冲区的存在。即使将其设置为false ,仍可能分配此类缓冲区。


effects : List<QtQuick3D::Effect>

此属性包含将应用于整个视口的后处理效果列表。每种效果的结果都会反馈给下一种效果,因此顺序非常重要。

注意: 由于技术原因,不支持在列表中多次添加相同的Effect 节点,这样会产生意想不到的结果。


fog : QtQuick3D::Fog [since 6.5]

当此属性设置为有效的Fog 对象时,它将用于配置渲染器的内置雾化支持。

默认值为空,表示没有雾。这相当于将enabled 设置为 false 的雾对象。

此属性在 Qt 6.5 中引入。

另请参阅 Fog


lightProbe : QtQuick3D::Texture

该属性定义了用于场景照明的图像,可以代替标准灯光,也可以作为标准灯光的补充。

图像最好是高动态范围图像或预生成的立方体地图。由于无需在滤波和生成立方体贴图上花费时间,预制图像在运行时可大大提高性能。如果源文件是 .hdr 或其他图像,基于 GPU 的预处理会在加载图像文件后的运行时进行,这可能会耗费大量时间,尤其是在嵌入式和移动硬件上。因此,强烈建议应用程序最迟在构建时对 .hdr 图像进行预处理,如此处所述。

注意: 不支持将纹理与sourceItem 结合使用。由于性能影响,对动态Qt Quick 内容的所有 mip 级别进行预过滤在实践中通常是不合理的。

有关基于图像的照明的更多信息,请参阅使用基于图像的照明

注: 当光探针纹理属性设置为有效纹理时,该纹理将用于照明,与backgroundMode 无关。但是,当backgroundMode 设置为SceneEnvironment.SkyBox 时,该纹理也将用于将场景背景渲染为天空盒。

下面的示例是通过改变以下场景环境中的backgroundMode 生成的。该场景没有 DirectionLight、PointLightSpotLight 。所有照明均基于全景 HDRI 图像。

import QtQuick
import QtQuick3D
import QtQuick3D.Helpers

Item {
    width: 1280
    height: 720

    View3D {
        id: v3d
        anchors.fill: parent

        environment: ExtendedSceneEnvironment {
            backgroundMode: SceneEnvironment.SkyBox
            lightProbe: Texture { source: "00455_OpenfootageNET_field_low.hdr" }

            tonemapMode: SceneEnvironment.TonemapModeFilmic
            sharpnessAmount: 0.4

            glowEnabled: true
            glowStrength: 1.25
            glowBloom: 0.25
            glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive
        }

        Node {
            scale: Qt.vector3d(100, 100, 100)

            Sponza {
            }

            Suzanne {
                y: 1
                scale: Qt.vector3d(0.5, 0.5, 0.5)
                eulerRotation.y: -90
            }
        }

        PerspectiveCamera {
            id: camera
            y: 100
        }

        WasdController {
            controlledObject: camera
        }
    }
}

上述环境下的结果:

backgroundMode 切换为SceneEnvironment.Transparent 会得到以下结果:

在这里,三维场景的照明与之前相同,这意味着材质在照明计算中使用光探针的方式与之前相同,但没有渲染天空盒。背景是白色的,因为这是托管 2D 和 3D 场景的QQuickWindow 的默认透明色。

将 lightProbe 属性值设回默认的空值是有效的。这样就取消了之前关联纹理的分配。例如,让我们使用 Delete 键在基于图像的天空盒照明和不基于图像的背景固定透明色照明之间进行动态切换:

environment: ExtendedSceneEnvironment {
    id: env

    backgroundMode: SceneEnvironment.SkyBox
    lightProbe: iblTex

    tonemapMode: SceneEnvironment.TonemapModeFilmic
    sharpnessAmount: 0.4

    glowEnabled: true
    glowStrength: 1.25
    glowBloom: 0.25
    glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive
}

Texture {
    id: iblTex
    source: "00455_OpenfootageNET_field_low.hdr"
}

focus: true
Keys.onDeletePressed: {
    if (env.backgroundMode == SceneEnvironment.SkyBox) {
        env.backgroundMode = SceneEnvironment.Color;
        env.clearColor = "green";
        env.lightProbe = null;
    } else {
        env.backgroundMode = SceneEnvironment.SkyBox;
        env.lightProbe = iblTex;
    }
}

按下 Delete 键的结果如下。请记住,这里使用的场景没有灯光,因此所有 3D 模型看起来都是全黑的。

虽然 lightProbe 通常与从图像文件(通常为 .hdr 或 .ktx)中获取数据的纹理实例结合使用,但它也可以与使用内存procedurally generated image data 的纹理实例结合使用。一个典型的例子就是纹理,其中的图像数据由ProceduralSkyTextureDataQtQuick3D.Helpers 模块生成:

backgroundMode: SceneEnvironment.SkyBox
lightProbe: Texture {
    textureData: ProceduralSkyTextureData {
    }
}

这样我们就得到了一个程序化生成的 HDR 天幕纹理,它现在既可用作天幕,也可用于基于图像的照明:

另请参阅 backgroundMode,使用基于图像的照明,预生成 IBL 立方体地图,probeExposure,probeHorizon,probeOrientation, 和ProceduralSkyTextureData


lightmapper : Lightmapper

当此属性设置为有效的 Lightmapper 对象时,烘焙光贴图时将考虑该对象指定的设置。

默认值为空,这意味着所有与烘焙相关的设置都将使用默认值。

有关如何烘焙光贴图的更多信息,请参阅Lightmapper 文档。

如果光照贴图与应用程序无关,且从未生成烘焙光照,则该属性和相关对象在实践中没有任何作用。

另请参阅 Model::usedInBakedLighting,Model::bakedLightmap,Light::bakeMode, 和Lightmapper


oitMethod : enumeration [since 6.9]

该属性包含 "阶独立透明度 "方法。将此属性设置为有效的 OIT 方法会使呈现器按照正确的深度顺序呈现透明像素。

可能的值有

常量说明
SceneEnvironment.OITNone关闭 OIT。
SceneEnvironment.OITWeightedBlended近似于独立于顺序的透明度。

默认值为None ,阶次独立透明度关闭。

加权混合

近似于阶次无关透明。透明片段被渲染到屏幕外的缓冲区,同时根据每个片段到摄像机的距离对其进行加权。然后在对每个像素去重后,将该缓冲区与后缓冲区混合。这种方法并不遵循所有片段的源过合成规则,因此结果与正确的结果不同,但这种方法也适用于较旧的硬件,而且比其他更严格的方法更快。

注意: 独立于顺序的透明性只适用于源过混合模式。如果场景中包含使用其他混合模式的对象,则会禁用 OIT。

此属性在 Qt 6.9 中引入。


probeExposure : real

该属性可修改光探针发出的光量。色调映射的一部分是曝光映射,该属性调整光探针中的光值如何进行色调映射。

默认情况下,曝光值设置为 1.0。

注意: tonemapMode 设置为SceneEnvironment.TonemapModeNone 时,此属性不会产生影响。

另请参阅 lightProbe,probeHorizon, 和probeOrientation


probeHorizon : real

该属性定义为递增值时,会在环境的下半部分增加黑暗(黑色),迫使照明主要来自图像的顶部(并消除下半部分的特定反射)。该属性可用于考虑地平面,因为地平面会遮挡探针从地面反射的光线。这是必要的,因为光探头的贡献直接来自图像,而不考虑场景的内容。

probeHorizon 属性的预期值范围在 0.0 和 1.0 之间。任何超出此范围的值都将被箝制在预期范围内。

默认情况下,probeHorizon 设置为 0.0,这意味着使用整个光线探针而无需调整。

注意: probeHorizon 属性只影响材质照明,对天空框的渲染没有影响。

另请参阅 lightProbe,probeExposure, 和probeOrientation


probeOrientation : vector3d

该属性用于定义探针的方向。方向是以 x、y 和 z 轴上的欧拉角为单位定义的。

注: 该值将与lightProbe 纹理上设置的任何纹理旋转和偏移相结合,增强lightProbe 纹理的采样方式。

另请参阅 lightProbe,probeHorizon, 和probeExposure


scissorRect : rect [since 6.5]

该属性在视图坐标中定义了一个剪刀矩形,其左上角位于 [0, 0] 处。

此属性在 Qt 6.5 中引入。


skyBoxCubeMap : QtQuick3D::CubeMapTexture [since 6.4]

当背景模式为SkyBoxCubeMap 时,该属性定义了用作天空盒的立方体地图。

该属性在 Qt 6.4 中引入。


skyboxBlurAmount : real [since 6.4]

SceneEnvironment.SkyBox 用于backgroundMode 属性时,该属性决定天空盒的模糊程度。默认值为0.0 ,表示不模糊。

可接受的值范围在 0.0 和 1.0 之间,所有其他值将被箝制在此范围内。

该属性在 Qt 6.4 中引入。


specularAAEnabled : bool [since 6.4]

启用该属性后,镜面反射将得到缓解。镜面反差通常以亮点的形式出现,在移动摄像头时可能会闪烁。

默认值为 false。

禁用镜面反差启用镜面反差修正

此属性在 Qt 6.4 中引入。


temporalAAEnabled : bool [default: false]

启用该属性后,将使用时态抗锯齿。

摄像机会在帧与帧之间轻微抖动,每个新帧的结果都会与前一帧混合。

注: antialiasingMode 为 MSAA 时,时间抗锯齿不会产生影响。

注: 当与 ProgressiveAAantialiasingMode 结合使用时,在场景动画播放时使用 TemporalAA,而动画停止后则使用 ProgressiveAA。

优点由于摄像机的抖动,它可以找到原本丢失的真实细节;对性能影响较小。

缺点:快速移动的物体会造成单帧重影。

注意: 多视图渲染目前不支持时态抗锯齿,也不应在虚拟现实/增强现实应用中使用。


temporalAAStrengthreal[default: 0.3]

该属性可修改时间移动量(抗锯齿)。只有当temporalAAEnabled 属性为 true 时才会生效。

另请参阅 temporalAAEnabled


tonemapMode : enumeration [since 6.0]

该属性定义了在渲染前如何对颜色进行色调映射。Qt Quick 3D 中的所有渲染都是在线性色彩空间中进行的,在很多情况下会产生无法显示的色彩值。tonemapMode 决定了用于将颜色重新映射到可显示范围的技术。

默认值为SceneEnvironment.TonemapModeLinear

常量说明
SceneEnvironment.TonemapModeNone绕过所有色调映射。该模式在执行后期处理效果时非常有用。
SceneEnvironment.TonemapModeLinear应用线性色调映射。颜色经过伽玛校正,并以 sRGB 色彩空间返回。
SceneEnvironment.TonemapModeAces应用学院色彩编码系统色调映射。
SceneEnvironment.TonemapModeHejlDawson应用 Hejl-Dawson 色调映射。
SceneEnvironment.TonemapModeFilmic应用胶片色调映射。

有关这些不同模式的示例,请参阅ExtendedSceneEnvironment

注: 使用后期处理特效时,大多数特效都需要未调色的线性色彩数据。对于应用程序提供的、通过Effect 类型实现的自定义特效,重要的是要知道,从 Qt 6.5 开始,特效可以安全地假定它们使用线性色彩数据工作,并且色调映射会在链中最后一个特效的输出上自动执行。如果需要完全自定义色调映射,可考虑设置SceneEnvironment.TonemapModeNone 值来禁用内置色调映射,并在链中最后一个特效的颜色值上执行适当的调整。这不适用于ExtendedSceneEnvironment 的内置特效,因为无论环境中启用了何种内置特效组合,这些特效都会自动进行适当的色调映射。

此属性在 Qt 6.0 中引入。


© 2025 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.