郭智:《使命召唤》手游引擎技术的升级与演化

郭智:《使命召唤》手游引擎技术的升级与演化

在上周的Unite 2019大会上,腾讯天美工作室技术副总监郭智分享了《使命召唤》手游引擎技术的升级与进化。

文/安德鲁

《使命召唤》无疑是今年腾讯手中最重要的IP之一。 同名手游近期在官网开启预购后,迅速突破210万预购。

光照贴图如何产生的_unity光照贴图_光照贴图描述错误的是

《使命召唤》系列一直是北美游戏市场的国民级游戏。 也是少有的每年都会发布且销量超过1000万的系列之一。 十多年来,它在世界各地积累了海量观众。 国内FPS玩家也对同名手游表示了很高的期待。 目前游戏在 TapTap 上的评分为 8.8 分。

游戏自公布以来,玩家们最关心的自然是它能否重现主机系列的游戏体验以及品质是否优秀。

在上周的Unite 2019大会上,腾讯天美工作室技术副总监郭智分享了《使命召唤》手游引擎技术的升级与进化。

光照贴图描述错误的是_unity光照贴图_光照贴图如何产生的

《使命召唤》手游的开发过程中,使用了很多比较先进的处理方式,比如使用之前专门做影视的Houdini、使用GPU烘焙等,而游戏也依赖于关于 PBR 等技术。 据郭智介绍,《使命召唤》手游在移动端已经达到了3A级别的画面。 在这次分享中,我们还可以看到腾讯在手游表现力上的一些极致尝试。

光照贴图描述错误的是_光照贴图如何产生的_unity光照贴图

以下为演讲实录。

unity光照贴图_光照贴图描述错误的是_光照贴图如何产生的

按照Unity大会的国际惯例,我先自我介绍一下——我于2011年加入腾讯,担任腾讯天美工作室副技术总监、技术专家。 我负责整个工作室的手游客户端的研发和一些管理工作。 我在这个行业有几十年的经验,今年正好是我的第11年。 我曾经负责过不同类别的项目开发,使用过一些自研和商业引擎,制作过几款FPS游戏,所以有比较深厚的积累。 以下是我玩过的游戏。 主要涉及MMOG、FPS品类、以及各类终端手游。 涉及到的引擎,第一是最左边的一些自研引擎,第二是gamebryo,第三是unreal。 后来涉及到一些Unity5项目的开发。 我更频繁地使用 Unity,并且也参与了整个 Unity 引擎的工作。 升级。

unity光照贴图_光照贴图如何产生的_光照贴图描述错误的是

大家都知道2017年是手游图形升级的元年,所以对于如今的引擎技术,我们首先要谈的是图形。 对于整个游戏画面,我首先想讲一下整个画面呈现标准的建立。 我相信你以前从未听说过什么叫图片标准。 它只讨论使用哪些纹理以及如何制作它们。 画面标准由艺术家确定。 COD手游的目标是打造3A手游画面,因此有必要探索PBR时代画面呈现的最佳实践和升级。

unity光照贴图_光照贴图如何产生的_光照贴图描述错误的是

对于整个IP产品来说,首先要明确制作的主基调。 刚开始COD项目的时候,我们因为性能的原因纠结了一段时间:是用Phong的模型还是用最经典的手绘模式。 去年我们对COD的游戏图形进行了重大改造,使用PBR来重现整个主机的图形。 该游戏只有达到主机品质才可以在线上线。 我们需要挑战的是实现整个控台画面的丰富性和还原性,满足高端IP用户的控台感受。

光照贴图描述错误的是_光照贴图如何产生的_unity光照贴图

既然我们要做PBR,那么我们首先要做的就是生产管线和技术管线的统一。 对于制作流水线来说,美术所需的所有纹理资源都需要在线性空间中进行计算。 用于创建任何纹理的任何工具都需要是线性的。 对于技术管线来说,需要为引擎定义一个统一的渲染管线,也就是说我们的渲染管线是通过技术实现的Scalable HD渲染管线。 对于高端配置,使用 HDR RT 输入。 对于低端配置,为了节省性能且无法进行后期处理,则使用OnePassHDR管线,并使用Tonemapping在最终着色器中进行相应的数学拟合,以拟合我们的目标曲线。

unity光照贴图_光照贴图描述错误的是_光照贴图如何产生的

整个生产管线和技术管线建立起来之后,我们再来谈画面标准的建立。 对于图片的呈现,我们需要一致的图片标准——比如对于这个角色,我们必须非常标准地定义每个像素。 事实上unity光照贴图,按照国际标准,任何3A游戏都会这样定义。 必须定义材质模型和照明模型。 ,着色模型。 标准一旦建立,我们就可以说同一种语言了。 如果没有这样的标准,美术生就会说我要像这样对贴图进行纹理处理,在这里画一些光线,制造一些阴影效果。 统一了标准之后,团队内部各种情况就不会再出现分歧和歧义,讨论也会变得非常简单。 这些标准是基于真实物理的具有物理意义和规律的参数,即遵循PBR。 还有一点是整个场景的物理一致的光照环境,这意味着我们需要使用动态光影+PBR+IBL。

