
光照模式和类型
Tutorial
intermediate
+0XP
15 mins
(9)
Unity Technologies

在本教程中,我们将比较 Unity 中可用的光照模式和类型以及它们的优缺点。
1. 光照模式
在 Unity 中,有几种不同的光照模式可供选择。这些模式与光源的移动性及其在场景中的使用方式有关。各种模式在性能方面存在差异,因此在实现光照时,这是一个重要的考虑因素。在本教程中,我们将探讨三种不同光照模式(baked、mixed 和 real-time)的优缺点。
2. 烘焙光照
烘焙光照模式提供静态光照,也就是说,它在运行期间不会发生改变。烘焙是指在运行游戏前将光照数据存储在纹理贴图中的过程。
关于烘焙光照模式,有以下重要注意事项:
- 光照和阴影被烘焙到了光照贴图中,因此在运行时无法修改。这项处理是在 Unity 中创建光照时完成的,因此不影响运行时性能。
- 阴影是静态的,如果在游戏过程中有动态或移动对象,阴影可能会显得很奇怪。
- 烘焙光照模式是我们在本指南中讨论的计算成本最低的方法。
3. 实时光照
实时光照模式提供动态或可移动的光照。实时光照模式的主要特点如下:
- 动态光照和阴影未烘焙到光照贴图中,可在运行时进行修改。
- 实时光照模式是我们在本指南中讨论的计算成本最高的光照模式。
4. 混合光照
混合光照模式将静态光源与移动对象结合在一起。可以将其视为其他两种方法的混合体。
混合光照模式的主要特点如下:
- 提供动态的直接光照和阴影。
- 混合光照类型的光源可以参与静态物体的光照贴图烘焙过程。
- 光源会影响动态对象,包括为这些对象生成阴影。
- 可在运行时更改强度,并且仅更新直接光照。
- 混合光照模式是一种代价高昂的计算方法。
5. 实时光源和光源类型
在构建 3D 移动应用程序时,应尝试使用烘焙光照、光照探针和材质效果处理所有的光照。当需要使用实时光源时,必须考虑要使用的实时光源类型。各种类型的计算成本存在差异:
- 方向光:方向光朝所有方向发射、无衰减,是成本最低的实时光照。通常只需要一个方向光,因为它可以照亮整个场景。这意味着,在进行前向渲染时,Unity 将始终渲染一个方向光。即使场景中没有方向光,也是如此。
- 点光源:点光源位于空间中的一个点,并在所有方向上均匀发光。
- 聚光灯:相比球形点光源,聚光灯能剔除更多对象,因此它是成本第二低的实时光照类型。限制锥体宽度,只让它照亮选定对象,以获得最佳性能。
使用聚光灯和点光源看似时尚,但也会影响性能。相比之下,方向光计算成本较低,并可照亮所有区域。小区域应使用聚光灯,大区域应使用点光源,同时还应考虑它们对性能的影响。
阴影计算可能是光照计算中开销最大的部分,向各个方向投射光线会增加阴影计算所花费的计算能力。
动态光源的渲染成本很高,最好不要在移动游戏中使用。有时,3D 引擎会根据所用的设备和图形 API 限制其使用。例如,在 Unity 通用渲染管线前向渲染器中,每个对象最多只能使用 8 个光源(使用 OpenGL ES 2.0 时,限制为 4 个光源)。
6. 总结
光照是 3D 可视化的重要组成部分,但在场景中放置光源之前,需要考虑性能影响。在下一个教程中,我们将介绍在静态对象上生成光照的最佳实践。