今天简单地跟大家分享一下Unity5.0里面的光照贴图烘焙技术。由于时间只有20分钟,所以只能给大家一些概要性的介绍,没有办法深入,等到Unity5.0版本正式推出之后,我会给大家一些更详细的介绍。
接下来我会分3个部分跟大家讲解,第一部分讲解一下在以往的Unity版本中所采用的光照烘焙方法,以及Unity5.0中为什么会采用一套全新的光照贴图烘焙方法。第二部分讲解Imagination的PowerVR Ray Tracing方法。第三部分讲解Geomerics的Enlighten方法。后两种方法都会被引入到Unity 5.0版本当中去。
首先我们来介绍Unity在4.X版本里面使用光照烘焙的方法。我们采用的是Autodesk的Beast,而我们在5.0版本中可能会把它彻底移除。这是为什么呢?我们先介绍一下Beast的弱点吧。Beast只能烘焙静态的光照贴图,而不支持动态光照。一般而言,使用Beast的工作流程是:先建造一个场景,然后在场景中布置各种光源,进而点击Bake操作键,接下来大家就可以喝喝咖啡,或者直接下班回家了,因为整个烘焙过程可能需要几分钟、几小时,甚至是更长的时间。这样的过程还不一定得到正确的结果,如果发现前面的烘焙结果存在问题,还要重新返回到第一步,直至得到满意的烘焙结果。这样的过程对于广大开发者来说肯定是一个不太友好的过程,势必会影响大家的工作效率。
那么既然我们说原来的方法存在着一定的问题,那么理想的光照方案是什么样的呢?第一,理想的方法不需要任何的预计算时间;第二,它能够让场景中所有与光照有关的信息都能够实现动态改变,比如说动态改变光源、改变材质、改变环境光照,甚至改变场景中几何体的形状;第三,这样的一套方法还需要做到实时渲染,这不仅包括Console设备,也包括我们手中的移动设备。可惜的是,这样一套理想的方案在目前是不存在的。很多的游戏开发厂商,甚至是硬件开发厂商,都做过一些实践或者尝试,但是最终都失败了,都没能同时实现刚才所说的这几个目标。但是有一种绕行的方式,可以达到近似的效果。这就是Unity5.0当中所采用的方法,我们会舍弃掉Beast,取而代之的是两种方案的结合,这就是PowerVR Ray Tracing和Enlighten的结合。
在Unity 5.0中,PowerVR Ray Tracing还有一个特点,就是它能够实现渐进式的效果过渡,一开始显示比较粗糙的、类似于马赛克式的效果,然后逐步迭代求精,可能在若干毫秒之后,就会呈现出非常完美的效果。大家可能还会有一个问题,如果说我在Editor的模式下,采用PowerVR Ray Tracing调整出了一个比较好的效果,那么我怎么保证它和Enlighten最终取得的效果是近似相同的,如果完全不同,那我们就白花时间调整了!这个肯定是大家不希望见到的结果。所以我们在Unity中引入PowerVR Ray Tracing时是进行了调整和改变的,使PowerVR Ray Tracing和Enlighten的输入是一致的,然后尽量使他们的输出也是一样的。
接下来我们来看一段视频,来看看PowerVR Ray Tracing在Unity编辑器中的使用方法。大家可以看到,我们可以动态地改变沙发的材质,并实时地预览到调整效果。此外,还可以动态调整场景中的体积光源,也可以动态调整方向光的照射方向,以及聚光灯的位置,都可以实时地观看到调整结果。
再说一下Enlighten,它能够实现动态光照,也支持传统的烘焙过程,并能把两者无缝的拼接起来,最终保证在画面上面不会有任何的走样效果。这里,我们也可以通过一个视频看看光照效果。这个场景中是一个太空舱,太空舱外面有一个环境光照,还有一个探视口,从外面有光线射进来。这个场景总的光照条件是非常非常复杂的,有来自于窗外的环境光照,有一些直接的方向光源,有动态材质还有一些粒子效果,所有这些东西都可以动态地叠加起来,对于周围环境的影响也是实时的。
我们刚才简单地介绍了Unity5.0中将会采用的光照贴图烘焙方法,最后我来做一个简单的总结:在Unity的以往版本中,我们使用了Beast;在5.0版本中,我们会舍弃Beast,进而采用PowerVR Ray Tracing和Enlighten的结合;PowerVR负责编辑器中的编辑模式,即所见即所得的模式;而Enlighten会负责游戏内的实时渲染。最后,大家可能还有一个疑问,就是Enlighten会问会不会有效率问题。我们说,在一些相对中高端的设备上,Enlighten的运行效率是非常高的;而在一些低端的设备上,Enlighten同时支持与Beast相似的静态光照贴图方式,因而也可以保证运行效率。
接下来我会分3个部分跟大家讲解,第一部分讲解一下在以往的Unity版本中所采用的光照烘焙方法,以及Unity5.0中为什么会采用一套全新的光照贴图烘焙方法。第二部分讲解Imagination的PowerVR Ray Tracing方法。第三部分讲解Geomerics的Enlighten方法。后两种方法都会被引入到Unity 5.0版本当中去。
首先我们来介绍Unity在4.X版本里面使用光照烘焙的方法。我们采用的是Autodesk的Beast,而我们在5.0版本中可能会把它彻底移除。这是为什么呢?我们先介绍一下Beast的弱点吧。Beast只能烘焙静态的光照贴图,而不支持动态光照。一般而言,使用Beast的工作流程是:先建造一个场景,然后在场景中布置各种光源,进而点击Bake操作键,接下来大家就可以喝喝咖啡,或者直接下班回家了,因为整个烘焙过程可能需要几分钟、几小时,甚至是更长的时间。这样的过程还不一定得到正确的结果,如果发现前面的烘焙结果存在问题,还要重新返回到第一步,直至得到满意的烘焙结果。这样的过程对于广大开发者来说肯定是一个不太友好的过程,势必会影响大家的工作效率。
那么既然我们说原来的方法存在着一定的问题,那么理想的光照方案是什么样的呢?第一,理想的方法不需要任何的预计算时间;第二,它能够让场景中所有与光照有关的信息都能够实现动态改变,比如说动态改变光源、改变材质、改变环境光照,甚至改变场景中几何体的形状;第三,这样的一套方法还需要做到实时渲染,这不仅包括Console设备,也包括我们手中的移动设备。可惜的是,这样一套理想的方案在目前是不存在的。很多的游戏开发厂商,甚至是硬件开发厂商,都做过一些实践或者尝试,但是最终都失败了,都没能同时实现刚才所说的这几个目标。但是有一种绕行的方式,可以达到近似的效果。这就是Unity5.0当中所采用的方法,我们会舍弃掉Beast,取而代之的是两种方案的结合,这就是PowerVR Ray Tracing和Enlighten的结合。
为什么要使用这两个方案的结合呢,我先给大家一个简要的概括:这两种方案都可以实现全局的GI,但是相比较而言的话,PowerVR Ray Tracing的特点是不需要烘焙过程,速度非常快,但是它的效果不是非常理想;而Enlighien的特点仍然需要一定的烘焙过程,但是效果非常好。更具体一点说,我们会在Unity编辑器环境下采用PowerVR Ray Tracing方案,从而利用它快速实时的特点,你可以在场景中随时动态调整任何的东西,都能及时地看到调整的效果;一旦你把这个效果调整到了一个比较理想的状态之后,就可以采用Enlighten来进行预处理和烘焙,从而达到更好的实时渲染效果。特别地,Enlighten具有很好的跨平台特性,能够在从移动到Console等多个平台上实时地运行。
声明:此篇文档时来自于【狗刨学习网】社区-unity极致学院,是网友自行发布的Unity3D学习文章,如果有什么内容侵犯了你的相关权益,请与官方沟通,我们会即时处理。
在Unity 5.0中,PowerVR Ray Tracing还有一个特点,就是它能够实现渐进式的效果过渡,一开始显示比较粗糙的、类似于马赛克式的效果,然后逐步迭代求精,可能在若干毫秒之后,就会呈现出非常完美的效果。大家可能还会有一个问题,如果说我在Editor的模式下,采用PowerVR Ray Tracing调整出了一个比较好的效果,那么我怎么保证它和Enlighten最终取得的效果是近似相同的,如果完全不同,那我们就白花时间调整了!这个肯定是大家不希望见到的结果。所以我们在Unity中引入PowerVR Ray Tracing时是进行了调整和改变的,使PowerVR Ray Tracing和Enlighten的输入是一致的,然后尽量使他们的输出也是一样的。
接下来我们来看一段视频,来看看PowerVR Ray Tracing在Unity编辑器中的使用方法。大家可以看到,我们可以动态地改变沙发的材质,并实时地预览到调整效果。此外,还可以动态调整场景中的体积光源,也可以动态调整方向光的照射方向,以及聚光灯的位置,都可以实时地观看到调整结果。
再说一下Enlighten,它能够实现动态光照,也支持传统的烘焙过程,并能把两者无缝的拼接起来,最终保证在画面上面不会有任何的走样效果。这里,我们也可以通过一个视频看看光照效果。这个场景中是一个太空舱,太空舱外面有一个环境光照,还有一个探视口,从外面有光线射进来。这个场景总的光照条件是非常非常复杂的,有来自于窗外的环境光照,有一些直接的方向光源,有动态材质还有一些粒子效果,所有这些东西都可以动态地叠加起来,对于周围环境的影响也是实时的。
我们刚才简单地介绍了Unity5.0中将会采用的光照贴图烘焙方法,最后我来做一个简单的总结:在Unity的以往版本中,我们使用了Beast;在5.0版本中,我们会舍弃Beast,进而采用PowerVR Ray Tracing和Enlighten的结合;PowerVR负责编辑器中的编辑模式,即所见即所得的模式;而Enlighten会负责游戏内的实时渲染。最后,大家可能还有一个疑问,就是Enlighten会问会不会有效率问题。我们说,在一些相对中高端的设备上,Enlighten的运行效率是非常高的;而在一些低端的设备上,Enlighten同时支持与Beast相似的静态光照贴图方式,因而也可以保证运行效率。