接下来我们就来介绍一下Material、Lighting、Shader这三个方面在COD手游中是什么样子的。

光照贴图描述错误的是_unity光照贴图_光照贴图如何产生的

预期立方体贴图

我们先来看看什么是着色模型。 我们为手机平台构建了完整的PBR光照方案,使用分级来近似PBR,并提出了PBR的4级数学拟合。 最高级别肯定是针对高端GPU,比如现在的835系列。 级别 3 适用于 520 等机器,级别 2 适用于低端机器,最后一个级别适用于有兼容性问题的机器。 用它来解决所有兼容性问题。 高、高、低配置的角色均采用最完整的PBR方案,这意味着不会有Shader LOD切换。 我使用 GGX 镜面反射 + 朗伯漫反射来处理直接光,使用立方体放大器来处理间接光的 GI 镜面反射,使用 SH 探头来处理 GI 漫反射。

对于架构来说,出于性能的考虑,一些光照部分会在低端进行简化,也就是刚才提到的Shader LOD。 直射光实际上在远景中使用了荫罩。 直射光不会被烘焙到光照贴图中。 直接光使用纯动态光照,间接光使用IBLcubbmap+GPU烘焙的光照贴图。

光照贴图如何产生的_光照贴图描述错误的是_unity光照贴图

我们再看一下材料。 固有颜色、法线 + 粗糙度合并贴图以及金属度 + AO 放置在另一个贴图中。 该材质接收来自lightprobe的间接光照和直接光,以及来自环境的间接光,最终得到整体呈现。 这是我们的材质模型和光照模型。

整个团队敲定之后,所有的场景基本上都给大家确定了。 确定了这些之后,我们需要讨论的就是制作本身。 对于像COD这样的3A级手游中的一些制作流水线,相信程序员或者一些开发者可能不太关心制作流水线。 但是2017年以后,大家都知道TA其实挺火的,而且我觉得所有技术人员都需要懂美术工作,甚至需要懂一些策划工作,才能把游戏做好,所以我们来谈谈制作流程是什么样的AAA手游?

光照贴图描述错误的是_unity光照贴图_光照贴图如何产生的

unity光照贴图_光照贴图如何产生的_光照贴图描述错误的是

我们来看看生产的核心因素。 第一个是批量生产。 现在所有的游戏最迟需要三年发布,但是往往我们没有那么多钱或者那么多时间,所以我们需要做大量的外包,所以第一个因素就是量产。 量产可以保证我们拥有所有的游戏。 只有外包,所有人员、所有开发、所有美术标准都要统一,才能实现量产。 第二个是引擎,所以现在对于任何引擎,我们认为我们需要使其成为我们认为在一两年内会看到的最好的引擎。 最后一个方面是性能。 无论是主机平台还是PC平台或者现在的移动平台,都是非常重要的。 玩家不可能出现游戏卡顿的情况,必须要有最流畅的体验。 这三个因素决定了我们整个生产流程。

对于制作流程,我认为使用流程和工具来保证美术素材的正确性和合理性有两个原则:一是所有美术素材输入都必须符合PBR标准,也就是说不能画各种阴影。 您的颜色、您的明暗不能大于我们认为推荐的值范围; 原则二:我们需要统一所有的生产规范和生产环境,只有做到这一点才能进行批量生产。 只有达到统一的规格之后,你的画面才是统一的,你认为你能掌握的才是统一的。

PBR的初衷是在欧美提出的。 它的初衷不是为了效果,而是为了量产。 量产其实有几种策略:一是验证,能验证的就尽量验证;二是验证。 另一个是文档,我们需要各种白皮书来解释我们的想法。 最后一项是科学的。 PBR的诞生本身就是工业化的产物,而不是艺术或艺术。 所以当你一味的强调各种hack,强调不同的美术制作方式,强调每个TA可以做各种事情,打磨完图形后,就不再可能科学,游戏就不再可控,你的团队就会失控了,游戏就没法制作,也就不可能量产。 所以想做PBR,必须遵循这三个原则。

光照贴图如何产生的_unity光照贴图_光照贴图描述错误的是

先说整个验证过程。 我们需要在sp(Substance Painter)中提供一系列光照环境来进行美术验证。 过去,这是在Photoshop中完成的,但用它制作的任何图片都可能是错误的,这可能会导致艺术制作失控。 所以我们的场景制作必须满足三大点。 一是图形技术的保证。 在相同的PBR光照环境下,95%以上是一致的。 如何保证一致性? 我们先看SP,再看Unity的渲染管线,保证一致性; 另一个是生产环境的限制。 艺术家使用的渲染环境必须与标准光照环境一致; 接下来就是验收标准的约束,在讨论材质本身的效果质量时,只能参考标准的光照环境。 不要在Max或MAYA中打开它,也不要在任何引擎或其他环境中打开它。 我们将在标准环境中打开它。 这个讨论是有意义的,否则管道就会不一致,讨论的结果也会不同。

光照贴图如何产生的_光照贴图描述错误的是_unity光照贴图

刚才提到的验证标准场景实际上包括1个主场景和6个辅助场景。 主场景用于验证固有颜色的明暗色调、不同粗糙度表面的镜面反射以及金属材料的镜面反射。 辅助场景检查包括室内外环境光源、暖色调环境下的效果、明暗对比强烈的灯光、典型室外照明下的环境或固有颜色是否太暗等。 我参考了装饰和各种抽象环境中的原理,可以帮助艺术家在进行各种验证讨论时有一些可以看到制作问题的场景。

光照贴图描述错误的是_unity光照贴图_光照贴图如何产生的

光照贴图描述错误的是_unity光照贴图_光照贴图如何产生的

建立验证环境后,必须定义一份包含详细规则的白皮书。 这是我们的内部白皮书,比如输出是什么样子,环境如何配置,以及一些漫反射和镜面反射是什么样子。 基本上是一些数学原理。 同时,还会有一些黑科技作为材质验证的参考工具unity光照贴图,包括屏幕校色器、照度计、以及一些标准颜色,通过这些来进行验证。 同时,出去测量SH或光照贴图环境,以确保您房间内的色调一致。 为了防止艺术家在调整各种颜色甚至灯光值时使用感性知识,我们需要给他们一个非常标准和标量的参考。

光照贴图描述错误的是_unity光照贴图_光照贴图如何产生的

这个标准可以保证我们在制作整个PBR的时候有一个参考和依据。 最终才能呈现出如此好的画面效果。

unity光照贴图_光照贴图描述错误的是_光照贴图如何产生的

说到这里,我们再来谈谈《使命召唤手游》中引擎技术的积累。 上两部分夹杂着TA、美工和工程师的一些工作,下半部分则是相关纯技术人员的工作。 事实上,它是对整个Unity引擎的颠覆和扩展,并且它将作为未来3A手游引擎实践的一些标杆。

光照贴图如何产生的_光照贴图描述错误的是_unity光照贴图

unity光照贴图_光照贴图描述错误的是_光照贴图如何产生的

我们要做的第一件事就是完成游戏中缺失的渲染东西。 比如头发怎么做,皮肤怎么做,人物怎么做,这些都要尽量完成。 一些包含地形或其他技术解决方案的地图可能需要扩展。 比如说地形,我想我们应该是国内工作室中使用Unity结合Houdini最多的一个。 我们拥有这种组合的工作流程,以及不同地形的 Drawcall 合并,并支持顶点获取纹理。 当我们使用地形时,我认为它是现在手游最好的地形解决方案,所以我们对地形系统进行了深入的改造。 。

光照贴图描述错误的是_光照贴图如何产生的_unity光照贴图

接下来就是我们的烘焙了。 烘焙使用GPU烘焙。 当你的地形非常复杂的时候,如果你使用Enlighten,你将不得不等待一整夜。 现在我们只需要3-5分钟就可以烘焙非常复杂的场景。 以前烤需要4-6个小时,这是不可接受的。 出现bug时发现当天十张图片会卡住,会造成无限超时。 这个迭代时间非常重要。 使用GPU烘焙可以实现更多的效果提升,计算精度和科学参数有更强的基础。 甚至可以利用一些AI技术对烘焙结果进行一些降噪和算法修改,所以我们这里使用了一整套GPU烘焙方案。

光照贴图如何产生的_unity光照贴图_光照贴图描述错误的是

我们对烘焙进行了深度定制,即结合Houdini自动部署。 过去,我相信所有的艺术家都是手工将这些光探针一一放置的。 安置纯粹是人工劳动,而且不准确。 所以我们扩展了整体算法音效,然后使用Lightprobe的编程自动生成来使这些迭代更快。 你可以看到所有这些光和影实际上非常密集。 相信如果你想玩这类游戏的话,也可以尝试一下这个。 算法并不是特别复杂。

光照贴图如何产生的_unity光照贴图_光照贴图描述错误的是

