光照模式和类型

Tutorial

intermediate

+0XP

15 mins

(9)

Unity Technologies

光照模式和类型

在本教程中,我们将比较 Unity 中可用的光照模式和类型以及它们的优缺点。

1. 光照模式

在 Unity 中,有几种不同的光照模式可供选择。这些模式与光源的移动性及其在场景中的使用方式有关。各种模式在性能方面存在差异,因此在实现光照时,这是一个重要的考虑因素。在本教程中,我们将探讨三种不同光照模式(bakedmixedreal-time)的优缺点。

2. 烘焙光照

烘焙光照模式提供静态光照,也就是说,它在运行期间不会发生改变。烘焙是指在运行游戏前将光照数据存储在纹理贴图中的过程。

关于烘焙光照模式,有以下重要注意事项:

  • 光照和阴影被烘焙到了光照贴图中,因此在运行时无法修改。这项处理是在 Unity 中创建光照时完成的,因此不影响运行时性能。
  • 阴影是静态的,如果在游戏过程中有动态或移动对象,阴影可能会显得很奇怪。
  • 烘焙光照模式是我们在本指南中讨论的计算成本最低的方法。

3. 实时光照

实时光照模式提供动态或可移动的光照。实时光照模式的主要特点如下:

  • 动态光照和阴影未烘焙到光照贴图中,可在运行时进行修改。
  • 实时光照模式是我们在本指南中讨论的计算成本最高的光照模式。

4. 混合光照

混合光照模式将静态光源与移动对象结合在一起。可以将其视为其他两种方法的混合体。

混合光照模式的主要特点如下:

  • 提供动态的直接光照和阴影。
  • 混合光照类型的光源可以参与静态物体的光照贴图烘焙过程。
  • 光源会影响动态对象,包括为这些对象生成阴影。
  • 可在运行时更改强度,并且仅更新直接光照。
  • 混合光照模式是一种代价高昂的计算方法。

5. 实时光源和光源类型

在构建 3D 移动应用程序时,应尝试使用烘焙光照、光照探针和材质效果处理所有的光照。当需要使用实时光源时,必须考虑要使用的实时光源类型。各种类型的计算成本存在差异:

  • 方向光:方向光朝所有方向发射、无衰减,是成本最低的实时光照。通常只需要一个方向光,因为它可以照亮整个场景。这意味着,在进行前向渲染时,Unity 将始终渲染一个方向光。即使场景中没有方向光,也是如此。
  • 点光源:点光源位于空间中的一个点,并在所有方向上均匀发光。
  • 聚光灯:相比球形点光源,聚光灯能剔除更多对象,因此它是成本第二低的实时光照类型。限制锥体宽度,只让它照亮选定对象,以获得最佳性能。

使用聚光灯和点光源看似时尚,但也会影响性能。相比之下,方向光计算成本较低,并可照亮所有区域。小区域应使用聚光灯,大区域应使用点光源,同时还应考虑它们对性能的影响。

阴影计算可能是光照计算中开销最大的部分,向各个方向投射光线会增加阴影计算所花费的计算能力。

动态光源的渲染成本很高,最好不要在移动游戏中使用。有时,3D 引擎会根据所用的设备和图形 API 限制其使用。例如,在 Unity 通用渲染管线前向渲染器中,每个对象最多只能使用 8 个光源(使用 OpenGL ES 2.0 时,限制为 4 个光源)。

6. 总结

光照是 3D 可视化的重要组成部分,但在场景中放置光源之前,需要考虑性能影响。在下一个教程中,我们将介绍在静态对象上生成光照的最佳实践。

Complete this Tutorial