环境和后期处理

Godot 4 提供了重新设计的环境资源(Environment resource),以及一个全新的后期处理(post-processing)系统,其具有许多开箱即用的效果。

备注

从 Godot 4 开始,环境的 性能/质量 设置是在项目设置中定义的,而不是在环境资源中定义的。 这使得全局调整变得更加容易,因为你不再需要单独调整环境资源,来适应各种硬件配置。

请注意,大多数环境的性能/质量设置仅在项目设置中启用 高级 开关后才可见。

环境

Environment 资源存储控制 2D 和 3D 渲染环境所需的所有信息。 其中包括天空、环境照明、色调映射、效果和调整。 它本身不执行任何操作,但你可以通过在以下位置之一(按优先级顺序)使用来启用它:

Camera3D 节点(高优先级)

可以为 Camera3D 节点设置 Environment。优先于其他所有设置。

../../_images/environment_camera.webp

这在想要覆盖现有环境时非常有用,但通常来说使用以下的选项更好。

预览环境和太阳(低优先级)

备注

从 Godot 4 开始,预览环境和太阳的系统替代了 Godot 3 项目中使用的 default_env.tres 文件。

如果当前场景中不存在 WorldEnvironment 节点或 DirectionalLight3D 节点,编辑器会改为显示预览环境和太阳。可以使用 3D 编辑器顶部的按钮禁用:

../../_images/environment_preview_sun_sky_toggle.webp

点击右侧的垂直排列的三个点就会显示一个对话框,能够用来自定义预览环境的外观:

../../_images/environment_preview_sun_sky_dialog.webp

预览太阳和天空只在编辑器中可见,运行项目时不可见。使用对话框底部的按钮就可以将预览太阳和天空作为节点加入到场景中。

小技巧

在预览环境编辑器中,点击将太阳添加到场景将环境添加到场景时按住 Shift,就会将预览太阳和预览环境一同添加到当前场景中(就像单独点击了这两个按钮一样)。可以使用这个方法加速项目的设置和原型。

相机属性

备注

在 Godot 4 中,曝光和景深信息从环境资源中分离到单独的 CameraAttributes 资源中。 这样可以更轻松地独立于其他环境设置来调整这些属性。

CameraAttributes 资源存储曝光和景深信息。 它还允许根据场景亮度自动调整曝光。

有两种 CameraAttribute 资源可用:

  • 实用相机属性: 使用任意单位公开功能,这对于大多数游戏用例来说更容易推理。

  • CameraAttributesPhysical: 使用现实世界单位曝光特征,类似于数码相机。 例如,视野是使用以毫米为单位的焦距,而不是以度为单位的值来设置的。 当物理精度很重要时推荐使用,例如要求照片级真实感渲染。

两种 CameraAttribute 资源类型都允许你使用相同的功能,但它们的配置不同。 如果你不知道选择哪一个,请使用 CameraAttributesPractical

备注

在 Camera3D 节点上使用 CameraAttributesPhysical 将锁定该 Camera3D 中的 FOV 和长宽调整,因为视野是在 CameraAttributesPhysical 资源中调整的。 如果在 WorldEnvironment 中使用,CameraAttributesPhysical 将不会覆盖场景中的任何 Camera3D。

CameraAttributes 资源可以添加到 Camera3D 或 WorldEnvironment 节点上。 在当前相机设置了 CameraAttributes 时,它将 覆盖 WorldEnvironment 中设置的CameraAttributes(如果有的话)。

在大多数情况下,建议在 Camera3D 节点而不是 WorldEnvironment 上设置 CameraAttributes 资源。 与 WorldEnvironment 不同,将 CameraAttributes 资源分配给 Camera3D 节点会阻止景深显示在 3D 编辑器视口中,除非你正在预览相机。

环境可选项

以下是所有环境选项的详细说明以及如何使用它们。

背景

“背景(Background) ”部分包含有关如何填充背景的设置(屏幕中未绘制对象的部分)。 背景不仅用于显示图像或颜色。默认情况下,它还会影响对象受环境光和反射光影响的方式。 这称为基于图像的照明 (IBL)。

因此,背景天空可能会极大地影响场景的整体外观,即使天空在屏幕上永远不会直接可见。 调整场景中的光照时应考虑到这一点。

../../_images/environment_background1.webp

有几种背景模式可供选择:

  • 清晰颜色(Clear Color ) 使用项目设置中定义的默认清晰颜色。背景将是恒定的颜色。

  • 自定义颜色(Custom Color) 与清晰颜色(Clear Color)类似,但具有自定义颜色值。

  • 天空(Sky) 可允许你定义背景天空材质(见下文)。 默认情况下,场景中的对象将反射此天空材质并吸收其中的环境光。

  • 画布(Canvas)将 2D 场景显示为 3D 场景的背景。这可用于使环境效果在 2D 渲染中可见,例如 2D 中的辉光

  • 保留(Keep)不会绘制任何天空,而是保留前一帧中存在的内容。 这提高了纯室内场景中的性能,但如果天空随时可见,则会产生“镜厅(hall of mirrors)”视觉故障。

天空材质

使用 Sky 背景模式(或环境光/反射光模式设置为 Sky )时,Sky 子资源可在环境资源中进行编辑。 编辑此子资源允许你在 Sky 中创建 SkyMaterial 资源。

有 3 种内置天空材质可供选择:

  • PanoramaSkyMaterial: 使用 360 度全景天空图像(建议长宽比为 2:1)。 为了受益于高动态范围,全景图像必须采用 HDR 兼容格式,例如 .hdr.exr ,而不是标准动态范围格式,例如 .png.jpg

  • ProceduralSkyMaterial: 使用程序生成的天空,并可调整地面、太阳、天空和地平线的颜色。 这是编辑器预览中使用的天空类型。 太阳的位置是从场景中存在的前 4 个 DirectionalLight3D 节点自动得出的。 给定时间最多可以有 4 个太阳。

  • PhysicalSkyMaterial: 使用具有可调整散射参数的基于物理的程序天空。 太阳的位置自动从场景中存在的第一个 DirectionalLight3D 节点导出。 与 ProceduralSkyMaterial 相比,PhysicalSkyMaterial 的渲染成本稍高。 给定时间最多可以有 1 个太阳。

全景天空(Panorama sky)图像有时称为 HDRI(High Dynamic Range Images,高动态范围图像)。 你可以在 Poly Haven 上找到具有免费许可的 HDRI。

备注

具有非常明亮光点的 HDR PanoramaSkyMaterial 纹理(例如可以看到太阳的现实生活照片)可能会导致环境反射和镜面反射出现可见的闪光。 这是由于纹理的峰值曝光过高造成的。

要解决此问题,请在文件系统面板中选择全景纹理,转到导入面板,启用 HDR 限制曝光 ,然后单击 重新导入

如果你需要自定义天空材质(例如用于程序云),你可以创建自定义天空着色器

环境光

环境光(如此处定义)是一种以相同强度影响每个几何体的光。它是全局的并且独立于可能添加到场景中的灯光。环境光是基于图像的照明的两个组成部分之一。与反射光不同,环境光不会根据相机的位置和视角而变化。

有几种类型的环境光可供选择:

  • Background: (背景)从背景中获取环境光,例如天空、自定义颜色或透明颜色(默认)。 环境光强度将根据天空图像的内容而变化,这可以产生更具视觉吸引力的环境照明。 必须将天空设置为背景才能使此模式可见。

  • Disabled: (禁用)不使用任何环境光。 对于纯室内场景很有用。

  • Color: (颜色)对环境光使用恒定颜色,忽略背景天空。 所有侧面的环境光强度都相同,这可能会导致场景的照明看起来更平坦。 对于漆黑阴影可能太暗的室内场景很有用,或者可以最大限度地提高低端设备的性能。

  • Sky: (天空)从指定的天空获取环境光,即使背景设置为 Sky 以外的模式。 如果背景模式已经是 Sky ,则此模式的行为与 Background 相同。

当环境光模式设置为 Sky 或 Background(并且背景设置为天空)时,可以使用 Sky Contribution (天空贡献度)属性在环境颜色和天空之间进行混合。默认情况下,该值设置为 1.0 ,这意味着仅使用环境天空。除非 Sky Contribution 降低到 1.0 以下,否则环境颜色将被忽略。

以下是不同环境光对场景的影响比较:

../../_images/environment_ambient2.webp

最后有一个 Energy(能量) 设置,这是一个乘数,在使用HDR时非常有用。

一般来说,只有简单的场景或大型外部场景才应该依赖于环境光。你也可以这样做来提高性能。环境光的渲染速度很快,但无法提供最佳的照明质量。最好使用 ReflectionProbeVoxelGISDFGI 生成环境光,因为它们将更准确地模拟间接光的传播方式。下面是使用平面环境色和 VoxelGI 之间的质量比较:

../../_images/environment_ambient_comparison.webp

使用上述方法之一,将使用来自探针的环境照明,代替恒定的环境照明。

反射光

反射光(也称为镜面光)是基于图像的照明的两个组成部分中的另一个。

反射光可以设置为三种模式之一:

  • Background: (背景)从背景反射,例如天空、自定义颜色或透明颜色(默认)。

  • Disabled: (禁用)不反射环境中的任何光线。 适用于纯粹的室内场景,或最大限度地提高低端设备的性能。

  • Sky: (天空)从背景天空反射,即使背景设置为 Sky 以外的模式。 如果背景模式已经是 Sky ,则此模式的行为与 Background 相同。

备注

本节仅涉及非体积雾。 可以同时使用非体积雾和 体积雾和雾体积

雾。就像在现实生活中一样,使远处的物体逐渐消失成均匀的颜色。Godot 中有两种雾:

  • 深度雾: 这个基于距相机的距离来应用.

  • 高度雾: 此高度应用于任何低于(或高于)某个高度的物体,无论距离相机的距离如何.

../../_images/environment_fog_depth_height.webp

这两种雾类型都可以调整它们的曲线,使它们的过渡或多或少变得清晰.

可以调整两个属性以使雾效果更有趣:

第一个是 Sun Amount,它利用雾的太阳颜色属性。当朝向平行光(通常是太阳)时,雾的颜色将会改变,模拟穿过雾的阳光。

第二个是 Transmit Enabled,可以模拟更逼真的透射率。实践中会使光线在雾中更加突出。

../../_images/environment_fog_transmission.webp

备注

雾会导致在视口中出现色带,尤其是在密度较高的情况下。如何减少条带见《带状颜色》。

体积雾

体积雾为场景提供了逼真的雾效果,雾的颜色受到穿过雾的灯光的影响。

参见

体积雾的设置见《体积雾和雾体积》。

色调映射

Tonemap selects the tonemapping algorithm that will be applied to the scene, from a list of standard algorithms used in the film and game industries. Tonemapping modes other than Linear are used to make light and dark areas more homogeneous, while also avoiding clipping of bright highlights. Each algorithm has a different performance characteristic that should be considered when choosing your tonemapper.

色调映射选项有:

  • Mode: The tonemapping mode to use.

    • Linear: Does not modify color data, resulting in a linear tonemapping curve which unnaturally clips bright values, causing bright lighting to look blown out. The simplest and fastest tonemapper.

    • Reinhard: A simple tonemapping curve that rolls off bright values to prevent clipping. This results in an image that can appear dull and low contrast. Slower than Linear. When White is left at the default value of 1.0, Reinhard produces an identical image to Linear.

    • Filmic: Uses a film-like tonemapping curve to prevent clipping of bright values and provide better contrast than Reinhard. Slightly slower than Reinhard.

    • ACES: Uses a high-contrast film-like tonemapping curve and desaturates bright values for a more realistic appearance. Slightly slower than Filmic.

    • AgX: Uses a film-like tonemapping curve and desaturates bright values for a more realistic appearance. Better than other tonemappers at maintaining the hue of colors as they become brighter. The slowest tonemapping option. White is fixed at a value of 16.29, which makes AgX unsuitable for use with the Mobile rendering method.

  • Exposure: Adjusts the brightness of values before they are provided to the tonemapper. Higher Exposure values result in a brighter image. Values provided to the tonemapper will also be multiplied by 2.0 and 1.8 for Filmic and ACES respectively to produce a similar apparent brightness as Linear.

  • White: The white reference value for tonemapping, which indicates where bright white is located in the scale of values provided to the tonemapper. For photorealistic lighting, recommended values are between 6.0 and 8.0. Higher values result in less blown out highlights, but may make the scene appear lower contrast. White is not available when using Linear or AgX.

