环境与后处理

Godot3提供了一个重新设计的环境资源,以及一个全新的后处理系统,有许多现成的效果。

环境

环境资源存储控制渲染环境所需的所有信息。这包括天空、环境光、色调映射、效果和调整。它本身不起作用,但一旦按优先级顺序在以下位置之一使用,它就会启用:

摄像机节点

环境可以设置为相机。它将优先于任何其他设置。

../../_images/environment_camera.png

这在想要覆盖现有环境时最有用,但一般来说,使用下面的选项是一个更好的主意。

世界环境节点

WorldEnvironment节点可以添加到任何场景,但每个活动场景树只能存在一个。添加多个将导致警告。

../../_images/environment_world.png

添加的任何环境的优先级都高于默认环境(如下所述)。这意味着它可以在每个场景的基础上被覆盖,这使得它非常有用。

默认环境

可以设置默认环境,当没有环境设置为相机或Worldenvironment时,该环境将充当回退。直接进入项目设置->渲染->环境:

../../_images/environment_default.png

从项目经理创建的新项目带有默认环境 (default_env.tres )如果需要创建一个,请将其保存到磁盘,然后在此处引用它。

环境选项

以下是所有环境选项的详细说明,以及它们的用途。

背景

“背景”部分包含有关如何填充背景(屏幕上未绘制对象的部分)的设置。在Godot3.0中,背景不仅用于显示图像或颜色,还可以更改对象受环境光和反射光影响的方式。

../../_images/environment_background1.png

设置背景有多种方法:

  • 清除颜色 使用项目定义的默认清除颜色。背景将是恒定的颜色。

  • 自定义颜色 类似于清晰的颜色,但具有自定义的颜色值。

  • Sky 允许您定义全景天空(360度球体纹理)或程序天空(具有渐变和可选太阳的简单天空)。物体会反射并吸收周围的光线。

  • 颜色+天空 允许您定义天空(如上所述),但使用恒定颜色值绘制背景。天空将只用于反射和环境光。

环境光

环境光(定义见此处)是影响具有相同强度的每一个几何体的一种光。它是全局的,独立于可能添加到场景中的灯光。

环境光有两种类型: 环境色 (不变颜色乘以材料反照率),然后从 Sky (如前所述,但要启用此功能,需要将天空设置为背景)。

../../_images/environment_ambient.png

当A Sky 设置为背景,可以使用 天空贡献 设置(为方便起见,默认值为1.0,因此只有天空会影响对象)。

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

../../_images/environment_ambient2.png

最后有一个 能量 设置,这是一个乘数,在使用HDR时很有用。

一般来说,环境光只能用于简单的场景、大型的外部或出于性能原因(环境光很便宜),因为它不能提供最佳的照明质量。最好是从反射探头或giprobe生成环境光,这将更真实地模拟间接光的传播方式。以下是使用平坦环境色和giprobe的质量比较:

../../_images/environment_ambient_comparison.png

使用上面描述的方法之一,对象得到恒定的环境光,而不是探针中的环境光。

和现实生活一样,雾使遥远的物体逐渐淡出统一的颜色。物理效应实际上相当复杂,但Godot提供了一个很好的近似值。Godot有两种雾:

  • 深度雾: 根据与相机的距离应用此选项。

  • 高度雾: 这个方法适用于任何低于(或高于)一定高度的物体,而不考虑与相机的距离。

../../_images/environment_fog_depth_height.png

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

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

第一个是 日金额 它利用了雾的太阳颜色属性。当朝向平行光(通常是太阳)时,雾的颜色将发生变化,模拟阳光穿过雾。

第二个是 传输已启用 模拟更真实的透光率。在实践中,它使光线在雾中更加突出。

../../_images/environment_fog_transmission.png

色调图

此功能仅在使用gles3后端时可用。

