内容起源:华为开发者大会 2021 HMS Core 6 Graphics 技术论坛,主题演讲《CG Kit 摸索挪动端高性能渲染》
演讲嘉宾:华为海思麒麟 GPU 团队工程师
大家好,我来自华为海思麒麟团队的一名 GPU 研发工程师,明天给大家带来的主题是“CG Kit 摸索挪动端高性能渲染”。
华为图形计算服务(Computer Graphics Kit,简称“CG Kit”)提供最前沿计算机图形学畛域的渲染框架、插件 SDK 与 GPU 扩大接口,帮助开发者开掘硬件极限性能,大幅升高开发难度,帮忙开发者发明出体验更佳的产品。
那么,CG Kit 能提供哪些解决方案呢?
一、Vulkan 渲染框架实际
Vulkan 是最新的图形规范 API,相较于 OpenGL 具备肯定的劣势,并且 OpenGL 这个规范曾经进行演进,将来图形学基本上以 Vulkan 向前演进。举个例子,挪动端的光线追踪就是在 Vulkan 中形容,并且在 OpenGL 中是没有的。但问题在于,Vulkan 非常灵活,它相较 OpenGL 有肯定的应用门槛,所以就须要有基于 Vulkan 高性能的渲染框架,以此提供实际架构和计划,充分发挥出硬件性能。
二、高性能渲染插件
CG Kit 提供多线程渲染、拍照超分、体积云、遮挡剔除等一系列渲染能力的插件,以便于三方单干的顺利进行,比方去年的网易《天谕》手游就集成了拍照超分的算法。
三、开发者工具链
CG Kit 也提供了残缺的开发者工具链,咱们能够帮忙开发者迅速定位解决渲染性能和性能问题。大家能够设想一下,如果将来工具能够自动识别游戏场景中的一些性能 / 性能问题并反馈给开发者,这将极大晋升咱们的开发效率。
四、前沿图形技术摸索
始终以来 CG Kit 团队都在对前沿图形技术进行摸索,比方,咱们如何把 AI 的技术利用到图形渲染中,目前咱们已在 AI 超分、主动 3D 人脸建模,AI 协同动画生成等方面有所研究成果。
Vulkan 渲染框架实际
Vulkan 渲染框架实际,为开发者提供 Vulkan 渲染解决方案优化、渲染加强插件和渲染技术文档,比方,文档中会介绍一些 API 应用策略、资源缓存应用优化、Vulkan 的兼容性问题等等。后面提到 Vulkan 是比拟新的 API,它的 Command Buffer 机制能够人造反对多线程渲染。因为 Vulkan 比拟灵便,CG Kit 就会针对 Vulkan 的 API 做了简化封装,应用起来更便当。
其次,CG Kit 也反对基于物理的渲染,PBR 能够实在地反映物体外表光照的属性,通过 PBR 咱们渲染进去的物体会更加的实在。
同时,CG Kit 提供了资源管理器,能够将所用到的大量管线资源尽可能地进行复用,从而升高开销,进步渲染性能。
最初,CG Kit 同样反对提供 HDR10 的显示能力,配合 HDR 屏幕的显示优化,最终出图会有更好的动静范畴。
动态超分组件
上面介绍一下游戏拍照超分的插件,游戏是具备社交属性的,分享就是社交里十分重要的一个环节。在游戏过程中常常会遇到一些十分值得分享的精彩时刻,比方实现了一个里程碑的工作,获取了一个限量款精美的皮肤,或者曾经实现了一个虚构人物形象定制……在这些时刻,游戏玩家十分迫切地想把这些精彩的霎时分享给本人的敌人,那就须要用到拍照的性能,然而如何让拍照的成果更好呢?
针对拍照成果,CG Kit 提供了两种解决方案。
第一种解决方案就是针对具备独立 NPU 的高端手机,例如麒麟 980、990 和麒麟 9000 芯片对应的手机,这些具备独立高端 NPU 的手机能够间接调用 AI 超分接口,这样画面细节得以显著减少,画面格调更加清晰天然,从上面的比照图能够看出,解决后的图片人物面部细节显著有晋升。
而针对那些没有独立 NPU 芯片的手机,咱们也提供了一种通用的解决方案,叫作 FilterSR,这是基于通用 GPU 的一种算法,利用这种算法后,没有 NPU 的手机也能够大幅晋升画面成果,并且相较于传统的办法它的锯齿感和画面清晰度也有很大的晋升。值得一提的是,《天谕》就集成了咱们拍照超分的算法。
体积云组件
CG Kit 也提供了挪动端高性能的体积云插件,体积云技术能够实时动静地渲染出高度实在云海中全局光照场景,并且反对玩家在云中任意地穿梭,画面能够实在还原云朵的物理个性。比方,玩家在穿梭过程中扑面而来的粒子感,还有实在的光照成果,包含云朵边缘的细节等等,都会有十分好的出现。从下图能够看出,这个云朵的色彩是随着工夫的变动在逐渐变动的,就是因为咱们对光照做了 24 小时的适配。
在体积云的状态方面,咱们反对实在和卡通两个格调,还反对任意形态的 Mash 转换成体积云,这样能够满足开发者不同的定制需要。从性能角度看,在麒麟 980 这个平台上,咱们能够做到 4 毫秒以内渲染 1 帧,插件显示上,同时提供了 PC 端和挪动端的插件,一般来说开发者是在挪动端上进行编辑调试,并在挪动端上以 SO 的形式集成,而它的包体大小只有 400K 左右。
体积雾组件
上面介绍一下体积雾组件,在一些特定游戏格调的游戏中,具备高度实在的光和雾的成果会给大家带来十分好的体验,比方去年有一款十分火的游戏,叫《赛博朋克 2077》,它外面就有很多雾效。
主机 3A 大作中,体积雾个别是通过体渲染来实现的,不同于外表渲染只须要渲染物体外表,体渲染要渲染物体外部,渲染工作量可能是外表渲染的几十倍上百倍,体渲染对硬件的性能要求十分高,这也是始终没有在挪动端落地的起因。
而 CG Kit 体积雾的组件对传统的体渲染做了很多优化,我简略介绍两种优化。
第一种优化是针对多光源场景下的优化。多光源的时候,渲染的工作量是成几十倍的减少,针对这个问题咱们引入了光源剔除技术,让光照计算只产生在光源所影响的部分范畴内,这样就能够大幅地升高渲染的工作量。
第二种优化是,为了晋升渲染的效率,咱们采纳了升高采样率的形式,然而升高采样率当前会存在画面细节有余的问题,为了解决这个问题,咱们引入了时域滤波技术,把以后帧和上一帧的后果交融,这样也会失去一个十分不错的后果。数据结构也针对这些优化做了相对性的适配。
通过后面一系列的优化之后,咱们能够在挪动端进行实时高性能的体积雾渲染,从性能角度来看,在麒麟 980 平台上,能够做到 4 毫秒一帧渲染;在集成模式上,能够同时提供 PC 端和挪动端插件,反对 PC 端对编辑调试,挪动端以 SO 形式集成,挪动端插件包体小于 500KB。
、
AI 捏脸
最初介绍一下 AI 捏脸,在游戏场景中如果可能做到虚构形象千人千面,而且它的虚构形象可能有游戏玩家一部分的脸部特色,就会晋升用户的代入感。AI 捏脸以侧面自拍照的形式输出,在调用咱们的 AI 接口当前,会生成一组高度还原用户脸部特色的捏脸参数,基于捏脸参数主动生成 3D 模型,同时咱们在谋求几何类似的同时,还将实在纹理、模型纹理相交融,使得它的纹理能提现玩家的一些面部特色,还原性更高。咱们在集成上提供了非常简单的接口,开发者能够便当地进行适配,也能够大幅地晋升他的开发成果。
因为咱们是纯端侧运行,在中高端机型 AI 捏脸工夫小于 4s,稳定性很高。同时咱们的捏脸范畴岂但反对面部,而且还反对五官、发型、眼镜等;咱们还融入了高度还原的实在纹理,有更好的还原度,并提供好看度调整性能,能够管制最终的输入图好看度。在开发效率上,开发者只须要两步就能够调用咱们的性能,第一步 PC 端进行模型自在适配,第二步在挪动端以用户的自拍照为输出就能够调用咱们的接口,整个过程非常简单便捷。
心愿大家能够进行深度的单干,谢谢!
更多精彩内容,请见华为开发者官方论坛→https://developer.huawei.com/…