中后期处理效果

环境资源支持许多流行的中间和后期处理效果。

备注

屏幕空间效果,例如 SSRSSAOSSIL和辉光不会对位于相机视图之外的,或被其他不透明几何体遮挡的几何体进行操作。 调整设置时请考虑这一点,以避免在游戏过程中发生分散注意力的变化。

屏幕空间反射(SSR)

This feature is only available when using the Forward+ renderer, not Mobile or Compatibility.

虽然 Godot 支持多种反射数据源,例如 反射探针,但它们可能无法为所有情况提供足够的细节。屏幕空间反射最有意义的场景是物体彼此接触时(物体在地板上、桌子上、漂浮在水面上等)。

../../_images/environment_ssr.webp

除了提供更多细节之外,屏幕空间反射还可以实时工作(而其他类型的反射通常是预先计算的)。这可用于使角色、汽车等在移动时反射到周围的表面上。

屏幕空间反射可以与其他反射源同时使用,以便在可能的情况下从详细反射中受益,同时在无法使用屏幕空间反射时进行回退(例如,反射屏幕外对象)。

一些用户控制的参数可用于更好地调整技术:

  • 最大步数 确定反射的长度. 这个数字越大, 计算成本就越高.

  • 淡入 允许调整淡入曲线, 这有助于使接触区域更柔和.

  • 淡出 允许调整淡出曲线, 因此步长限制会轻微淡出.

  • 深度公差(Depth Tolerance):可用于允许屏幕空间光线穿过对象后面。 光线将把每个对象视为具有该深度,以确定它是否可以从该对象后面穿过。 较高的值将使屏幕空间反射表现出更少的“分裂”,但代价是某些对象会产生物理上不正确的反射。

请记住,屏幕空间反射仅适用于反射不透明几何体。透明材质无法反射,因为它们不会写入深度缓冲。同样也适用于使用 SCREEN_TEXTUREDEPTH_TEXTURE 的着色器。

屏幕空间环境光遮蔽(SSAO)

This feature is only available when using the Forward+ renderer, not Mobile or Compatibility.

如在环境部分中所述,灯光节点的光线无法到达的区域(因为超出半径或被阴影遮挡)会被环境光照亮。Godot 可以使用 VoxelGI、ReflectionProbe、天空或恒定环境色来模拟这种情况。然而,问题在于,之前提出的所有方法都更多地作用于较大尺度(大区域),而不是较小的几何体层面。

恒定环境色和天空在任何地方都是相同的,而 GI 和反射探针具有更多的局部细节,但不足以模拟光线无法填充到空心或凹面特征中的情况。

这可以通过屏幕空间环境光遮蔽来模拟。如下图所示,其目的是确保凹陷区域更暗,模拟光线进入的更窄路径:

../../_images/environment_ssao.webp

启用该效果、打开灯光却无法欣赏它,这是一个常见的错误。这是因为 SSAO 仅对环境光起作用。它不会影响直接光。

这就是为什么在上图中,效果在直射光下不太明显的原因(左侧)。如果你想强制 SSAO 也在直射光下工作,请使用光照影响(Light Affect)参数。尽管这在物理上并不正确,但一些艺术家喜欢它的外观。

SSAO 与诸如 VoxelGI 等真实的间接光源结合使用时效果最佳:

../../_images/environment_ssao2.webp

可以使用以下几个参数调整 SSAO

