环境和后期处理
Godot 3提供了重新设计的环境资源(Environment resource), 以及一个全新的后期处理(post-processing)系统, 其开箱即用, 具有许多可用的效果.
环境
Environment资源存储控制渲染环境所需的所有信息. 这包括天空, 环境照明, 色调映射, 效果和调整. 它本身什么都不做, 但是一旦在以下位置之一中按优先级顺序使用它就会启用:
摄像机节点
环境可以设置为相机. 它将优先于任何其他设置.
这在想要覆盖现有环境时非常有用, 但通常使用下面的选项更好.
世界环境节点
WorldEnvironment节点可以添加到任何场景, 但每个活动场景树只能存在一个. 添加多个将导致警告.
添加的任何 Environment 都具有比默认 Environment 更高的优先级(后述)。这意味着它可以针对各个场景分别进行覆盖,这使它非常有用。
默认环境
可以设置默认环境, 当没有将环境设置为Camera或WorldEnvironment时, 该环境可用作后备环境. 只需前往项目设置 ->渲染 ->环境:
从项目管理器创建的新项目带有默认环境(default_env.tres
). 如果需要创建一个, 请将其保存到磁盘, 然后再在此处引用它.
环境可选项
以下是所有环境选项的详细说明以及如何使用它们.
背景
“背景(Background) “部分包含有关如何填充背景的设置(屏幕中未绘制对象的部分). 在Godot 3.0中, 背景不仅用于显示图像或颜色, 还可以改变物体受环境光和反射光影响的方式.
设置背景的方法有很多种:
** 清晰颜色(Clear Color )** 使用项目设置中定义的默认清晰颜色. 背景将是恒定的颜色.
自定义颜色(Custom Color) 与清晰颜色(Clear Color)类似, 但具有自定义颜色值.
天空(Sky) 可让您定义全景天空(360 度球体纹理)或程序式天空(具有渐变和可选太阳的简单天空)。物体将反射它并从中吸收环境光。
** 颜色+天空(Color + Sky )** 可让您定义天空(如上所示), 但使用恒定颜色值绘制背景. 天空仅用于反射和环境光.
环境光
环境(如此处定义)是一种光, 它影响具有相同强度的每个几何体. 它是全局的, 独立于可能添加到场景中的灯光.
有两种类型的环境光: 环境色 (恒定颜色乘以材质反射), 然后从 天空 获得一个(如前所述, 但天空需要设置为背景) 启用).
当 天空(Sky) 设置为背景时, 可以使用 天空贡献度(Sky Contribution) 设置在环境颜色(ambient color)和天空(sky)之间进行混合(为方便起见, 此值默认为1.0, 因此只有天空会影响对象).
以下是不同环境光对场景的影响比较:
最后有一个 能量(Energy) 设置, 这是一个乘数, 在使用HDR时非常有用.
一般来说, 环境光应该只用于简单的场景和大型外景, 或是出于性能考虑(环境光消耗少), 但它不能提供最好的光照质量. 最好是用ReflectionProbe或GIProbe生成环境光, 这样可以更忠实地模拟间接光的传播方式. 下面是使用平面环境色和GIProbe在质量上的比较:
使用上述方法之一, 物体获得恒定的环境照明, 由来自探头的环境光代替.
雾
雾, 就像在现实生活中一样, 使远处的物体逐渐消失成均匀的颜色. 物理效果实际上非常复杂, 但Godot提供了一个很好的近似. Godot有两种雾:
深度雾: 这个基于距相机的距离来应用.
高度雾: 此高度应用于任何低于(或高于)某个高度的物体, 无论距离相机的距离如何.
这两种雾类型都可以调整它们的曲线, 使它们的过渡或多或少变得清晰.
可以调整两个属性以使雾效果更有趣:
第一个是 Sun Amount,它利用雾的太阳颜色属性。当朝向平行光(通常是太阳)时,雾的颜色将会改变,模拟穿过雾的阳光。
第二个是 ** Transmit Enabled ** , 模拟更逼真的透光率. 在实践中, 它使光线在雾中更加突出.
色调映射
此选项仅在使用GLES3后端时适用.
选择应用于场景的色调映射曲线,选项为电影和游戏工业中所使用的标准曲线。除“Linear”(线性)外的色调映射运算子可以使亮部和暗部更均匀,同时防止高亮区域受到裁剪。
色调映射选项有:
Mode(模式):色调映射所使用的模式。
Linear(线性):默认的色调映射模式。这是最快也是最简单的色调映射运算子,但会导致高亮区域过曝,输出颜色出现可见的裁剪。
Reinhardt:对渲染后像素的颜色按照这个公式执行变化:
color = color / (1 + color)
。可以防止裁剪高亮区域,但最终的图像可能会有些暗淡。Filmic:防止裁剪高亮区域,最终的图像通常比 Reinhardt 鲜艳。
ACES Fitted:Academy Color Encoding System(学院色彩编码系统)色调映射器。ACES Fitted 比其他选项更耗性能一些,但对于高亮区域的处理方式更真实,越亮饱和度越低。ACES 输出的图像通常比 Reinhardt 和 Filmic 的对比度更高。想要让画面更具真实感时,推荐选用 ACES。
ACES:*已废弃(会在 Godot 4.0 中移除)。*与 ACES 的行为类似,但不会随着灯光的变亮而降低饱和度(真实度更低)。推荐使用 ACES Fitted,不推荐 ACES。
Exposure(曝光):色调映射曝光,模拟长时间获取的光照量(默认:
1.0
)。值越高,整体更亮。修改色调映射运算子或白点后,如果场景看上去太暗,请尝试将这个值略微调高。White(白点):光照映射白点,模拟白色在整个尺度中所处的位置(默认:
1.0
)。为了让光照更真实,推荐使用6.0
到8.0
之间的值。值越高,高光区域更少过曝,但会让场景整体看起来更暗。
自动曝光(HDR)
此选项仅在使用GLES3后端时适用.
尽管在大多数情况下, 照明和纹理都受到艺术家的严格控制, 但Godot通过自动曝光机制支持简单的高动态范围实现. 当将内部区域与低光和户外相结合时, 这通常用于真实性. 自动曝光模拟相机(或眼睛), 以适应明暗位置和不同光量.
使用自动曝光的最简单方法是确保室外灯光(或其他强光)的能量超过 1.0。这是通过调整它们的 Energy 乘数(对灯光本身)来实现的。为了使其保持一致,Sky 通常也需要使用能量乘数,以配合平行光。通常情况下,数值在 3.0 到 6.0 之间,就足以模拟室内室外条件。
通过将自动曝光与 Glow 后处理相结合(更多内容如下),超过色调映射 White 的像素将会逸出至辉光缓冲区,从而在摄影中创造典型的泛光效果。
“自动曝光” 部分中的用户可控值具有合理的默认值, 但您仍然可以调整它们:
比例: 用于缩放照明的值. 较亮的值会产生较亮的图像, 较小的值会产生较暗的图像.
** Min Luma:** 自动曝光旨在调整的最小亮度. 亮度是屏幕所有像素中光线的平均值.
** Max Luma:** 自动曝光旨在调整的最大亮度.
速度: 亮度校正的速度. 值越高, 发生的校正越快.
中后期处理效果
环境支持大量广泛使用的中间和后期处理效果.
屏幕空间反射(SSR)
此选项仅在使用GLES3后端时适用.
虽然 Godot 支持三种反射数据源(Sky、ReflectionProbe、GIProbe),但它们可能无法为所有情况提供足够的细节。屏幕空间反射最有意义的场景是物体彼此接触(地板上的物体、桌子上的物体、漂浮在水面上等)。
另一个优点(即使只启用最小), 它是实时工作(而其他类型的反射是预先计算的). 这可以用来使人物, 汽车等在移动时反射到周围的表面上.
一些用户控制的参数可用于更好地调整技术:
最大步数 确定反射的长度. 这个数字越大, 计算成本就越高.
淡入 允许调整淡入曲线, 这有助于使接触区域更柔和.
淡出 允许调整淡出曲线, 因此步长限制会轻微淡出.
** Depth Tolerance ** 可用于屏幕空间射线对间隙的容差. 值越大, 忽略的差距就越大.
粗糙度 将应用屏幕空间模糊来近似具有此材质特征的对象的粗糙度.
请记住, 屏幕空间反射仅适用于反射不透明几何体. 透明对象无法反映.
屏幕空间环境遮挡(SSAO)
此选项仅在使用GLES3后端时适用.
正如在 环境 部分提到的, 光节点的光线无法到达的区域会被环境光照亮(要么是因为它在半径之外, 要么是阴影).Godot可以使用GIProbe, ReflectionProbe, Sky或恒定的环境色来模拟这种情况. 但问题是, 之前提出的所有方法都更多地作用于较大的尺度(大区域), 而不是较小的几何层面.
恒定环境色和Sky在任何地方都是一样的, 而GI和反射探针的局部细节较多, 但不足以模拟光线无法填充到中空或凹面特征内部的情况.
这可以用屏幕空间环境遮挡来模拟. 如下图所示, 它的目的是确保凹陷区域更暗, 模拟光线进入的较窄路径:
启用此效果, 打开灯光并且无法欣赏它是一个常见的错误. 这是因为SSAO仅作用于* ambient * light, 而不是直接光.
这就是为什么在上图中,直射光下效果不太明显的原因(在左边)。如果你想强制 SSAO 也在直射光下工作,请使用 Light Affect(光线影响)参数(尽管并这不好,但有些设计师喜欢它的外观)。
当与真正的间接光源结合时,SSAO看起来最好, 比如GIProbe:
可以使用以下几个参数调整SSAO:
半径/强度: 要控制遮挡的半径或强度, 可以使用这两个参数. 半径是世界(公制)单位.
** Radius2 / Intensity2:** 可以使用辅助半径/强度. 结合大半径和小半径AO通常效果很好.
偏置(Bias):这可以通过调整来解决自我遮挡问题,但默认情况下通常效果不错。
光线影响(Light Affect): SSAO仅影响环境光线, 但增加此滑块可能会影响直射光线. 有些艺术家喜欢这种效果.
** Ao通道影响(Ao Channel Affect):** 如果使用零值, 则仅将材质的AO纹理用于环境光遮挡; SSAO将不适用. 大于0的值会在不同程度上将AO纹理乘以SSAO效果. 这不会影响没有AO纹理的材料.
质量(Quality): 根据质量,SSAO将针对每个像素对球体进行更多采样. 高品质仅适用于现代GPU.
模糊(Blur): 使用的模糊内核类型. 1x1内核是一个简单的模糊, 可以更好地保留局部细节, 但效率不高(通常在上面的高质量设置下效果更好), 而3x3会更好地柔化图像(有一点像抖动效果)但不保留局部 细节也是如此.
边缘清晰度(Edge Sharpness) : 这可用于保持边缘的清晰度(避免折痕处没有AO的区域).
景深/远模糊
此效果可模拟高端相机的焦距. 它模糊了给定范围后面的物体. 它有一个 ** ** 距离 , ** 过渡 区域(世界单位):
** Amount ** 参数控制模糊量. 对于较大的模糊, 可能需要调整 质量 以避免伪影.
景深/近模糊
此效果可模拟高端相机的焦距。它使靠近相机的物体模糊(在远处模糊的相反方向上作用)。它具有 Distance(距离)以及 Transition(过渡)区域(使用世界单位):
** Amount ** 参数控制模糊量. 对于较大的模糊, 可能需要调整 质量 以避免伪影.
通常使用两种模糊将观众的注意力集中在给定对象上:
辉光
在摄影和胶片中,当光量超过介质支持的最大值(无论是模拟还是数字)时,它通常会向外渗出到图像的较暗区域。在 Godot 中使用 Glow 模拟这种效果。
默认情况下,即使启用了效果,它也会变弱或不可见。实际显示它需要发生的两个条件之一:
- 像素中的光线超过 HDR阈值 (其中0是所有光线都超过该阈值,1.0是光线超过色调映射器 白 值). 通常情况下, 这个值应该在1.0, 但它可以调低, 以允许更多的光线渗入. 还有一个额外的参数, HDR Scale , 允许对超过阈值的光线进行缩放(使其更亮或更暗).
- 泛光效果的值设置大于 0。随着它的增加,它会以更高的数量将整个屏幕发送到辉光处理器。
两者都会导致光从较亮的区域开始逸出。
一旦看到辉光,就可以通过一些额外的参数来控制它:
强度(Intensity) 是效果的整体比例, 可以将其增强或减弱(0.0可以将其删除).
强度(Strength) 是指高斯滤波器内核的处理强度. 数值越大, 滤波器越饱和并向外扩展. 一般来说, 不需要改变这个值, 因为可以通过 Levels 更有效地调整大小.
效果的混合模式也可以改变:
Additive 添加是最强的一种,因为它只在图像上添加辉光效果,不涉及混合。一般来说,它太强了,不能使用,但在低强度的泛光下可能看起来很好,会产生一种梦幻般的效果。
Screen 确保辉光永远不会比自己更亮,它作为一个周围的方式将非常好。
Softlight 是默认的,也是最弱的一种,只在物体周围产生细微的颜色扰动。这种模式在黑暗场景中效果最好。
Replace 替换可以用来模糊整个屏幕或调试效果。它只显示辉光的效果,没有下面的图片。
Godot 提供了等级,用于改变辉光效果的大小和形状。较小的级别是在物体周围出现的较强的辉光,而大的级别是覆盖整个屏幕的朦胧辉光:
然而,这个系统的真正优势在于结合水平来创造更有趣的辉光模式:
最后, 随着最高的图层在对微小模糊图像的拉伸中被创建, 我们可能会看到一些块状模糊. 启用 Bicubic Upscaling 可以以最低的性能成本拜托它. 注意这只有在使用GLES3时才有效.
调整
在处理结束时,Godot提供了进行一些标准图像调整的可能性.
第一个是能够改变典型的亮度, 对比度和饱和度:
第二种是通过提供颜色校正梯度. 如下所示的常规黑色到白色渐变将不起作用:
但是创建自定义的会允许将每个通道映射到不同的颜色: