Unity 的光照系统与它的许多其他效果和系统之间会彼此影响。
Quality settings 窗口包含的很多设置都会影响光照和阴影。
Unity Player settings 窗口允许您选择渲染路径和颜色空间。
Camera Inspector 允许您根据摄像机来覆盖有关渲染路径的 Unity 播放器设置。还可以在此处激活 HDR。
Unity 支持许多渲染技术,也称为“路径”。在启动项目时需要做出的一个重要的早期决定就是使用哪条路径。Unity 的默认路径是“前向渲染”。
在前向渲染中,对于每个对象,都会根据每个影响该对象的光源以“pass”的形式渲染该对象。因此,根据范围内的光源数量,每个对象可能会被渲染多次。
这种方法的优点是它可以非常快,这意味着硬件要求低于其他方法。此外,前向渲染为我们提供了广泛的自定义“着色模型”,可以快速处理透明度。这种方案还允许使用诸如“多重采样抗锯齿”(MSAA) 之类的硬件技术,这些技术在其他替代方案(例如延迟渲染,这种方案会对图像质量产生很大影响)中是没有的。
然而,前向路径的一个显著缺点是我们必须为每个光源付出渲染成本。也就是说,影响每个对象的光源越多,渲染性能将越慢。对于某些具有大量光源的游戏类型,这可能导致成本过高。但是,如果能够管理游戏中的光源数量,则前向渲染实际上可成为一种非常快速的解决方案。
另一方面,在“延迟”渲染中,我们将光源信息的着色和混合推迟到第一个 pass 之后在屏幕进行,此情况下每个表面的位置、法线和材质作为一系列的屏幕空间纹理渲染到“几何缓冲区”(G 缓冲区)。然后,我们将这些结果与光照 pass 合并在一起。这一方法的主要优点在于,光照的渲染成本与光源照亮的像素数量(而不是光源自身的数量)成正比。因此,您不再受到需要在屏幕上渲染的光源数量的限制,对于某些游戏而言,这是一个关键优势。
延迟渲染提供了高度可预测的性能特征,但通常需要更强大的硬件。此外,某些移动端硬件不支持延迟渲染。
有关延迟渲染路径、前向渲染路径和其他可用渲染路径的更多信息,请参阅主文档页面。
高动态范围渲染可让您模拟比传统方法广泛得多的颜色。反过来,这通常意味着必须选择要在屏幕上显示的亮度范围。通过这种方式,可以模拟亮度的巨大差异,比如,我们场景中的室外光照与着色区域之间的亮度差异。我们还可以创建“泛光”或发光等效果,只需将效果应用于场景中的这些明亮颜色。像这样的特殊效果可以为粒子或其他可见光源增添真实感。
有关 HDR 的更多信息,请参阅相关的手册页。
Tonemapping is a post-processing effect that is required to describe how to map colours from HDR to what you can see on the screen. A variety of methods are included or you can write your own.
Please see the Tonemapping article for more information.
虽然没有明确的光照效果,但若要逼真地显示反光的材质(例如闪亮的金属或玻璃),反射非常重要。现代着色技术(包括 Unity 的标准着色器)将反射集成到材质的属性中。
有关更多信息,请参阅反射部分。
除了选择渲染路径之外,在实施项目光照之前选择“颜色空间”(Color Space) 也非常重要。颜色空间确定了在光照计算中混合颜色或从纹理中读取值时 Unity 使用的数学算法。这可能会对游戏的真实感产生巨大影响,但在许多情况下,决定使用哪个颜色空间可能会受到目标平台硬件限制的影响。
要实现逼真渲染,首选的颜色空间是“线性”。
使用线性空间的一个显著优点是,随着光源强度的增加,提供给场景中着色器的颜色会以线性方式增亮。如果使用替代方案“伽马”颜色空间,那么随着值的增加,亮度将迅速变为白色,这对图像质量不利。
有关更多信息,请参阅线性渲染。