../../_images/environment_ssao_parameters.webp
  • Radius:半径,计算屏幕空间环境光遮蔽时,对象可以相互遮挡的距离。值越高,遮挡距离越远,但会牺牲性能和质量。

  • Intensity:强度,即主屏幕空间环境光遮蔽强度。用作屏幕空间环境光遮蔽效果的乘数。值越高,遮挡越暗。由于 SSAO 是一种屏幕空间效果,因此建议保守使用该值。过强的 SSAO 可能会在游戏过程中分散注意力。

  • Power:力度,遮挡的分布。值越高,遮挡越暗,类似于 Intensity,但衰减更剧烈。

  • Detail:细节,设置屏幕空间环境光遮蔽效果的附加细节层次的强度。 高值会使细节通道更加突出,但可能会导致最终图像出现锯齿。

  • Horizon:地平线,判断表面上的某个点是否被遮挡的阈值,表示为从地平线起被映射到 0.0-1.0 范围内的角度。值为 1.0 表示无遮挡。

  • Sharpness:锐度,允许屏幕空间环境光遮蔽效果在对象边缘模糊的量。设置太高会导致对象边缘出现锯齿。设置太低会使对象边缘显得模糊。

  • Light Affect:光照影响,直射光下的屏幕空间环境光遮蔽强度。在现实生活中,环境光遮蔽仅适用于间接光,这意味着在直射光下无法看到其效果。高于 0 的值将使 :abbr:` SSAO (Screen-Space Ambient Occlusion,屏幕空间环境光遮挡)`效果在直射光下可见。高于 0.0 的值在物理上并不准确,但一些艺术家更喜欢这种效果。

  • AO Channel Affect The screen-space ambient occlusion intensity on materials that have an AO texture defined. Values higher than 0.0 will make the SSAO effect visible in areas darkened by AO textures.

屏幕空间间接光照(SSIL)

This feature is only available when using the Forward+ renderer, not Mobile or Compatibility.

SSIL 为其他全局照明技术无法覆盖的小细节或动态几何体提供间接照明。这适用于反射漫反射照明,也适用于自发光材质。当单独启用 SSIL 时,效果可能不那么明显,这在意料之中。

Instead, SSIL is meant to be used as a complement to other global illumination techniques such as VoxelGI, SDFGI and LightmapGI. SSIL also provides a subtle ambient occlusion effect, similar to SSAO, but with less detail.

此功能仅提供间接光照,并不是完整的全局光照解决方案,与其他 3D 引擎所提供的屏幕空间全局光照(SSGI)是不同的。SSIL 可以与 SSR 和/或 SSAO 组合使用,实现更高的画质(有额外性能开销)。

可以使用几个参数调整 SSIL

  • Radius:半径,使用屏幕空间间接光照效果时,反射光可以传播的距离。较大的值将导致场景中的光进一步反弹,但可能会导致采样不足的伪像,看起来像光源周围的长尖峰。

  • Intensity:强度,屏幕空间间接光照效果的亮度倍数。值越高,光线越亮。

  • Sharpness:锐度,允许屏幕空间间接光照效果在对象边缘模糊的量。设置太高会导致对象边缘出现锯齿。设置太低会使对象边缘显得模糊。

  • Normal Rejection:法线拒绝,计算屏幕空间间接光照时使用的法线拒绝量。法线拒绝使用给定样本点的法线来拒绝背向当前像素的样本。当物体只有一侧被照亮时,为避免漏光,法线拒绝是必要的。但是,如果需要漏光,例如当场景主要包含从相机看不到的表面发射光线的发光对象时,可以禁用法线拒绝。

../../_images/environment_ssil.webp

有符号距离场全局光照(SDFGI)

This feature is only available when using the Forward+ renderer, not Mobile or Compatibility.

有符号距离场全局光照(SDFGI)是一种实时全局光照的形式。它不是屏幕空间效果,这意味着它可以为屏幕外元素提供全局光照(与 SSIL 不同)。

参见

有关设置该全局光照技术的说明,请参阅《带符号距离场全局光照(SDFGI)》。

../../_images/environment_sdfgi.webp

辉光

备注

当使用兼容性渲染方法时,辉光会使用一种不同的实现,会使一些属性在检查器中不可用而被隐藏:LevelsNormalizedStrengthBlend ModeMixMapMap Strength

该实现为在低端设备上运行而做了优化,因此灵活性较差。

在摄影和电影中,当光量超过介质支持的最大亮度时,它通常会向外扩散到图像的较暗区域。在 Godot 中使用辉光效果模拟这种效果。

../../_images/environment_glow1.webp

默认情况下,即使启用了该效果,它也会变弱或不可见。实际显示它需要达成的两个条件之一:

    1. 像素中的光线超过 HDR 阈值(其中 0 表示所有光线都超过该阈值,1.0 表示光线超过色调映射器白色值)。通常,该值应为 1.0,但可以降低它以允许更多光线渗出。还有一个额外的参数 HDR 缩放,允许缩放(使之更亮或更暗)超过阈值的光线。

../../_images/environment_glow_threshold.webp
    1. Bloom 即泛光属性的值设置大于 0.0。随着该值的增加,它会以更高的数量将整个屏幕发送到辉光处理器。

../../_images/environment_glow_bloom.webp

两者都会导致光线从较亮的区域开始渗出。

一旦辉光可见,就可以使用一些额外的参数来控制它:

  • Intensity 即效果的整体比例,可以将其增强或减弱( 0.0 可以将其移除)。

  • Strength 指高斯滤波器内核的处理强度。数值越大,滤波器越饱和并向外扩展。一般来说,不需要改变这个值,因为可以通过层级更有效地调整大小。

效果的混合模式也可以改变:

  • Additive 即添加模式,是最强的一种,因为它只在图像上添加辉光效果,不会涉及混合。一般来说,它太强了而无法使用,但与低强度的泛光搭配使用效果会很好,会产生梦幻般的效果。

  • Screen 即屏幕模式,确保辉光永远不会比它自己更亮,而且它作为一个整体效果非常好。

  • Softlight 即柔光模式,是默认的,也是最弱的一种,只在物体周围产生细微的颜色扰动。这种模式在黑暗场景中效果最好。

  • Replace 即替换模式,可以用来模糊整个屏幕或调试效果。它只显示辉光的效果,而没有辉光下的图片。

  • Mix 即混合模式,将辉光效果与主图像混合。这可以用于更好的艺术效果控制。混合因子由出现在混合模式上方的 Mix 属性控制(仅当混合模式设置为 Mix 时)。除非增加泛光,否则高混合因子值将使图像变暗。

Godot 提供了层级,用于改变辉光效果的大小和形状。较小的层是在物体周围出现的较强的辉光,而大的层是覆盖整个屏幕的朦胧辉光:

../../_images/environment_glow_layers.webp

然而,这个系统的真正优势在于结合各个层级来创造更有趣的辉光图案:

../../_images/environment_glow_layers2.webp

最后,可以使用辉光贴图来控制辉光效果,辉光贴图是一种纹理,用于确定屏幕每个部分的辉光亮度。可以选择为该纹理着色,以将辉光效果染成辉光贴图的颜色。纹理会被拉伸以适合视口,因此建议使用与视口最常见纵横比(如 16:9)相匹配的纵横比,以避免出现明显的失真。

辉光贴图纹理有 2 种主要用途:

  • 使用污垢图案纹理创建“镜头污垢”(lens dirt)效果。

  • 使用渐变纹理让屏幕特定部分的辉光减弱。

../../_images/environment_glow_map.webp

在 2D 中使用辉光

在 2D 中使用辉光有两种方法:

  • 从 Godot 4.2 开始,你可以在使用 Forward+ 和移动端渲染方法时,启用 HDR 进行 2D 渲染。这会产生一定的性能损耗,但也会带来更大的动态范围。HDR 还可以让你通过使用各自的 Modulate (调制) 或 Self Modulate (自调制) 属性,来控制哪些对象产生辉光(在取色器中使用 RAW 模式)。启用 HDR 还可以减少 2D 渲染输出中的条带。

  • 如果你想最大限度地提高性能,可以禁用 HDR 进行 2D 渲染。但是这会减少你对物体辉光的控制。

    • 启用辉光,将环境背景模式设置为 Canvas,然后降低 Glow 中的 HDR Threshold (HDR 阈值),以便不是过亮的像素仍然会发出辉光。为了防止 UI 元素产生辉光,请将它们设为 CanvasLayer 节点的子节点。你可以使用环境资源的 Background > Canvas Max Layer 属性来控制哪些图层受辉光影响。

在 2D 场景中使用辉光的示例

在 2D 场景中使用辉光的示例。启用 HDR 2D,同时使用取色器中的 RAW 模式将硬币和子弹的 Modulate 属性增加到过亮值。

警告

