您的位置:首页 > 移动开发 > Unity3D

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

2017-04-26 13:41 471 查看
本文使用Unity5.x版本,由于Unity4.x到Unity5.x更换了光照引擎,所以本文内容只适合于Unity5.x版本

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

什么是动态光源?

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

什么是烘焙动态光源?

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

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

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

这样大大减少了Setpass Calls

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

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



下图是对象结构列表



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



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

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



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

Realtime: 实时(默认)

Baked: 烘焙

Mixed: 混合



打开Window->Lighting

勾选中Baked GI

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



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



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



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

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

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

有什么方法可以解决呢?

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

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

按下图创建Light Probe Group



创建多个探针



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



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

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

如果本文对你有帮助,请多多支持,干货满满,欢迎前来阅读!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d