unity3d 5.0 烘焙教程5.3怎么加快烘焙时间

今天看啥 热点:
Unity 5 全局光照GI与新的烘焙系统初探,unitygi
Realtime GI,实时全局光照,听上去就是一个非常高大上的词,但是越高大上就越令人心生敬畏,因为世上没有免费的午餐,越好的效果意味着越多的消耗,对于移动平台来说,这样的消耗受不受的起呢?首先来说说GI是干啥的,非常粗略的来描述下,如果说我们以前的光照系统就是由光源 - 物体 - 视点组成的话,那么全局光照系统就是由光源 - n多环境反射光 - 物体 - 视点。就是说GI额外包括了环境反射光的计算,它可以使得渲染出来的场景物体间的光影交互更为真实。
如果是离线烘焙的话,n多的环境反射光就是通过辐射度算法或者是光线追踪算法一点点计算出来的,但是实时渲染没有这么多的时间。为了实现实时的GI,简单的说来,Unity(Enlighten GI)需要预计算一些信息,这些信息大概包括场景间物体之间的位置、反射关系,以及一个环境反射树(这些都是我瞎猜的),在实时渲染时,利用这些信息Unity会动态生成一张间接光照贴图,像原先的Lightmap一样只不过上面记录的是物体表面受到间接光的信息,这样在实时渲染时就会看到物体受到反射光的影响了。
因此Unity GI有了如下特点:
而GI产生的开销主要包括:
GI与Lightmap
看的出来GI的额外性能消耗是可以接受的,我在手机上进行测试,即使是很大很复杂的场景跑起来也完全没有问题(当然也是因为我是在iPhone6上测的)。不过多数情况下如果说你的场景中不存在光线变化或是动态的自发光材质,还是固定镜头的话(没错,我说的就是RPG),GI对于游戏来说仍然是没有用处的,所有GI能做到的事情用简单的Lightmap就能达到同样的效果。现在问题来了,Unity配合GI又搞了一个新的烘焙系统,这个系统要怎么玩儿呢。
首先,现在当你说烘焙时一定要弄明白你想烘焙的是Realtime GI所使用的间接光照图和场景树信息还是Static Lightmap,然后以此决定使用光源的类型是Realtime/Mixed/还是Baked。首先来说烘焙的方式,在Lighting面板中Precomputed Realtime GI 与Baked GI分别对应Realtime GI与Static Lightmap的烘焙。
组合起来就是三种(跟我说你啥都不烘的可以走了):
关闭Baked GI或者场景中的全部光源类型设置为Realtime。这意味着没有任何光照颜色会被预先烘焙计算,引擎在烘焙时只是存储场景内静态物体间的关系,当烘焙完成后你可以自由的调整光源或物体材质,并实时地看到效果。
此时在Scene中观察Baked结果可以看到没有任何静态颜色被烘焙出来。
在仅使用RealtimeGI时,光源应该选择Realtime类型。烘焙选项Realtime Resolution对应前文所说的间接光照图,值越高间接光的效果就越明显(其实应该是越准确,当分辨率太低时间接光会因像素过滤而变弱)
Realtime Resolution = 10
Realtime Resolution = 1
只烘焙Static Lightmap
取消Precomputed Realtime GI的勾选即为同原来一样的纯静态光照图烘焙。光源的选择则同原来一样,Realtime的灯光不参与烘焙,但同时作用于动态与静态物体上;Mixed光源参与烘焙,实时运行时仅作用于非静态物体;Baked光源仅作用于光照烘焙,不参与实时光照计算。
再次观察SceneView可以看到烘焙出来的颜色。
在Lighting面板中的Lightmaps页签中也可以看到烘焙出来的光照图。咦?怎么有两张,稍后解释
如果使用纯Static Lightmap烘焙时会有一个Indirection Resolution的设置,这个设置就对应于Precomputed Realtime GI中的Realtime Resolution,同样是控制间接光的影响,产生的效果是一样的。
如果同时烘焙Static Lightmap与RealtimeGI会发生什么事情呢?首先光源产生的光照以及物体间的二次反射光线都会被直接烘焙在静态光照贴图上,因此前文所提使用GI可以自由实时调整光源或是物体材质的效果在这种烘焙模式下都是没有用的,但是自发光材质以及天空光产生的辐射光线在这种模式下仍然是可以实时变化并叠加作用于已烘焙的颜色上。
光照烘焙颜色信息
辐射度信息
最终合成颜色
辐射度信息图中除了自发光的红色外还有一点点靛青色,这是天空盒产生的颜色,在Environment Lighting中调整Ambient Intensity可以控制天空盒对场景整体明暗的影响。总的来说主体颜色还是静态烘焙出来的Lightmap控制,但是增加了GI中的动态天空光和自发光。总的来说不建议使用这种方式进行场景渲染,又消耗了静态Lightmap和GI所需的内存,又消耗了GI的计算资源,效果还没单个使用的好。
在我看来GI最大的好处是可以让美术实时的看到使用Lightmap烘焙后的场景效果,也就是说首先关闭Baked GI仅烘焙一些Precomputed Realtime GI,随后美术就可以随意的调整光源、物体材质、天空盒等数值并实时观察到场景的最终效果,最后当一切都满意后关闭Precomputed Realtime GI使用Baked GI进行光照贴图的烘焙即可。
Lightmap的其他设置(坑)
这里有大坑,我先挖会儿以后填
相关搜索:
相关阅读:
相关频道:
Android教程最近更新4604人阅读
Unity3D开发(59)
& & & & 之前自己研究了下lightmap,不过并没有关注效果和细节,只是关注了使用流程。
& & & & 今天配合美术测试了下Unity5中的lightmap,有一些经验心得。
& & & & 首先推荐一篇文章,将的非常不错 &
1、灯光烘焙的速度非常慢。在Unity5中尤其慢(可能是因为效果和复杂度提升了,速度据说比Unity4慢几倍)。Unity5.3提升了烘焙速度。
2、所有被烘焙的物体设置成静态的(勾上Static),否则不参与烘焙
3、在Lighting--Scene面板中,注意几个Intensity参数。他们会影响最终的烘焙效果。 &比如Ambient Intensity调大些环境光就会对场景造成影响,如果需要某些阴暗、蓝色、红色的场景,可以设置这里,一样的场景可以烘出不一样的效果。
& & & 不过这里也有一个坑,默认不改,这些Intensity都是1,会造成场景的曝光,看起来要比实际光照亮很多。
4、在Lighting--Object面板中,如果选择好一个3D模型,会有一些参数设置,其中有一个Scale In Lightmap,通过调整这个值,可以控制该物体在Lightmap中所占的纹理大小。比如调整成0.1,则此物体的光照纹理就只有原来的十分之一,而调整成0,则此物体虽然可以产生阴影,但是不接收任何光照信息。
& & & &在预览(Preview--Baked Intensity)中可以看到物体所占纹理大小。
5、接收阴影的模型(如地面),不要缩放。否则阴影就显示异常了。比如我们一开始把地面缩放了100倍,阴影直接就不显示了(其实是拉伸早成显示错误了)。
6、Unity5.3之前的版本有Bug。使用General GI---Directional进行烘焙的话,阴影无法显示。这个是因为Directional只支持Opengles3.0以及SM3.0以上的显卡和设备。当不支持时没有Fallback到Non-Directional,就出问题了。 & 一般来说这里选择Non-Directional就好了。
7、最终烘焙出来的效果,跟实时光照有一些初入。尤其是考虑到PBR的时候(Standard shader)。这个只能通过参数一步一步来调整。不过烘出一个效果可以接受的场景就好了,也没有必要追求一模一样。毕竟是完全不同的光照系统。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:833957次
积分:10679
积分:10679
排名:第1111名
原创:194篇
转载:72篇
评论:496条
(1)(5)(1)(2)(1)(2)(3)(2)(1)(1)(2)(4)(2)(2)(1)(9)(2)(3)(7)(8)(6)(10)(5)(8)(3)(7)(5)(3)(2)(1)(3)(7)(3)(7)(10)(1)(1)(11)(26)(25)(14)(2)(2)(1)(10)(4)(1)(1)(1)(2)(1)(11)(3)(2)(1)(2)(3)(2)(2)(1)}

我要回帖

更多关于 unity3d 灯光烘焙 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信