The 2D renderer renders in linear color space if the Rendering > Viewport > HDR 2D project setting is enabled, so the source_color hint must also be used for uniform samplers that are used as color input in canvas_item shaders. If this is not done, the texture will appear washed out.

如果禁用了 2D HDR,source_color 将在 canvas_item 着色器中保持正常工作,因此,建议在你的工作与之相关时使用它。

使用辉光来使屏幕模糊

辉光可用于模糊整个视口,对于打开菜单时的背景模糊来说这个功能就很有用。除非你将环境的背景模式设置为 Canvas,否则只有 3D 渲染会受到影响。为了防止 UI 元素在使用 Canvas 背景模式时变得模糊,请将它们设为 CanvasLayer 节点的子节点。你可以使用 Environment 资源的 Background > Canvas Max Layer 属性来控制哪些图层受该模糊效果的影响。

要使用辉光作为一种模糊效果解决方案:

  • 启用归一化并根据偏好调整辉光层级。增加更高层级索引的层将导致图像更模糊。建议将单个辉光层级设置为 1.0,并将所有其他辉光层级保留为 0.0,不过这不是必需的。请注意,最终外观将根据视口分辨率而有所不同。

  • Intensity 设置为 1.0,并将 Bloom 设置为 1.0

  • 将 Blend Mode (混合模式)设置为 Replaced,并将 HDR Luminance Cap (HDR 亮度上限)设置为 1.0

使用辉光来模糊菜单背景中的 2D 渲染的示例

使用辉光来模糊菜单背景中的 2D 渲染的示例

调整

在处理结束时,Godot 提供了进行一些标准图像调整的可能性。

../../_images/environment_adjustments.webp

基本 BCS 调整

第一项调整是能够更改典型的 Brightness(亮度) 、Contrast(对比度) 和 Saturation (饱和度)属性:

../../_images/environment_adjustments_bcs.webp

使用一维渐变进行颜色校正

第二项调整是通过提供颜色校正渐变来实现。这可以通过将 GradientTexture1D 资源分配给 Color Correction(颜色校正)属性来实现,或者通过加载包含水平渐变的纹理来实现。渐变的最左侧部分表示源图像中的黑色,而渐变的最右侧部分表示源图像中的白色。

如下所示的线性黑色渐变将不起作用:

../../_images/environment_adjustments_default_gradient.webp

但是创建自定义的会允许将每个通道映射到不同的颜色:

../../_images/environment_adjustments_custom_gradient.webp

使用 3D LUT 进行颜色校正

3D 查找纹理(LUT)也可用于色彩校正。这是一种特殊的纹理,用于单独修改每个颜色通道(红色、绿色、蓝色)。该图像可以是任何分辨率,但由于颜色校正是低频数据,出于性能原因,建议坚持使用低分辨率。 LUT 纹理的分辨率通常为 17×17×17、33×33×33、51×51×51 或 65×65×65(奇数尺寸允许更好的插值)。

为了使其工作,查找纹理的导入模式必须在导入面板中设置为 Texture3D(而不是作为常规 Texture2D 导入):

../../_images/environment_adjustments_3d_lut_import.webp

确保同时配置要导入的水平和垂直切片的数量。如果不这样做,LUT 纹理在使用时将不会正确影响视口。你可以通过在 FileSystem 面板中双击 3D 纹理来预览如何导入 3D 纹理,然后转到检查器来翻转纹理的图层。

你可以使用这个中性的 33×33×33 LUT 模板作为基础(右键点击并选择另存为...(Save as…)):

../../_images/environment_adjustments_3d_lut_template.webp

使用上述 LUT 模板,将其导入模式更改为 Texture3D 后,在导入面板中将其 Horizontal(水平)切片数设置为 33,然后点击重新导入。如果将该 LUT 加载到 Color Correction(颜色校正)属性中,你暂时不会看到任何明显差异,因为该纹理被设计为中性起点。

可以在图像编辑器中修改该 LUT 模板,以为图像提供不同的氛围。常见的工作流程是将 LUT 图像放置在项目 3D 视口的屏幕截图旁边,然后使用图像编辑器同时修改 LUT 图像和屏幕截图。然后可以保存 LUT 并将其应用到游戏引擎,以实时执行相同的颜色校正。

