2

华为开发者大会主题演讲:图形引擎服务开启图形渲染的无限可能

 2 years ago
source link: https://segmentfault.com/a/1190000040933365
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

今天很高兴来到这里,跟大家分享我们图形引擎服务这一年来开放的能力,也欢迎各位小伙伴共同交流。

华为图形引擎服务简单来说就是一个图形3D的渲染引擎,实际上提供了两种服务能力,第一种是轻量化的3D渲染引擎,就是可以将图形引擎服务集成在一个轻量级的3D应用当中,提供3D的渲染能力和交互能力;第二种是增强型的插件能力,图形引擎服务根据特性的拆分做成了插件,集成在游戏引擎里,提供给游戏伙伴一些差异化的能力。

轻量化的3D渲染引擎能力

我先快速介绍下第一个能力——图形3D渲染引擎轻量化的解决方案,轻量化解决方案就是包含一些基本的3D要素和功能,比如PBR渲染管线、动画物理引擎和粒子特效。它可以允许我们的开发者在无需理解尤为高深的图形渲染技术的前提下,可以很轻松地创建出理想的3D效果,并集成在应用里。

首先,我们实现了标准的轻量化的PBR管线,这个管线支持标准PBR物理材质,包括三方导出的物理材质,比如Substance、3D Max Maya这些标准材质库的导入,它可以从开发到运行,精准地表达出物体表面所表现的物理材质。

其次,图形引擎服务也实现了动画的系统,这个动画系统是一个骨骼的动画,包括GRTF或IBS里面标准骨骼元素的驱动,同时图形引擎服务也支持IK动画的技术。

此外,我们还自研了一套轻量化的物理引擎,可以模拟一些刚体简单碰撞、坠落、运动的效果,同时我们今年也首次在移动端做了一些流体的模拟仿真。

为了增强我们图形引擎服务的表达,我们也实现了一套粒子系统,这套粒子系统可以实现一些自然效果的模拟,比如火焰、烟雾、泡沫、瀑布这些通过粒子来表达的真实物理效果。

我们可以通过以下三个场景的列举,更具体的说明轻量化的渲染引擎的功能。

第一个是很简单的电子商务场景,图形引擎服务轻量化体积大小不到1M,所以便于集成在应用开发中,同时我们提供了一个教材,即使你不懂编程,也能10分钟集成完图形引擎服务,这样电商的小伙伴就很方便地能够展示出他想要的内容。

第二个是我们3D物理模拟流体的效果,这个是今年在手机主题上集成图形引擎服务的能力,当手机晃动的时候流体实时在做一些物理的模拟,可以增强我们主题的一些趣味性。
最后一个是华为AR Engine和图形引擎服务结合做的一个AR应用,AR Engine提供了一个环境检测的能力,华为图形引擎服务提供一些高清的渲染,利用管线的一些技术,呈现了一个虚实融合的效果。

以上就是轻量化的渲染引擎和管线能够为我们小伙伴提供的一些基本功能和能力。

增强型的插件能力

再说图形增强的服务能力和插件,相对于轻量化的应用,我们游戏的应用是比较复杂的,但是通过HMS Core把相关的技术和能力开放,为游戏的开发者提供一些效果上、性能上的提升,所以推出了当前游戏增强的能力和插件。

下面我逐一介绍一下。

第一个是光线追踪技术(Ray Shop),光线追踪技术是图形引擎服务非常重要的特性,也是我们全力打造的模块。大家都知道光线追踪是可以呈现一些非常好的3D真实的效果,可以实现一些不规则表面反射或折射的效果,比如湖面的倒影、曲面的反射。

但是光线追踪因为算力的要求,很多都是应用在PC和主机端,对于移动端的算力实现难度较大。基于这一点,我们结合华为自有的专利级的RT技术把它提炼开放出来,因为相比于PC端的RT的技术,我们优化到的能耗比是1:10,原先需要10倍的光线追踪算力,现在只需1倍就可以完成,这省出了一大部分的资源和算力,能够保证RT对光栅化管线做一个补充,从而实现我们能够在移动端应用的效果。

因为光线追踪技术本身算力比较大,我们在实现的时候也做了工具,让我们的开发小伙伴方便地集成插件,结合我们的管线,如果你要应用我们的光追技术,你可以通过工具把场景里面的物体遍历出来,选择你要做光追的反射或被反射物,这样就可以在光栅化的基础上做出光追的特效。

这个视频是我们今年跟天谕合作在天谕手游上集成的光追效果。

第二个是动态漫反射全局光照(DDGI)技术,是一种使用光线追踪计算漫反射照明的技术,对比其他静态GI技术,可以实时呈现动态的光影变化,使游戏光照更加真实,氛围感更强。
下面这个Demo是我们在手机上做了一个类似于拉窗的场景,分别有IBL和平面光在这个场景里,当它拉窗时后面的墙面和地面会有一些光的照射效果,如果没有这个DDGI的加持,后面这一块点亮的效果就不明显。

DDGI,特别是动态DDGI技术本身,也需要很大的算力,在传统的像素是一个Probe的计算要求每个像素一个方向的radiance,每个像素再积分所有方向的radiance,相当于NN的radiance的计算。 但手机上远远达不到计算量,所以我们做了一定的优化,将radiance投影到9个系数的SH上,这样project To SH,再积分查询SH,我们的计算量相当于是9N,计算量的下降,这样带来一定的算力支撑,性能得到提升。

同时DDGI也能支持多种光源,比如平行光、点光、面光源,也是可以支持动态的场景。

我们也在尝试跟小伙伴去做一些对接和调试,希望很快能和大家在实际的产品应用中见面。

前面主要讲的是提升渲染的效果,接下来讲一下图形渲染插件能力增强性能相关的插件。

第一个Slim LOD技术,传统的LOD技术需要高精度的模型,需要对这个模型做一些减面或减模的处理,生成一些不同级别的模型,这样会产生一个问题,包体积会增加20%,再加上传统的LOD技术需要做顶点的合并、删除,会有一些线段连线的拓扑图更改,需要不断做一些调整。我们的Slim LOD技术,实际上打破了原先LOD技术本身,我们选择了模型中的一些部分的顶点做了Index的保留,这样就不会产生新的模型,相当于顶点数并没有改变,贴图也不需要重新配,因此设计师的工作量会大幅下降,这也是我们跟三七互娱这边做的一个效果,应用在三七互娱的《斗罗大陆·魂师对决》,其中面数和顶点数有20%的下降。

最后一个就是Good Culling的技术,优化剔除的方案,这个方案在游戏里面用得比较多,为了保障性能,在游戏场景里面很多模型都需要做一些预处理,把屏幕上看不见的模型去除掉。可能大家基本上采用的优化剔除方案都是GPU的方案,但会带来一些时延跳动的问题。在相机或者物体移动过程中,我们往往使用的是前1帧,甚至前2帧的深度信息,那么GPU处理当前帧的时候,如果发生了遮挡关系的变化,这一帧的计算结果就会出错,只能等下一帧或下2帧处理正确,因此会有一些跳变现象。

我们提出了一个优化剔除的方案,采用了一个CPU的软光栅的方案,相当于把遮挡物写到我们的Z-Buffer(音)当中,被遮挡物根据Z-Buffer来进行深度的比较。

CPU这一块剔除的优势是没有了GPU跳动和兼容性的问题,在低端手机上也能够运行得很好,从实验测试的数据来看,前后的帧率通过这个应用得到了大概10%-15%的提升。
以上是我们华为图形引擎服务开放能力的介绍,非常感谢大家能够百忙之中来到HDC大会,也欢迎大家多跟我们联系和交流。

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK