内容起源:华为开发者大会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端进行模型自在适配,第二步在挪动端以用户的自拍照为输出就能够调用咱们的接口,整个过程非常简单便捷。

心愿大家能够进行深度的单干,谢谢!

理解更多详情>>

拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee

关注咱们,第一工夫理解 HMS Core 最新技术资讯~