例如,在图像编辑器中修改 LUT 模板以使其具有“棕褐色”外观,从而得到右侧的图像:

../../_images/environment_adjustments_3d_lut_comparison.webp

备注

调整和颜色校正在色调映射之后应用。这意味着当启用调整时,上面定义的色调映射属性仍然有效。

相机属性选项

景深/远模糊

该效果模拟相机的焦点距离。它模糊给定范围后面的物体。它具一个有初始 Distance(距离)和 Transition(过渡)区域(单位为世界单位):

../../_images/environment_dof_far.webp

Amount 参数控制模糊量。对于较大的模糊,可能需要在高级项目设置中调整景深质量以避免出现伪影。

景深/近模糊

该效果模拟相机的焦点距离。它使靠近相机的物体模糊(作用在与远景模糊相反的方向上)。它具有一个初始 Distance(距离)和 Transition(过渡)区域(单位为世界单位):

../../_images/environment_dof_near.webp

Amount 参数控制模糊量。对于较大的模糊,可能需要调整 Quality(质量)以避免出现伪影。

通常同时使用两种模糊效果来将观众的注意力集中在给定的对象上,或创建所谓的“倾斜移位”效果

../../_images/environment_mixed_blur.webp

备注

当使用 CameraAttributesPhysical 而不是 CameraAttributesPractical 时,景深是根据相机属性的焦点距离、焦距和光圈自动计算的。

曝光

这会成倍增加相机可见的整体场景亮度。值越高,场景视觉上越亮。

自动曝光

This feature is only available when using the Forward+ renderer, not Mobile or Compatibility.

尽管在大多数情况下,光照和纹理都受到艺术家的严格控制,但 Godot 支持通过自动曝光机制实现基本的高动态范围。通常是在将低光线的室内区域和明亮的室外区域相结合时,使用该功能来增加真实感。自动曝光会模拟相机(或眼睛),努力适应明暗位置及其不同的光量。

备注

自动曝光需要每帧评估场景的亮度,这会造成一定程度的性能损失。因此,如果自动曝光对场景的影响不大,建议禁用该功能。

../../_images/environment_hdr_autoexp.webp

使用自动曝光的最简单方法是确保室外灯光(或其他强光)的能量超过 1.0。这是通过调整它们的 Energy 乘数(对灯光本身)来实现的。为了使其保持一致,Sky 通常也需要使用能量乘数,以配合平行光。通常情况下,数值在 3.0 到 6.0 之间,就足以模拟室内室外条件。

通过将自动曝光与 辉光 后期处理相结合,超出色调映射 White 的像素将逸出到辉光缓冲区,从而在摄影中产生典型的泛光效果。

../../_images/environment_hdr_bloom.webp

“自动曝光”部分中的用户可控制值具有合理的默认值,但你仍然可以调整它们:

../../_images/environment_hdr.webp
  • Scale: 即缩放,用于缩放光照的值。值越高,图像越亮,值越低,图像越暗。

  • Min Sensitivity / Min Exposure Value: 即最小灵敏度/最小曝光值,自动曝光旨在调整的最小亮度(使用 CameraAttributesPractical 时以 ISO 为单位,使用 CameraAttributesPhysical 时以 EV100 为单位)。亮度是屏幕所有像素中光的平均值。

  • Max Sensitivity / Max Exposure Value: 即最大灵敏度/最大曝光值,自动曝光旨在调整的最大亮度(使用 CameraAttributesPractical 时以 ISO 为单位,或使用 CameraAttributesPhysical 时以 EV100 为单位)。

  • Speed: 即速度,亮度自行校正的速度。值越高,亮度校正越快。较高的值可能更适合快节奏的游戏,但在某些情况下可能会分散注意力。

使用 CameraAttributesPractical 时,曝光是使用 ISO 中定义的 sensitivity(灵敏度)而不是 EV100 中的曝光值来设置的。典型的 ISO 值介于 50 到 3200 之间,值越高,最终曝光越高。现实生活中,白天摄影一般使用 100 到 800 之间的 ISO 值。

参见

如果你希望使用现实世界的单位来配置相机的曝光、视野和景深,请参阅 物理灯光和相机单位