然后我们来谈谈植被生产。 过去它完全是用艺术来完成的。 现在很多场景都使用了大量的植被。 以前的制作方法其实是通过艺术一点一点完成的。 我们现在以编程方式生成 AO 和法线。 这样一来,原本两周的工作量就减少到了两天。 这些都是非常有意义的,节省了大量的生产成本和人工成本,也节省了大量的外包工作,所以无论我们现在生产什么,我们都要积极拥抱整个PCG技术,用这些技术来辅助整个生产过程。

我们制作了很多很多游戏,你可以看到制作标准和美术规格也非常高。 如何保证整体生产、发动机、性能能够融为一体? 我们所有的程序和管道的制作都必须稍后完成。 例如,我们使用了4个纹理,它们都是分散的纹理。 我们必须有一些自己的技术。 以前做的所有美术都是零散的纹理,然后再将图像进行组织和整合,以避免一开始就设定标准并与艺术家讨论如何分配我的纹理,以及如何保证这种表现。 对于美术人员来说,他们根本不敏感或者会产生问题,所以对于技术人员本身来说这个需要包括在内。

unity光照贴图_光照贴图如何产生的_光照贴图描述错误的是

应该是纹理图集

另外,我们会使用Texture Streaming等一些技术来确保与包括iPhone 6在内的机型的兼容性。因此,整个制作过程不会扰乱美术工作流程,直到后续优化。 我们会使用Texture atalas、Texture Streaming、PbrShader的shaderlod等一系列技术,使得后续优化阶段的性能能够达到预期。 动态收缩。

unity光照贴图_光照贴图描述错误的是_光照贴图如何产生的

最后一部分比较重要,那就是在进行发动机改动时,需要了解发动机技术的演变。 最近面试了很多应聘者,和很多业内大佬聊了聊,讨论了不同层面的开发者。 大家在做修改的时候,我感觉往往没有依据。 也许我在浏览博客时突然发现一项技术并使用它。 在我们的技术中。 我们团队非常重视发动机技术的演进,包括最重要的三个方面。 一方面,移动版引擎技术。 从2017年到现在,可以认为PC游戏中的所有技术都可以在移动端使用。 如果现在用不了,相信未来两三年就可以用了。 比如现在流行使用线性空间计算,做PBR渲染,创建雾和大气效果,对渲染标准进行一些更新。 事实上,我八年前就为电脑游戏做过这些。 但现在手游又被使用了,所有技术都从端游向手游演变。 我们只是做相关的数学拟合和一些科学探索。 因此,大家在制作手游的时候,一定要关注手机版的客户端游戏技术。

另一方面是发动机技术和工具的升级。 引擎版本不断升级。 当我第一次使用Unity时,它是4.5版本。 现在游戏基本上可以升级到几个点了。 这些引擎的不断升级,给底层带来了比较大的变化。 例如,Unity ECS现在正在烘焙方法和技术的各个方面进行升级。 所以在升级引擎的时候,你要考虑到会随着引擎升级的游戏,做出一些自己最稳定的技术进化。 此外,当今的工具正在不断发展。 近年来,我们实际上使用了 Substance 和 Houdini。 从那时起,这一系列的美术作品在团队中越来越受欢迎,所以我们需要利用一切工具来配合游戏制作。

最后就是芯片的发展。 芯片研发将会更快。 可以认为现在的芯片可以达到五六年前的一些渲染水平,但是功耗却没有跟上。 因此,基于现在的芯片发展趋势,我们能做的事情会越来越高。 我们的团队实际上也在研究 PRT 的一些动态 GI 效果,我认为这些在未来将成为可能。 如果在一些高端平台上实现这些功能,就可以给游戏加分。 再加上行业内一些前沿技术的进步,也会让你的整个手游更进一步,比如RTX光线追踪。 现在正在讨论一些光烘焙解决方案是否使用RTX。 我们自己也使用过光线追踪。 如果实现了理想的效果,渲染技术将会得到很大的提高,可以做很多你想不到的事情。

除了流程化生产之外,我之前其实也演示过流程化生产的很多方面。 有些部分这里不讨论。 但从2018年开始技能特效,流程化制作已经渗透到我们的每一个制作流程中——比如植被搭建、任务、AI、游戏本身都可以参与程序化制作。 另外,最后一点对于中国来说可能有点前沿,就是机器学习。 现在我们将尝试使用Machien Learning来探索整个匹配算法以及后续的AI。 这些技术将推动我们发动机技术的不断演进。

今天我要告诉大家的就是这些,谢谢大家。

文章来源:http://mp.weixin.qq.com/s?src=11×tamp=1704269294&ver=4995&signature=2JNkr193aj-WCsghqf34X-UuUmjLn4MzJVEml9L-U4mqRTJ*8DACAu*2NaVZMLw99sKt0lnj3RDoXFqPJ8NrzQjot9nnRq0sflk3cvW0QtacKyMNIBf8XSu3IPS*DWnU&new=1