官方文档:https://docs.unity3d.com/2019.1/Documentation/Manual/LightingInUnity.html
第一章:Lighting Overview
简单来讲,Unity中的灯光可以被认为是实时光(realTime),或者是预先计算好的(precomputed),这两种可以结合来使用.
RealTime Lighting(实时光):
默认情况下,unity是使用的实时光并每一帧更新,当灯光和游戏对象子啊场景中移动时,灯光会立即更新.
不过,实时光在自己使用的时候并不会反射,所以为了创造更真实的场景,我们需要启用Unity中的预加载灯光方案
Baked lightmaps(烘焙光照贴图):
![](https://i-blog.csdnimg.cn/blog_migrate/f90b07de65ec7ff40e1126648580651a.png)
unity使用一种叫做全局光照的技术(或者GI)计算复杂的静态光照效果,并将它们储存在一张叫光照贴图的纹理贴图中,这个计算过程叫做烘焙.
在制作光照贴图的时候,计算光源对场景中静态物体的影响,并将结果叠加在场景几何体的纹理上,来创建光照效果.
在烘焙光照贴图下,这些光照贴图在游戏运行过程中是不会改变的,因为被称为"静态".实时光可以叠加并附加使用在灯光映射场景的顶部,但不能相互地改变灯光映射本身.
Precomputed realtime global illumination:
虽然静态光照贴图无法对场景中光照条件的变换做出反应,但预先计算的实时GI提供了一种交互式更新复杂场景光照的技术
![](https://i-blog.csdnimg.cn/blog_migrate/f306eb012e178c557398316be88cf79e.gif)
为了在可玩的帧率上实现这些效果,我们需要将一些冗长的数字处理从一个实时过程转变为一个预先计算的过程。
预计算将计算复杂光行为的负担从游戏过程中发生的事情转移到了时间不再那么重要的情况下。我们将此称为“脱机”进程
Benefits and costs:
虽然可以同时使用烘焙GI照明和预计算实时GI,但要注意渲染的性能成本,我们不仅要在视频内存中存储这两组光映射,还要再=在着色器中支付解码的处理成本
在某些情况下,您可能希望选择一种照明方法而不是另一种,这取决于您的项目的性质和您所期望的硬件的性能。例如,在视频内存和处理能力更有限的移动设备上,很可能采用烘烤GI照明方法会获得更高的性能。在具有专用图形硬件的独立计算机或最近的游戏机上,很有可能使用预先计算的实时GI,甚至同时使用两个系统。
采取哪种方法的决定必须根据特定项目的性质和所需的目标平台进行评估。请记住,当针对一系列不同的硬件时,决定需要哪种方法的往往是性能最差的那个硬件决定的.
第二章:Lighting Window:
灯光窗口路径:Window --> Rendering --> Lighting Settings
灯光窗口有三个选项卡:
Scene:scene中的设置是针对于整个场景的而不是单个游戏对象,这些设置控制灯光效果和优化选项.
Global Maps:显示了所有的由GI光照生成的光照贴图资产文件
Object Maps:显示当前选定的物体的GI光照贴图的纹理预览(包括阴影遮罩)
具体选项详情请查看官方文档.
Types of light:
灯光有六种分别是:
Point lights(点光源)
Spot lights(聚光灯)
Directional lights(平行光)
Area lights(区域光)
Emissive materials(放射性材质)
Ambient light(环境光)