Skip to main content
ARShow
ARShow
 首页 » 资源教程 » Unity3D教程

Unity 技术分享|渐进光照贴图

2016年10月18日 19:00:5637590ARINCHINA

今年三月份,Unity 在 GDC 上首次展示了渐进光照贴图技术(Progressive Lightmapper),而且我们一直在致力于开发这项特性。

您可以观看下面的视频,大概了解这项技术目前的进展:

Unity 技术分享|渐进光照贴图 Unity3D教程 第1张

Progressive Lightmapper 是什么?

渐进光照贴图(Progressive Lightmapper)是一种无偏移的蒙特卡洛方法路径追踪器,它可以与 Unity 编辑器中的全局光照(GI)配合使用,来烘焙光照贴图。行业曾预测,随着近 40 年技术水平的提高,实时应用程序中的实时光线追踪会在不久的将来出现,而且在未来 5 年内就极可能实现。因此目前为止渐进光照贴图,只用作烘焙光照的备选方案。

那么 Enlighten 全局光照系统怎么办?Enlighten 目前还不会有什么大的变动。Enlighten 提供了实时 GI 特性,而且它还暂不能与路径追踪器配合使用。

为什么选择它?

渐进光照贴图(Progressive Lightmapper)的目标是,极大地改善场景光照烘焙的工作流程。目前 Unity 版本对场景的任何修改一般都需要重新烘焙场景,才能看到最终的结果。

Enlighten 带来的好处是,能够让我们实时地看到光照的结果。然而,任何参数、纹理或几何图形的变动都需要对场景重新烘焙,而您不会察觉到这一过程的发生。

例如,在项目开发的迭代过程中调整阴影烘焙或反射照明等级,为了能够看到调整的结果您通常都需要等上一段时间。这明显大大降低了工作效率。有了渐进光照贴图技术,您可以立刻看到调整结果。比如,最开始场景视图中的渲染结果会有一些噪点,但随后画面质量会立刻提升。

Unity 技术分享|渐进光照贴图 Unity3D教程 第2张

此外我们还为它做了优化调整,即优先对视口区域进行计算和烘焙。该区域结束后,再继续对场景中其余的部分计算和烘焙。

另外还有一个好处,在大多数情况下渐进光照贴图的健壮性更佳。因为它是间接地以光照贴图的全分辨率进行烘焙,所以其渲染结果中产生的瑕疵更少。它的设置很容易,可以提供一个展开的 UV 或让 Unity 自己创建一个,并自行设定烘焙分辨率。此外,您之前掌握的相关知识,在这里仍然是适用的。我们还能轻松地预测渲染需要的时间,进度条上的倒数计时能够精确地告诉您,还需要多少时间才能完成烘焙。

Unity 技术分享|渐进光照贴图 Unity3D教程 第3张

最后,如果您觉得渲染结果已经够好了,就可以直接停止烘焙,此时您的场景就会保持在停止烘焙时的状态。所以,您可以随时停止烘焙,在添加一些内容或增设一些样本后继续烘焙。

它暂时无法实现什么?

需要注意的是,它不是实时 GI 的替代品。它只能在 Unity 编辑器中进行烘焙,因此您不能在「游戏中」进行烘焙操作。这就意味着,无法对游戏中实现实时程序场景使用烘焙 GI 了,也不能根据一天中的某个特定时间,更改光照并实时烘焙。我们打算先在 Unity 编辑器中的烘焙工作流逐步完善,然后再考虑其他的部分。

另外,它的渲染速度不一定比 Enlighten 快。如果您专门为 Enlighten 调整了场景,则 Enlighten 的渲染速度也可以非常快。因此,我们不能保证渐进光照贴图(Progressive Lightmapper)在所有的场景中都是最快的。不过使用渐进光照贴图的话,从开始烘焙到得到视觉反馈所需的时间还是会显著缩短的。

最后,它目前还没有针对任何硬件提供特殊支持,例如开启了 PowerVR Ray Tracing 的 GPU 或普通 GPU。就目前而言,这个烘焙过程只会运行在 CPU 上。需要再次强调的是,最初的版本中我们会将注意力放在其烘焙本身的工作流上。

什么时候能用?

当我们准备好的时候,您就可以正式使用它了。:)我们目前还处在 alpha 封测阶段,现在少数游戏开发者与我们一起测试这一特性。当结果满意的时候,我们就会提供开放 beta 版本。

Unity 技术分享|渐进光照贴图 Unity3D教程 第4张

评论列表暂无评论
发表评论