来源:Unity官方平台 4月24日 日益增长的游戏场景规模,与逐步趋近于现实环境的AAA级美术光影效果表现,给玩家带来了极致的感官体验,但同时还带来的是游戏场景模型与光源的增多。随之而来倍增的计算量,可能会严重影响游戏的性能。
使用light map烘焙模拟灯光带来的效果,将灯光对物体产生的影响、明暗信息保存在一张贴图上,从而省去复杂的光照计算,带来性能上的提升。
但是对一些大场景游戏来说,点击Bake键后,你就可以喝喝咖啡,或者直接下班回家,因为整个烘焙过程可能需要几分钟、几小时,甚至是更长的时间。对一些重度的游戏,时间可能会更长。这样的过程对于广大开发者来说显得有些不太友好,势必也会影响大家的工作效率。为了解决这个问题,Unity 分布式烘培解决方案应运而生。
接下来就给大家简单介绍下这个方案。
我们通过对light map 烘培阶段整个流程进行分析,发现在light map 烘培阶段有大量可以多进程平行执行的任务。
而且还发现在烘焙阶段中有一些Job数量很高,执行起来很耗费时间的函数,例如:以一个来自某厂商的测试场景的十分之一的游戏场景为例,发现其中EnlightenLightTransport、EnlightenVisibility、EnlightenClustering有106个之多。而且真实游戏场景(1K*1K)类似参数,Job 数量为测试场景10-15倍左右(Job数量与场景大小有关,一些重度大场景游戏Job 会更高)。这些都严重影响light map烘焙时间。
针对这些问题,我们采用部署多台设备联机进行烘焙,模拟平行执行,从而缩短游戏烘焙时间。除了已经采用联机分布式烘培Job的 EnlightenLightTransport、EnlightenVisibility、EnlightenClustering三个阶段外,现在BakeEnlightenAO、 EnlightenBakeVisibilityBuffer、 BakeEnlightenDirect 、 BakeEnlightenIndirect也已经新增改造为联机分布式烘培Job。后续我们也会增加更多的订制引擎优化环节,将烘焙耗时降到最低。
接下来我们通过一组实测对比数据来验证下Unity分布式烘焙解决方案得到的收益。
测试环境对比:before--硬件环境:1台电脑8核:软件环境:发布版本5.6.2p4 测试环境对比:after---硬件环境:4台电脑27核:软件环境:发布版本5.6.2p4
通过对比测试场景使用联机烘培方案,发现在该场景下耗时缩短了将近403%,并且随着部署设备的增多,加之增添了更多订制引擎优化环节,这个数据会继续增大。这对广大开发者来说绝对是个好消息,开发者完全可以将烘焙节省的时间,投入到创新游戏玩法,尝试打造更好玩炫酷的游戏。
好了,以上是对Unity分布式烘焙解决方案进行的简单介绍。我们还会在接下来的几期内容里介绍Unity 分布式编译解决方案与Unity 分布式AssetBundle解决方案,也请大家不要错过。
|