酷炫 3D 效果在瘦设备上也能实现?|HDC2021 技术分论坛
作者:zhuhuanhuan,图形技术专家
随着 3D 技术的应用普及,越来越多的场景都能看到 3D 的身影,比如充电动效、3D 壁纸、游戏等等,给用户带来了更有趣、更丰富的体验。要满足用户的 3D 体验需求,离不开 3D 渲染引擎。本期,我们就和大家聊一聊 HarmonyOS 的 3D 渲染引擎。
一、产生背景
现有的商业 3D 引擎,在游戏、工业设计、影视等领域发挥了至关重要的作用。为了兼顾跨平台的一致性、降低开发者的使用门槛,这些引擎往往会对不同的硬件平台做抽象,提供一站式的统一开发框架,让开发者在开发应用时无需关注硬件平台的差异性。这虽然给开发者带来了便利,但在一些轻量级 3D 场景下却存在应用架构庞大的问题,并且会消耗过多的内存和功耗。
以 3D 壁纸为例,如果使用现在流行的商业渲染引擎来实现,其内存占用和功耗都很大。下面的图 1 展示了一款典型的 2D 静态壁纸与其 3D 版本之间的资源消耗对比。可以看出,内存和功耗都大大增加了,这会大幅降低设备的待机时间。
图 1 静态壁纸与动态壁纸的资源消耗对比
为了解决当前主流渲染引擎资源占用过高的问题,服务“1+8+N”众多设备的轻 3D 需求,华为自主研发了全新的轻量级 HarmonyOS 3D 渲染引擎。
二、HarmonyOS 3D 渲染引擎介绍
HarmonyOS 3D 渲染引擎采用了业界最先进的 ECS(Entity-Component-System,实体-组件-系统)渲染引擎架构。 ECS 架构的数据和方法分离,按照组合的方式将组件及其行为拼装成对象,对 cache 命中更加友好,并且更加易于实现多线程并行。
那么基于 ECS 架构的 HarmonyOS 3D 渲染引擎到底是怎样的?下面我们从典型特征、特性列表、性能表现三个方面,带大家了解 HarmonyOS 3D 渲染引擎。
1. 典型特征
HarmonyOS 3D 渲染引擎具有以下典型特征:
数据驱动
为了最大限度减轻迭代开发的工作量,采用了数据驱动的设计思想,使得大量配置和修改都无需重新编译代码。例如 render node graph、shader pipeline、renderpass layout、vertex data declaration 和 post-processing 等内容都可以通过 json 等文本文件指定,开发者可以通过修改这些配置文件实现改变渲染流程、增加后处理效果、修改模型形状等操作。
插件机制
在保持引擎核心代码尽可能少的同时,提供了极为方便的架构级插件扩展支持。比如,在低端设备上,可以只提供引擎的核心部件,这样编译出来的二进制文件规模非常小。而在高端设备上,可以根据需要添加扩展功能插件,例如碰撞功能、粒子效果等。这样,既可以降低应用的资源消耗,也可以让开发者轻松构建自定义渲染管线。
高度并行
自动支持渲染并行化。GPU 资源可以按照 lock-free 的方式访问,开发者无需使用锁,也不用担心资源访问的多线程竞争问题。
软硬结合
HarmonyOS 与 HISI 芯片的软硬件联合优化,以及华为在 GPU Turbo 技术的长期沉淀,为 3D 应用能效比的提升作出了重要贡献。
现代图形 API
图形 API 充分借鉴了 Vulkan API 的设计思想,能够有效利用 Vulkan 的大量创新特性,例如 multi-queue、indirect rendering、stateless rendering、descriptor sets 等。
2. 特性列表
相比当前业界常用的渲染引擎,HarmonyOS 3D 渲染引擎已经支持所有核心功能和常用特性,可以满足绝大部分 3D 应用的开发需求。下面我们就来看看 HarmonyOS 3D 渲染引擎支持哪些特性吧:
图 2 支持的特性列表
说明:图 2 中的“插件系统”是可以根据需要进行扩展的特性,其他特性则是系统默认支持的特性。
如图 2 所示,HarmonyOS 3D 渲染引擎除了支持 Java/C++ API 以外,还将在 2022 年支持 HarmonyOS 的 JS 开发框架和声明式 UI。后处理方面,目前支持 FXAA 抗锯齿技术,后续还将支持基于时域的 TAA(Temporal Anti-Aliasing)抗锯齿技术,以达到更好的显示效果。
3. 性能表现
HarmonyOS 3D 渲染引擎主打轻量级,其性能表现尤为重要。
我们从开源项目获取了一些标准模型,这些模型经常用于图形领域的各种 demo 测试。基于麒麟 990 平台评估这些模型在多个引擎中的性能表现,测试结果如下图所示:
图 3 性能测试结果
开源项目:https://github.com/KhronosGroup/glTF-Sample-Models
从以上测试结果可以看出,HarmonyOS 3D 渲染引擎在内存和功耗上表现都非常出色。
三、应用示例
HarmonyOS 3D 渲染引擎当前主要面向普通的应用开发者,典型应用场景是在以 2D 为主的应用中嵌入少量的 3D 元素。
目前 3D 渲染引擎已经内置到 HarmonyOS 中了,下面我们来看看 HarmonyOS 3D 渲染引擎的几个典型应用示例:
UX 3D 动效:
Qmoji(相机趣味变装):
3D 壁纸:
四、未来展望
虽然 HarmonyOS 3D 渲染引擎当前主要面向轻量级的 3D 应用场景,但其同样支持复杂 3D 场景的开发,例如 3D 游戏、车控界面等。为了协作开发者更好地完成 3D 场景开发,HarmonyOS 将在 2022 年推出 3D 场景配套的开发工具,敬请期待!
未来,HarmonyOS 3D 渲染引擎以及配套的 3D 开发工具链将随着 HarmonyOS 持续演进,不断拓宽应用场景,持续推动 3D 应用在各种智能设备上的广泛落地,打造更加绚丽的数字世界!
评论