Unity烘焙动态光照实现光源优化

本文使用Unity5.x版本,由于Unity4.x到Unity5.x更换了光照引擎,所以本文内容只适合于Unity5.x版本

本文向大家介绍Unity烘焙动态光照来实现光源优化

什么是动态光源?

Unity灯光默认是实时光照,也就是说物体在灯光下不同位置产生不同灯光灯光效果

什么是烘焙动态光源?

由于动态光源在实时光照下会大量的Setpass Calls(Draw Calls)

为了减小Setpass Calls,我们烘焙动态光源

将该场景灯光效果烘焙,原理是Unity为我们自动生成光照贴图

这样大大减少了Setpass Calls

 

接下来我详细介绍下,在Unity实现烘焙动态光照

新建场景,在场景中创建如下对象

Unity烘焙动态光照实现光源优化_第1张图片

下图是对象结构列表

Unity烘焙动态光照实现光源优化_第2张图片

此时我们运行游戏,发现Setpass Calls比较大(手游一般控制在60一下)

Unity烘焙动态光照实现光源优化_第3张图片

我们目标是烘焙光照贴图,实现减少Setpass

我们将Cube设置为静态对象(烘焙贴图)

Unity烘焙动态光照实现光源优化_第4张图片

选中全部点光源,将Baking选择为Baked

Realtime: 实时(默认)

Baked: 烘焙

Mixed: 混合

Unity烘焙动态光照实现光源优化_第5张图片

打开Window->Lighting

勾选中Baked GI

点击Build烘焙(也可以勾选Auto,自动更新)

Unity烘焙动态光照实现光源优化_第6张图片

此时在Lightmap窗口中会发现已经生成了光照贴图

Unity烘焙动态光照实现光源优化_第7张图片

此时运行游戏观察Setpass Callls发现大大减少

Unity烘焙动态光照实现光源优化_第8张图片

细心的同学可能发现,烘焙后的场景“变亮”了,无伤大雅,因为用户在体验游戏不会感觉出来有什么不一样

但是实现了烘焙,会场景中的主角不再受到光照影响

这是因为我们此时是光照贴图影响这场景的显示,灯光不再实时光照了

有什么方法可以解决呢?

接下来介绍Light Probe Group(探针)

Light Probe Group作用是记录该位置光照信息

按下图创建Light Probe Group

Unity烘焙动态光照实现光源优化_第9张图片

创建多个探针

Unity烘焙动态光照实现光源优化_第10张图片

重新烘焙(勾选了Auto下不需要)

Unity烘焙动态光照实现光源优化_第11张图片

此时在减小了Setpass Calls情况下依旧可以“实时光照”,达到优化目标效果

Light Probe Group的位置摆放的好话,基本可以达到和实时光照效果一样

 

如果本文对你有帮助,请多多支持,干货满满,欢迎前来阅读!!!

 

 

 

 

 

 

 

你可能感兴趣的:(游戏开发,移动游戏开发,移动游戏开发,unity3d,unity3d,Unity游戏开发)