写点什么

酷炫 3D 效果在瘦设备上也能实现?|HDC2021 技术分论坛

  • 2021 年 12 月 21 日
  • 本文字数:1935 字

    阅读完需:约 6 分钟

酷炫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 应用在各种智能设备上的广泛落地,打造更加绚丽的数字世界!

用户头像

每一位开发者都是华为要汇聚的星星之火 2021.10.15 加入

提供HarmonyOS关键技术解析、版本更新、开发者实践和活动资讯,欢迎各位开发者加入HarmonyOS生态,一起创造无限可能!

评论

发布
暂无评论
酷炫3D效果在瘦设备上也能实现?|HDC2021技术分论坛