烘焙是游戏方面无法避开的场景优化工作,通常烘焙是一个从模型中提取和存储信息的过程,通过预先计算表面和间接照明减少资产占用的系统资源,从而达到优化项目的目的。

烘焙的目的是为我们更好的工作,只是该过程会有点麻烦,但在整个工作流程中是非常有用的,当然操作不当它也可能会造成资源的浪费;因此,在 Unity 中需要找到一个较为好的烘焙光照的方法。
那么本文聊一聊光照烘焙的方式、如何在 Unity 中使用烘焙光照以及如何使用 Contribute GI。
光照烘焙的方式
在游戏中渲染静态光照有两种选择:
实时光照或烘焙光照,也可以对两者使用混合光照,但咱们这只专注于单独查看这些光照以及可能想要使用烘焙照明的原因。
实时照明
实时照明是实时的显示光照的信息,这个过程可用于在动态和静态的对象上投射的阴影和镜面高光;通过使用实时光照,对象上的信息将自动通过材质管道,此过程需要在每一帧上进行计算周围的一切,这组复杂的过程可以很肯定非常损耗资源。
烘焙光照
烘焙光照用于静态对象,存在柔和阴影但没有镜面高光,动态光照对象不会投射阴影;它的工作方式是从光源周围的纹理中收集数据并生成光照贴图供以后使用;然后使用光照贴图预先计算表面的亮度。
…
但是 Unity 跟其他 CG 工具还有点不一样(例如 3DMax 和 Vray 的间接照明,计算速度慢的超乎你的想象,这种方式不适合游戏方面,当然也有烘焙光照的解决方法,只是准确不准确的问题),因为 Unity 中没有在任何运行时照明计算中合并这些灯光;相反,它会预先计算它们的光照信息;因为不是逐帧计算的,因此使用起来要方便很多,那么该优点也是游戏引擎被当下CG工作者偏爱的较为主要的原因了。
Unity中的烘焙灯光步骤
首先,打开 Unity 灯光设置,可以通过窗口菜单 – 渲染 – 照明。

这个弹出的来的灯光面板你可以将其拖拽到自己认可的布局上,例如停靠在 Inspector 的旁边,随你。

接着选择光源,在灯光通用设置中将模式改为烘焙选项。

如果你使用的是自发光对象而不是其他的标准灯光,其实也可以使用烘焙照明选项;可以在 Emission Inputs 选项卡中看到全局照明的选项。

接着选择静态对象并在 Inspector 右上角使用下拉菜单切换为 Contribute GI。

在 Lighting 窗口中,将 Lightmapper(光照贴图) 选择 Progressive GPU Preview(渐进式GPU预览),然后单击 Generate Lighting(生成照明)。

此时会在该面板右下角看到 Global illumination(全局照明)蓝色的进度条,那么这也说明了烘焙灯光正在计算有效处理中,因此你可以休息一下,翻看下朋友圈。

最终结果

该 Unity 场景使用了区域光和自发光纹理;发射纹理由区域灯补充,它的形状适合每个物体的发射区域。
文本总结
在 Unity 中使用烘焙照明一般情况下可以避免加载资源的负重情况,比起实时照明也能呈现出较好的质量。
在优化过程中使用 Contribute GI 通常可以让烘焙事半功倍,因为又快有好。