内容来源:华为开发者大会2021HMSCore6图形技术论坛主题演讲《CG Kit探索移动端高性能渲染》主讲人:华为海思麒麟GPU团队工程师大家好,我是A华为海思麒麟团队GPU研发工程师,今天的主题是《CGKit探索移动端高性能渲染》。华为ComputerGraphicsKit(简称CGKit)提供最前沿的计算机图形渲染框架、插件SDK、GPU扩展接口,帮助开发者发挥硬件的极致性能,大幅降低开发难度,帮助开发者打造具有更好的体验。那么,CGKit可以提供哪些解决方案呢?一、Vulkan渲染框架实践Vulkan是最新的图形标准API,相比OpenGL有一定优势,而OpenGL标准已经停止演化。未来图形基本上会随着Vulkan一起进化。例如,移动端的光线追踪是在Vulkan中描述的,而不是在OpenGL中描述的。但问题是Vulkan非常灵活。与OpenGL相比,它有一定的使用门槛,因此需要一个基于Vulkan的高性能渲染框架,提供实用的架构和解决方案,充分发挥硬件性能。2、高性能渲染插件CGKit提供了多线程渲染、照片超分辨率、体积云、遮挡去除插件等一系列渲染能力,方便三方渲染的顺利进行合作。比如去年的网易《天谕》手游就集成了图片超分辨率的算法。3.开发者工具链CGKit还提供了完整的开发者工具链,可以帮助开发者快速定位和解决渲染功能和性能问题。可以想象,如果未来的工具能够自动识别游戏场景中的一些功能/性能问题,并反馈给开发者,这将大大提高我们的开发效率。4.前沿图形技术的探索CGKit团队长期以来一直在探索前沿图形技术。比如我们如何将AI技术应用到图形渲染中?在协同动画生成方面已经取得了一些研究成果。Vulkan渲染框架实践Vulkan渲染框架实践,为开发者提供Vulkan渲染方案优化、渲染增强插件和渲染技术文档,例如文档会介绍一些API使用策略、资源缓存使用优化、Vulkan兼容性问题等。.前面提到,Vulkan是一个比较新的API,它的CommandBuffer机制自然可以支持多线程渲染。因为Vulkan更加灵活,CGKit会简化对VulkanAPI的封装,使用起来更加方便。其次,CGKit还支持基于物理的渲染。PBR能够真实的反映物体表面光照的属性,我们通过PBR渲染出来的物体会更加逼真。同时,CGKit提供了一个资源管理器,可以尽可能复用大量管线资源,从而降低开销,提高渲染性能。最后,CGKit还支持HDR10的显示能力。配合HDR屏幕的显示优化,最终的画面会有更好的动态范围。静态超分组件以下是游戏图片超分插件的介绍。游戏具有社交属性,分享是社交中非常重要的一环。在游戏过程中,我们经常会遇到一些值得分享的精彩瞬间,比如完成里程碑任务,获得限量版精美皮肤,或者完成头像定制……在这些时刻,玩家们非常渴望分享这些与好友的精彩瞬间,需要用到拍照功能,但如何让照片效果更好呢?对于照片效果,CGKit提供了两种解决方案。第一种解决方案是针对拥有独立NPU的高端手机,比如对应麒麟980、990、麒麟9000芯片的手机。这些拥有独立高端NPU的手机,可以直接调用AI超分辨率接口,让画面细节得到显着提升,画面风格更清晰自然。从下面的对比图中可以看出,处理后的画面中人物的面部细节得到了明显的提升。对于那些没有独立NPU芯片的手机,我们也提供了一个通用的解决方案,叫做FilterSR,它是一种基于通用GPU的算法。应用该算法后,没有NPU的手机也能大幅提升画质。效果,并且与传统方法相比,其锯齿感和画面清晰度也有很大提高。值得一提的是《天谕》集成了我们的相机超分算法。体积云组件CGKit也提供了移动端的高性能体积云插件。体积云技术可在云海中实时动态渲染出高度逼真的全局光照场景,支持玩家在云端自由穿梭,画面真实还原云海意象。物理特性。比如穿梭时粒子临到玩家的感觉,还有真实的灯光效果,包括云朵边缘的细节等等,都会很好的呈现出来。从下图可以看出,云层的颜色随着时间的推移逐渐发生变化,因为我们对光照进行了24小时的适应。在体积云造型方面,我们支持真实和卡通风格,也支持将任意形状的Mash转换成体积云,可以满足开发者不同的定制需求。从性能上来看,在麒麟980平台上,我们可以在4毫秒内渲染1帧。在外挂展示上,同时提供了PC端和移动端的外挂。一般来说,开发者都是在移动端进行编辑和调试,并在移动端以SO的方式集成,其包大小只有400K左右。体积雾组件让我介绍一下体积雾组件。在一些具有特定游戏风格的游戏中,高度逼真的光和雾效果会给你带来非常好的体验。比如去年有一款很火的游戏,叫做《赛博朋克2077》,里面有很多雾效。在主机3A大作中,体积雾一般都是通过体积渲染来实现的。与表面渲染只需要渲染物体的表面不同,体渲染需要渲染物体的内部。渲染工作量可能是表面渲染的数十倍或数百倍。对硬件的性能要求非常高,这也是它一直没有登陆移动端的原因。CGKit的体积雾组件对传统体积渲染做了很多优化,这里简单介绍两个优化。第一类优化是针对多光源场景。当有多个光源时,渲染的工作量会增加几十倍。为了解决这个问题,我们引入了光源剔除技术,让光照计算只发生在受光源影响的局部范围内,可以大大减少渲染工作量。数量。第二个优化是为了提高渲染效率,我们采用了降低采样率的方式,但是降低采样率之后,会出现画面细节不足的问题。结合上一帧的结果,这也会得到一个很好的结果。数据结构也相对适配这些优化。经过前期的一系列优化,我们可以在移动端进行实时高性能的体积雾渲染。从性能上看,在麒麟980平台上,一帧渲染可以在4毫秒内完成;提供PC端和移动端插件,支持PC端编辑调试,SO方式移动端集成,移动端插件包小于500KB。最后介绍一下AI捏脸。在游戏场景中,如果虚拟形象可以有千面,其虚拟形象可以有游戏玩家的一些面部特征,会增强用户的代入感。AI捏脸以正面自拍的形式输入。调用我们的AI接口后,会生成一组高度还原用户面部特征的捏脸参数,并根据捏脸参数自动生成3D模型。同时,我们追求几何相似。同时,也融合了真实纹理和模型纹理,使其纹理能够衬托出玩家的一些面部特征,还原度更高。我们提供了一个非常简单的集成接口,开发者可以很容易的适应,也可以极大的提高他的开发效果。因为我们是纯端到端跑,所以中高端模型的AI捏时间小于4s,稳定性非常高。同时,我们的捏脸范围不仅支持人脸,还支持五官、发型、眼镜等;我们还融入了高度还原的真实纹理,具有更好的还原度,并提供美学调整功能来控制最终输出图像的美学。在开发效率上,开发者调用我们的函数只需要两步。第一步是在PC端自由适配模型,第二步是在移动端以用户自拍为输入调用我们的接口。这个过程非常简单方便。希望大家能有深入的合作,谢谢!更多详情>>访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:GitHub、Gitee关注我们,第一时间了解HMSCore最新技术资讯~
