在延迟渲染路径中,Unity 将法线存储在 G 缓冲区中。
默认情况下,Unity 在法线纹理的 RGB 通道中对每个法线进行编码,x、y 和 z 各使用 8 位。这些值经过量化并因此损失一定的精度。此操作可提高性能,尤其是在移动端 GPU 上,但可能会导致光滑表面上出现色带瑕疵。
为了提高法线的质量,可以在通用渲染器资源中启用 Accurate G-buffer normals 属性。请遵循以下步骤:
将 Accurate G-buffer normals 设置为 On 时,Unity 使用八面体编码。法线矢量的值更加准确,但编码和解码操作会给 GPU 带来额外的负担。编码法线矢量的精度与前向渲染路径中采样值的精度类似。
下图显示了当摄像机非常靠近游戏对象时两个选项之间的视觉差异:
此选项不支持: