光照故障排除和性能
线性渲染概述

相关主题

Unity 的光照系统与它的许多其他效果和系统之间会彼此影响。

质量设置 (Quality settings)

The Quality window has many settings that affects lighting and shadows.

播放器设置 (Player settings)

The Player window allows you to choose the rendering path and color space.

摄像机检视面板 (Camera Inspector)

Camera Inspector 允许您根据摄像机来覆盖有关渲染路径的 Unity 播放器设置。还可以在此处激活 HDR。

渲染路径

Unity 支持许多渲染技术,也称为“路径”。在启动项目时需要做出的一个重要的早期决定就是使用哪条路径。Unity 的默认路径是“前向渲染”。

在前向渲染中,对于每个对象,都会根据每个影响该对象的光源以“pass”的形式渲染该对象。因此,根据范围内的光源数量,每个对象可能会被渲染多次。

这种方法的优点是它可以非常快,这意味着硬件要求低于其他方法。此外,前向渲染为我们提供了广泛的自定义“着色模型”,可以快速处理透明度。这种方案还允许使用诸如“多重采样抗锯齿”(MSAA) 之类的硬件技术,这些技术在其他替代方案(例如延迟渲染,这种方案会对图像质量产生很大影响)中是没有的。

然而,前向路径的一个显著缺点是我们必须为每个光源付出渲染成本。也就是说,影响每个对象的光源越多,渲染性能将越慢。对于某些具有大量光源的游戏类型,这可能导致成本过高。但是,如果能够管理游戏中的光源数量,则前向渲染实际上可成为一种非常快速的解决方案。

另一方面,在“延迟”渲染中,我们将光源信息的着色和混合推迟到第一个 pass 之后在屏幕进行,此情况下每个表面的位置、法线和材质作为一系列的屏幕空间纹理渲染到“几何缓冲区”(G 缓冲区)。然后,我们将这些结果与光照 pass 合并在一起。这一方法的主要优点在于,光照的渲染成本与光源照亮的像素数量(而不是光源自身的数量)成正比。因此,您不再受到需要在屏幕上渲染的光源数量的限制,对于某些游戏而言,这是一个关键优势。

延迟渲染提供了高度可预测的性能特征,但通常需要更强大的硬件。此外,某些移动端硬件不支持延迟渲染。

有关延迟渲染路径、前向渲染路径和其他可用渲染路径的更多信息,请参阅主文档页面

高动态范围

高动态范围渲染可让您模拟比传统方法广泛得多的颜色。反过来,这通常意味着必须选择要在屏幕上显示的亮度范围。通过这种方式,可以模拟亮度的巨大差异,比如,我们场景中的室外光照与着色区域之间的亮度差异。我们还可以创建“泛光”或发光等效果,只需将效果应用于场景中的这些明亮颜色。像这样的特殊效果可以为粒子或其他可见光源增添真实感。

有关 HDR 的更多信息,请参阅相关的手册页

色调映射

色调映射是颜色分级后期处理效果的一部分,在描述如何将 HDR 中的颜色映射到您在屏幕上可以看到的颜色时,色调映射不可或缺。有关更多信息,请参阅颜色分级 (Color Grading) 效果。

反射

虽然没有明确的光照效果,但若要逼真地显示反光的材质(例如闪亮的金属或玻璃),反射非常重要。现代着色技术(包括 Unity 的标准着色器)将反射集成到材质的属性中。

有关更多信息,请参阅反射部分。

线性颜色空间

除了选择渲染路径之外,在实施项目光照之前选择“颜色空间”(Color Space) 也非常重要。颜色空间确定了在光照计算中混合颜色或从纹理中读取值时 Unity 使用的数学算法。这可能会对游戏的真实感产生巨大影响,但在许多情况下,决定使用哪个颜色空间可能会受到目标平台硬件限制的影响。

要实现逼真渲染,首选的颜色空间是“线性”。

使用线性空间的一个显著优点是,随着光源强度的增加,提供给场景中着色器的颜色会以线性方式增亮。如果使用替代方案“伽马”颜色空间,那么随着值的增加,亮度将迅速变为白色,这对图像质量不利。

有关更多信息,请参阅线性渲染

光照故障排除和性能
线性渲染概述