Unity 技术分享 渐进光照贴图

2016年10月18日 16:43 0 点赞 0 评论 更新于 2025-11-21 20:38

ARinChina 获得 Unity 官方授权,转载请联系 Unity 官方平台。

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

您可以通过下面的传送门观看视频,大致了解这项技术目前的进展:[传送门]

渐进光照贴图(Progressive Lightmapper)是什么?

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

那么 Enlighten 全局光照系统的情况如何呢?Enlighten 目前不会有重大变动。它提供了实时 GI 特性,并且暂时无法与路径追踪器配合使用。

为什么选择渐进光照贴图?

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

Enlighten 的优点是能让我们实时看到光照结果。然而,任何参数、纹理或几何图形的变动都需要对场景重新烘焙,而用户往往察觉不到这个过程。

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

此外,我们对其进行了优化调整,优先对视口区域进行计算和烘焙,该区域完成后,再继续对场景的其余部分进行计算和烘焙。

在大多数情况下,渐进光照贴图的健壮性更好。由于它是以间接方式以光照贴图的全分辨率进行烘焙,所以渲染结果中的瑕疵更少。其设置简单,用户可以提供一个展开的 UV,也可以让 Unity 自行创建一个,并自行设定烘焙分辨率。而且,用户之前掌握的相关知识在此仍然适用。同时,我们还能轻松预测渲染所需的时间,进度条上的倒计时会精确告知用户还需多久才能完成烘焙。

最后,如果用户认为渲染结果已经足够好,就可以直接停止烘焙,此时场景会保持在停止烘焙时的状态。因此,用户可以随时停止烘焙,在添加一些内容或增设一些样本后继续进行烘焙。

渐进光照贴图暂时无法实现什么?

需要注意的是,它并非实时 GI 的替代品。它只能在 Unity 编辑器中进行烘焙,因此无法在“游戏中”进行烘焙操作。这意味着无法对游戏中的实时程序场景使用烘焙 GI,也不能根据一天中的特定时间更改光照并实时烘焙。我们计划先逐步完善 Unity 编辑器中的烘焙工作流,再考虑其他方面。

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

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

什么时候可以使用?

当我们准备好时,用户就可以正式使用它了。目前我们仍处于 alpha 封测阶段,少数游戏开发者正在与我们一同测试这一特性。当测试结果令人满意时,我们将提供开放 beta 版本。

作者信息

孟子菇凉

孟子菇凉

共发布了 3994 篇文章