从电影和游戏行业使用的标准曲线的短列表中选择将应用于场景的色调映射曲线。色调映射可以使亮区和暗区更加均匀,即使结果不那么强烈。色调映射选项包括:

  • 模式: 音调映射模式,可以是线性、回音、电影或aces。

  • 暴露: 色调映射曝光,模拟随时间接收的光的数量。

  • White: 色调映射白色,它模拟白色比例中的位置(默认为1.0)。

自动曝光(HDR)

此功能仅在使用gles3后端时可用。

尽管在大多数情况下,灯光和纹理都是由艺术家严格控制的,但Godot支持一种带有自动曝光机制的简单高动态范围实现。这通常是为了现实主义,当结合内部区域与低光和户外。“自动曝光”模拟相机(或眼睛),以便在明暗位置及其不同的光线量之间进行调整。

../../_images/environment_hdr_autoexp.gif

使用自动曝光的最简单方法是确保室外灯光(或其他强光)的能量超过1.0。这是通过调整 能量 乘数(在光本身上)。为了保持一致, Sky 通常也需要使用能量倍增器,以匹配定向光。通常,3.0和6.0之间的值足以模拟室内室外条件。

通过将自动曝光与 Glow 后期处理(更多内容见下文),通过色调图的像素 白色 会流到辉光缓冲区,在摄影中产生典型的光晕效果。

../../_images/environment_hdr_bloom.png

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

../../_images/environment_hdr.png
  • 规模: 用于缩放照明的值。越亮的值生成越亮的图像,越小的值生成越暗的图像。

  • 最小流明: 自动曝光调整的最小亮度。亮度是光在屏幕所有像素中的平均值。

  • 最大流明: 自动曝光调整的最大亮度。

  • 速度: 亮度自我校正的速度。值越高,校正速度越快。

中后处理效果

环境中支持大量广泛使用的中、后处理效果。

屏幕空间反射(SSR)

此功能仅在使用gles3后端时可用。

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

../../_images/environment_ssr.png

另一个优点(即使只启用到最低限度)是它可以实时工作(而其他类型的反射是预先计算的)。这可以用来使角色、汽车等在移动时反射到周围的表面上。

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

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

  • 淡入 允许调整淡入曲线,这有助于使接触区域变软。

  • 淡出 允许调整淡出曲线,因此阶跃限制将柔和淡出。

  • 深度公差 可用于屏幕空间光线对间隙的命中容忍度。值越大,忽略的间隙就越多。

  • 粗糙度 将应用屏幕空间模糊来近似具有此材质特性的对象的粗糙度。

请记住,屏幕空间反射仅用于反射不透明几何体。不能反射透明对象。

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

此功能仅在使用gles3后端时可用。

如中所述 环境温度 部分中,来自光节点的光无法到达的区域(因为它在半径之外或阴影中)使用环境光照明。Godot可以使用giprobe、reflectionprobe、天空或恒定的环境颜色来模拟。然而,问题是,之前提出的所有方法在更大的范围(大的区域)上比在更小的几何层次上更有效。

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

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

../../_images/environment_ssao.png

启用这种效果,打开一盏灯,却不能欣赏它,这是一个常见的错误。这是因为SSAO只在 环境温度 光,不是直射光。

这就是为什么在上面的图像中,在直射光下(在左侧)效果不那么明显。如果要强制SSAO也使用直射光,请使用 轻微影响 参数(尽管这不正确,但有些艺术家喜欢它的外观)。

当与真正的间接光源(如Giprobe)结合时,SSAO看起来最好:

../../_images/environment_ssao2.png

通过以下几个参数可以调整SSAO:

../../_images/environment_ssao_parameters.png
  • Radius/Intensity: 要控制遮挡的半径或强度,可以使用这两个参数。半径以世界(公制)单位表示。

  • Radius2/Intensity2: 可以使用辅助半径/强度。结合大半径和小半径AO通常效果良好。

  • 拜厄斯: 这可以通过调整来解决自遮挡问题,尽管默认设置通常工作得很好。

  • 光影响: SSAO只影响环境光,但是增加此滑块也会影响直接光。有些艺术家更喜欢这种效果。

  • AO通道影响: 如果使用的值为零,则只有材质的AO纹理将用于环境光遮挡;不会应用SSAO。大于0的值将AO纹理乘以SSAO效果的程度不同。这不会影响没有AO纹理的材质。

  • 质量: 根据质量,SSAO将为每个像素在一个球体上采集更多的样本。高质量只适用于现代GPU。

  • 模糊: 使用的模糊内核类型。1X1内核是一个简单的模糊,它能更好地保留局部细节,但效率不高(通常在上面的高质量设置下效果更好),而3x3会更好地软化图像(有点像抖动的效果),但也不会保留局部细节。

  • 边缘锐度 :这可用于保持边缘的锐度(避免褶皱上没有AO的区域)。

景深/远模糊

此功能仅在使用gles3后端时可用。

这种效果在高端相机上模拟焦距。它使给定范围后的对象变模糊。它有个首字母 距离 用一个 过渡 地区(世界单位):

../../_images/environment_dof_far.png

这个 数量 参数控制模糊量。对于较大的模糊,调整 质量 可能需要避免伪影。

景深/近模糊

此功能仅在使用gles3后端时可用。

这种效果在高端相机上模拟焦距。它使靠近相机的对象变模糊(作用方向与模糊的方向相反)。它有个首字母 距离 用一个 过渡 地区(世界单位):

../../_images/environment_dof_near.png

这个 数量 参数控制模糊量。对于较大的模糊,调整 质量 可能需要避免伪影。

通常使用两种模糊来将观察者的注意力集中在一个给定的对象上:

../../_images/environment_mixed_blur.png

辉光

此功能仅在使用gles3后端时可用。

在摄影和胶卷中,当光量超过介质(无论是模拟还是数字)所支持的最大值时,通常会向外流出到图像的较暗区域。这是在Godot模拟的 Glow 效果。

../../_images/environment_glow1.png

默认情况下,即使启用了效果,它也将是弱的或不可见的。需要发生两个条件之一才能实际显示:

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

../../_images/environment_glow_threshold.png
    1. “Bloom”效果的值集大于0。当它增加时,它会将整个屏幕以更高的数量发送到辉光处理器。

../../_images/environment_glow_bloom.png

这两种情况都会导致光线开始从较亮的区域流出。

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

  • 强度 是效果的整体比例,它可以变强或变弱(0.0删除它)。

  • 强度 高斯滤波核的强度。较大的值会使过滤器饱和并向外扩展。一般来说,不需要更改此值,因为可以使用 水平 .

这个 混合模式 其效果也可以改变:

  • 添加剂 是最强的,因为它只是在图像上添加了辉光效果,而不涉及混合。一般来说,它太强了,不能使用,但可以在低强度的开花(产生梦幻般的效果)下看起来很好。

  • 屏幕 是默认值。它确保发光永远不会比它本身更亮,并作为一个周围伟大的工作。

  • 柔和的灯光 是最弱的,只在物体周围产生轻微的色彩干扰。这种模式最适用于黑暗场景。

  • 替换 可以用来模糊整个屏幕或调试效果。它只显示没有下面图像的辉光效果。

要更改辉光效果的大小和形状,Godot提供 水平 . 较小的级别是出现在对象周围的强发光,而较大的级别是覆盖整个屏幕的模糊发光:

../../_images/environment_glow_layers.png

不过,该系统的真正优势在于结合不同的层次,创造出更有趣的发光模式:

../../_images/environment_glow_layers2.png

最后,由于最高层是通过拉伸小的模糊图像创建的,因此可能会看到一些块状。有可能 双三次加标 以最低的性能成本获得RID。

../../_images/environment_glow_bicubic.png

调整

此功能仅在使用gles3后端时可用。

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

../../_images/environment_adjustments.png

第一种是能够改变典型的亮度、对比度和饱和度:

../../_images/environment_adjustments_bcs.png

第二种方法是提供颜色校正梯度。像下面这样规则的黑白渐变将不会产生任何效果:

../../_images/environment_adjusments_default_gradient.png

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

../../_images/environment_adjusments_custom_gradient.png