查看原文
其他

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

2016-10-17 Unity官方 Unity官方平台

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


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


https://v.qq.com/txp/iframe/player.html?vid=r0336kwx5mk&width=500&height=375&auto=0


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

那么Enlighten全局光照系统怎么办?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版本。

在我们准备好开放beta版本之前,迫切地希望能够得到您对目前已公布内容的想法和反馈。您可以在下面的评论中说出您的心声!



更多Unity相关新版本信息

搭载最新版Mono的Unity 5.5.0b4发布

支持Vulkan渲染器的Unity预览版发布

Unity WebGL内存详解

Unity发布至iOS 10须知

如何提交Unity Bug报告  


Unity官方近期活动




点击“阅读原文”进入官方中文社区!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存