技术专区 \ Unity3D

Unity预计算实时GI(一)介绍

Unity3D Gi 预计算实实Gi ⋅ 2017-05-16 13:03:38
在Unity中有两种区别很大的技术被用于计算全局光照GI或光源反射,它们就是烘焙全局光照(Baked GI)和预计算实时全局光照(Precomputed Realtime GI)。本文主要介绍预计算实时全局光照(PRGI),学习如何使用Unity全局光照计算系统 — Enlighten系统来优化一个场景,让预计算只需要几分钟而非几小时。

为什么要使用PRGI

当启用PRGI时,光照预计算指的是计算静态几何对象周围光的反射,并存成数据给Runtime执行使用的过程。这个过程减少了原本必须在Runtime执行时的光照计算量,可以让项目在保持FPS稳定的同时,还允许使用实时反射光照。

当启用烘焙GI(Baked GI)时,预计算的过程会计算并产生传统的光照贴图(Lightmap),这些贴图会以资源(Assets)的形式存在项目中,但是无法在Runtime执行时被更改。而PRGI则是使用不同的方法生成光照贴图, PRGI计算的结果会被存成光照数据文件(Lighting Data Asset),这些数据可以在Runtime执行时实时产生和更新一组低分辨率的光照图。

不过,除非场景已经为PRGI计算优化过,否则完成这些计算所需的时间可能会很长。下面我们一起来看一下如何针对Enlighten系统来做场景优化,从而把预计算时间从几小时缩短到几分钟。我们将会涵盖以下几个要点:

  • 如何定义适合当前场景的光照分辨率

  • 了解什么是光照图(Charts),以及它是如何影响计算时间的

  • 如何开始预计算

  • 使用光照探针来降低光照方案的复杂度

  • 改进由Unity PRGI自动拆解出的UV

  • 了解何谓集群(Clusters),以及如何用它来产生GI照明

  • 了解如何使用光照贴图参数来微调单个游戏对象上的光照

一旦我们学习并了解了这些技术,我们就可以充分利用PRGI的优点:快速的光照迭代,以及在打光过程中和在游戏过程中对实时反射光照进行快速试验的能力。

PRGI优化演示

在下图所示的场景里,用没有优化过的默认设置,在我们的测试机上预计算光照大约花了7.5个小时。显然这是无法接受的!

无优化场景(上图) :预计算7.5小时,有优化场景(下图):预计算2.25分钟

使用本教学所介绍的技术进行大约30分钟的场景准备后,这个场景的预计算仅仅花了2.25分钟就得到了产品等级的效果。这个技术的好处是显而易见的,因为我们可以在游戏过程中快速迭代场景照明而不需要重新计算GI和改变GI照明。

学习前准备

您可以点击【阅读原文】,在Asset Store资源商店上下载官方光照优化素材包,跟着我们进一步学习。本教学所用的是Scenes/Article目录下的范例场景:

  • LightingTutorialOptimal:展示PRGI如何设定能用最短的时间呈现出产品等级的结果。

  • LightingTutorialNonOptimal:呈现了我们在项目中常看到的问题,要么造成无法烘焙,要么花费无法接受的时间烘焙,这是一个很好的错误示范。

  • LightingTutorialStart:我们在教学过程中用到的场景,我们会按照步骤一步一步将它变成一个产品等级的结果。

总结

本文为大家阐述了用Unity进行预计算实时GI的重要性和开始学习预计算实时GI的必要准备工作。