概述
上周的Unite 2019大会上,腾讯天美工作室技术副总监郭智分享了《使命召唤》手游引擎技术的升级与演化。
文/安德鲁
《使命召唤》无疑是今年腾讯手中最重磅的IP之一,其同名手游近日开启官网预约后,很快速超过了210万预约量。
《使命召唤》系列一直是北美游戏市场的国民级游戏,也是少数几个每年发售且销量必定过1000万的系列,十几年间在全球积累下了海量受众。对于同名手游,国内的FPS玩家群体也表现出了很高的期待,该作目前在TapTap上的评分为8.8分。
而游戏自公布以来,玩家最关心的自然是它能否再现主机系列的玩法体验,以及品质是否过硬。
在上周的Unite 2019大会上,腾讯天美工作室技术副总监郭智分享了《使命召唤》手游引擎技术的升级与演化。
《使命召唤》手游在研发过程中利用到了很多当下较先进的处理方式,比如利用此前专做影视的Houdini、使用GPU烘焙等等,同时游戏借助PBR等技术。根据郭智的介绍,《使命召唤》手游已经在移动端达到了3A水平的画面效果。在这个分享中,我们也可以看到腾讯对于手游表现力的一些极致尝试。
以下为演讲实录。
Unity大会的国际惯例,我先介绍一下自己——2011年入职腾讯,在腾讯天美工作室任职技术副总监、技术专家,负责整个工作室手游客户端的研发和一些管理工作。我有数十年从业经验,今年刚好是第11年,负责过不同品类项目的开发,用过一些自研和商业引擎,做过几款FPS游戏,有比较深厚的积累。下面是我所参与过的游戏。主要涉及MMOG、FPS品类,以及各种端手游。涉及的引擎首先是最左边的一些自研引擎,第二款是用的gamebryo,第三款是unreal,后面涉及到Unity5的一些项目的开发,用Unity用得比较多,也做过Unity整个引擎升级。
大家都知道2017年是手游画面升级的元年,所以对于今天的引擎技术来说,我们首先要聊一聊画面。对于整个游戏的画面来说,我先要谈一下整个画面呈现标准的建立。我相信各位以前从来没有听过什么叫做画面标准,说的都是要用哪几张贴图,怎么做,画面标准都是美术师去定的。 COD手游目标是打造3A手游画面呈现画面,所以必然要探索PBR时代画面呈现的最佳实践与升级。
对于整个IP产品来说,首先是要定义制作的主基调。在一开始COD立项的时候,我们为了性能纠结过一段时间:要不要使用Phong的模型,要不要使用最经典的手绘模式。去年我们对COD的游戏画面做了重大的翻新,使用PBR复刻了整个主机的画面效果。能达到主机的品质,这个游戏才能上线。我们需要挑战的是达到整个主机画面的丰富度和还原度,去满足整个IP高端用户的主机情怀。
既然我们要做PBR,我们首先要做的第一个事就是需要统一制作管线和技术管线。对于制作管线来说,美术需要的所有贴图资源,都需要在线性空间计算,用任何工具去制作任何贴图,都需要是线性的。对于技术管线来说,需要为引擎定义统一的渲染管线,也就是说我们的渲染管线是通过技术做Scalable的HD渲染管线。对于高配进行HDR的RT输入,对于低配来说为了节省性能不能做任何的后处理,就使用OnePassHDR的管线,使用Tonemapping在最终的shader做相应的数学拟合,来拟合我们的目标曲线。
整个的制作管线和技术管线建立之后,我们再说画面标准的建立。对于画面呈现来说,我们需要一致的画面标准——比如这个角色,每个像素我们都要定义得非常标准,其实在国际标准上,任何3A游戏里面都会这么定义,要定义Material Model,Lighting Model,Shading Model。标准建立了,就可以用同样的语言说话,如果没有这个标准,美术同学会说我要这样贴图,这里面画点光上去,要做一些阴影的效果。统一标准之后,在团队里面,每个场合里面就不会再有分歧和异义,讨论起来非常简单。这些标准都是具有物理意义的参数和基于真实物理的定律,也就是遵循PBR的。还有一点是全场景物理一致的光照环境,也就是说我们要使用动态的光影+PBR+IBL。
接下来介绍这三个方面,Material,Lighting 和Shader,在COD手游里面到底是什么样的。
应为Cubemap
先看一下shading model是什么。我们构建了完整的手机平台的PBR光照方案,用分级对PBR进行近似,我们提出4级的PBR的数学拟合。最高级肯定是给现在的835这些系列的高端的GPU去用的,3级就是在520这种机器,2级给更低端的机器,最后一级为那种兼容型是有问题的机器去使用,解决所有的兼容性问题。而人物在高中低配都使用最完整的PBR方案,也就是说不会做Shader LOD的切换。直接光用了GGX specular+lambert diffuse,间接光用cubemamp做GI Specular,用SH probe做GI diffuse。
对于建筑来是,出于性能考虑,低端会简化一些光照的部分,就是刚才说的Shader LOD。直接光其实会在远景用shadowmask,直接光不会烘焙进lightmap,直接光用纯动态的光照,间接光用的是IBLcubbmap+GPU bake的lightmap。
再来看material,固有色、一张法线+粗糙度合并的贴图,金属度+AO放在另外一张贴图。材质接受了lightprobe的间接光照和一个直接光,还有来源于environment的间接光,最后得到整体的呈现,这就是我们的material model 和lighting model。
定好之后整个团队所有场景每个人就基本确定了。确定这些东西之后我们要讨论的是制作本身,对于COD这样一个3A级手游里面的一些制作管线,我相信对于程序员或者是一些开发者来说,可能不怎么在意制作管线。但是2017年之后,大家都知道TA其实比较吃香,还有我认为所有技术人员都要了解美术的工作、甚至要了解策划的一些工作,这样才能把游戏制做好,所以我们来聊一聊对于3A级手游里面的制作管线是什么样子的。
我们看看制作里面的核心因素,第一个是量产。所有的游戏现在需要最慢也要3年出来,但是往往我们没有那么多钱或者是那么多的时间,所以我们需要做大量的外包,所以第一个因素是量产,量产能保证我们所有的外包,所有的人员,所有的开发,所有的美术标准都统一,才能达到量产。第二个是引擎,所以现在对于任何引擎我们都觉得要做成我们自己认为一两年后所看到的最好的样子。最后一个方面是性能,无论是主机平台还是PC平台到现在的手机平台都是非常重要的,不可能让玩家玩得很卡顿,肯定要有最流畅的体验。这三个因素决定了我们整个制作管线。
对于制作管线来说,我觉得使用流程与工具去保证美术素材的正确性与合理性,原则有两个:一个是美术素材输入一切都符合PBR标准的,也就是说你不能画各种阴影,你的色彩,你的明暗不能大于我们所认为推荐的值范围;原则二:我们需要统一所有的生产规格和生产环境,这一切达到之后才能量产化。达到统一规格之后你的画面才是统一的,才是你们认为能够把握的样子。
PBR的初衷在欧美那边提出来的,它的初衷其实不是为了效果,而是为了量产。量产的策略其实有几个:一个是验证,我们能尽可能地验证;一个是文档,我们需要有各种各样的白皮书,去阐述我们的思路。最后一个是科学性,PBR诞生本身是工业化的产物,不是美术或者是艺术的产物,所以当你一味强调各种各样的hack、强调美术不同的制作方式、强调每个TA做各种各样的画面的雕琢之后,就不可能再科学,这个游戏就不会可控,你的团队就会很失控,就不可能把游戏做出来,所以也不可能有量产。所以如果要做PBR,就一定要遵循这三个原则。
先说一下整个的验证。我们需要在sp(Substance Painter)里面提供一系列的光照环境给美术做验证,以前都是在photoshop里面做的,但是在里面做的任图都可能是错的,都可能让美术制作失控。所以我们场景制作要符合三大要点,一个是图形技术的保证,在同样的一个PBR的光照环境,有95%以上是一致的,怎么保证一致?大家先看sp里面的,再看Unity的渲染管线,就可以保证一致;另外一个是制作环境约束,美术制作者使用的渲染环境必须与标准的光照环境是一致的;再下来是验收标准的约束,讨论素材本身效果品质的时候,只能参考标准的光照环境,不要在max或者是MAYA里面打开,也不要在任何引擎或是其他环境里打开,我们就在标准环境里面打开。这样讨论才有意义,不然管线不一致,讨论的结果也会有差异。
刚才说验证的标准场景其实包含一个主场景和六个辅助场景。主场景用于验证固有色的明暗色相,不同粗糙度表面的镜面反射情况,还有金属材质的镜面反射情况。辅助场景检验包括室内外环境光源,暖色調环境下效果,强对比度的明暗光照,还有典型室外光照下效果或固有色是否太黑的环境。我是参考装修里面的原则还有各种各样抽象出来的环境,这样能帮助美术师在做各种各样的验证讨论的时候有,一些能看到制作问题的场景。
有验证环境之后,要定义好详细规则的白皮书。这里面是我们里面的白皮书,比如说输出是什么样子,环境是怎么配置的,一些漫反射、镜面反射率是什么样子的。基本是一些数学原理。同时会有一些黑科技作为素材验证的参考工具,包括屏幕校色器、照度仪,以及一些标准的色,通过这些去做校验。同时也出去测量SH或者lightmap环境,保证你在房间色调也是一致的。以免美术在调各种各样的色彩甚至是光照值都是感性的认识,我们需要给他们一个非常标准和标量的参考。
这个标准能保证我们在制作整个PBR的时候有所参考、有所依据。最后才能呈现这样很好的画面效果。
说完这些,再说一下《使命召唤手游》的引擎技术的沉淀。上面两个部分掺杂TA、美术以及工程师的一些工作,下面就是相关的纯技术人员的工作。其实就是颠覆、拓展整个Unity引擎之路,会作为未来3A手游引擎实践的一些标杆。
首先我们需要做的是,补齐游戏里面所缺的渲染的东西。比如说头发怎么做,皮肤怎么做,角色怎么做,这些都要尽可能做补齐。对于一些包含地形的地图或者是其他技术方案可能要做拓展,比如说到地形,我认为我们应该是在国内工作室中Unity结合houdini应用最多的。我们有这个组合的工作流,还有不同地貌的Drawcall合并,并且支持Vertex fetch texture,我们使用地形的时候,我认为是现在手游最佳的地形方案,所以我们对地形系统做了深度的改造。
接下来是我们的烘焙,烘焙使用了GPU烘焙,当你的地形非常复杂的时候,如果用Enlighten就等着通宵吧。现在我们烘焙复杂度非常高的场景只需要3-5分钟,以前烘焙需要4-6个小时,这是不能接受的。出现bug的时候发现同一天就要卡十张图,会出现无限的加班,这个迭代时间非常重要。用GPU烘焙可以做更多的效果提升,计算正确性和参数科学性有了更强的依据。甚至于可用到一些AI技术,对烘焙结果做一些降噪和算法上的改造,所以我们这边用了整套GPU的烘焙方案。
我们对烘焙做了深度的定制,也就是说结合houdini做了自动的部署,以前我相信所有美术人员这些Light probe都是用手工一个一个去摆的,摆的纯属人体劳动力,并且不准确,所以我们拓展了整体算法,然后使用程序化自动生成Lightprobe,让这些迭代更加快速。所有的这些光影可以看到其实是非常密集的,我相信各位如果要做这种游戏的时候,也可以做这样的尝试,算法不是特别复杂。
然后说植被制作,原来完全是用美术做制作的,现在很多场景都要用到大量植被,以前的生产方式其实都是美术逐棵逐棵地做,我们现在程序化地生产AO和法线,这样原来两周的工作量等于节省到两天。这些都是很有意义的,省掉大量的制作成本和人力成本,也省掉很多外包的工作,所以现在无论制作什么,我们都要积极地去拥抱整个PCG的技术,用这些技术助力整个生产过程。
我们生产了很多很多的游戏,大家可以看到制作标准和美术规格也是非常高的。如何保证整体制作和引擎和性能能够保证一体化呢?我们所有程序和管线的制作都是要后期去进入的。比如我们用了4张贴图都是零散的贴图,我们肯定要有自己的一些技术。美术原来做的所有的都是零散的贴图,事后会对它的图进行整理和整合,这样避免一开始就定规范和美术讨论我的贴图如何分配,我如何做这种性能的保证,对于美术人员来说,他们根本不敏感或者是会出现问题,所以对于技术人员本身来说需要包括这一个。
应为Texture Atlas
此外我们会用一些Texture Streaming之类的技术保证包括iPhone 6的机型也要做兼容。所以整个制作过程都不会打乱美术的工作流,直到后续再做优化,我们会用一系列的技术比如说Texture atalas,Texture streaming,PbrShader的shaderlod等,这样后续进入优化阶段也能做到性能的动态收缩。
最后一部分更加重要,就是做引擎的改动的时候,需要了解引擎技术的演化。最近面试了很多候选人,聊了很多行业里面的大咖,对不同层次的开发人员做讨论。大家在做修改的时候,我觉得很多时候是没有依据的,可能是在翻博客时突然发现一个技术我就用。在我们的技术里面。我们团队非常注重引擎技术的演化,包括最重要的三个方面,一方面是引擎技术的移动端化。从2017年到现在,可以认为所有PC Game里的技术都可以在移动端使用了,如果现在不能使用,我相信未来两三年也可以。比如现在流行使用线性空间的运算、做PBR渲染、做雾和大气的效果,会做渲染标准的一些更新,这些其实端游我8年前就做过了。但是现在手游再次使用,所有技术都是端游往手游做演化,我们只是做相对的数学拟合和科学性的一些探索。所以大家做手游移动端化的时候,一定要注意端游技术的移动端化。
另一方面是引擎技术与工具的升级,引擎版本不断升级,我第一次使用Unity的时候是4.5的版本,现在这个游戏基本上可升到五点几。这些引擎的不断升级对底层的改造是比较大的,比如现在Unity ECS,各方面的烘焙方式、各方面的技术也都在做升级。所以升级引擎的时候你要想到用引擎升级的那一个游戏,做一些你自己最稳定的技术演化。再加上现在的工具也在不断地发展。近几年其实用Substance与Houdini,之后这一系列的美术工作在团队里面普及越来越明显,所以我们需要使用所有的工具做配合进行游戏的制作。
最后就是芯片的发展。芯片发展会更快,可以认为现在芯片可以达到了五六年前渲染的一些量级,只是功耗没有跟上来而已。所以我们基于现在芯片发展趋势可以做的事会越来越高。我们团队其实也在做一些PRT的动态GI的效果,我觉得这些将来都会变成可能。大家在一些高端平台上做这些特性,可以给游戏加分。再加上现在业界一些前沿技术的推进,也会让你整个手游更迈进一步,比如说RTX光线追踪,现在都在讨论要不要用RTX做光线的一些烘焙方案,我们自己用过光线追踪的渲染技术,发实它的理想效果会大有增益,可以做很多你想不到的东西。
再加上过程化制作,我前面其实演示了很多过程化制作的方面,有些部分没有在这里讲,但是2018年开始,过程化制作已经深入到我们每一个制作过程——比如说植被立型、任务、AI还有玩法本身都可以参与到过程化制作。再加上最后一点可能对国内来说有点前沿,就是Machine Learning。现在整个匹配算法还有后面的AI,我们都会尝试使用Machien Learning做探索,这些技术都会推动我们引擎技术不断演化。
今天和大家讲的就这么多,谢谢大家。
推荐阅读
明日方舟|APEX英雄凉了|自走棋手游|疑案追声
游戏人众生相|版号|游戏公司招聘|王牌战士
如果你认为写得好,不妨点个“在看”呗
最新的游戏专业书上架啦!点击下方小程序即可获取
关注微信公众号“游戏葡萄”,每天获取最前瞻的游戏资讯
最后
以上就是开放苗条为你收集整理的unity 2020 怎么写shader使其接受光照?_腾讯是如何利用Unity引擎技术实现首个3A级手游画面的?...的全部内容,希望文章能够帮你解决unity 2020 怎么写shader使其接受光照?_腾讯是如何利用Unity引擎技术实现首个3A级手游画面的?...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复