HDC2021技术分论坛:酷炫3D效果在瘦设备上也能实现?
作者: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应用在各种智能设备上的广泛落地,打造更加绚丽的数字世界!

HDC2021技术分论坛:酷炫3D效果在瘦设备上也能实现?的更多相关文章
- HDC2021技术分论坛:进程崩溃/应用卡死,故障频频怎么办?
作者:jiwenqiang,DFX技术专家 提到开发一个产品,我们通常首先想到的是要实现什么样的功能,但是除了功能之外,非功能属性也会很大程度上影响一个产品的体验效果,比如不定时出现的应用卡死.崩溃 ...
- HDC2021技术分论坛:如何高效完成HarmonyOS分布式应用测试?
作者:liuxun,HarmonyOS测试架构师 HarmonyOS是新一代的智能终端操作系统,给开发者提供了设备发现.设备连接.跨设备调用等丰富的分布式API.随着越来越多的开发者投入到Harmon ...
- HDC2021技术分论坛:组件通信、硬件池化,这些创新技术你get了吗?
作者:ligang 华为分布式硬件技术专家,sunbinxin 华为应用框架技术专家 HarmonyOS是一款全新的分布式操作系统,为开发者提供了元能力框架.事件通知.分布式硬件等分布式技术,使能开发 ...
- HDC2021技术分论坛:异构组网如何解决共享资源冲突?
作者:lijie,HarmonyOS软总线领域专家 相信大家对HarmonyOS的"超级终端"比较熟悉了.那么,您知道超级终端场景下的多种设备在不同环境下是如何组成一个网络的吗?这 ...
- HDC2021技术分论坛:“积木拼装”,HarmonyOS弹性部署大揭秘!
作者:peitaiyi,华为终端OS产品交付专家 HarmonyOS是一款面向万物互联时代的.全新的分布式操作系统.在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力.适配多种终 ...
- iOS酷炫动画效果合集
iOS酷炫动画效果合集 源码地址 https://github.com/YouXianMing/Animations 效果绝对酷炫,包含了多种多样的动画类型,如POP.Easing.粒子效果等等,虽然 ...
- canvas实现酷炫气泡效果
canvas实现动画主要是靠设置定时器(setinterval())和定时清除画布里的元素实现,canvas动画上手很简单,今天可以自己动手来实现一个酷炫气泡效果. 气泡炸裂效果(类似水面波纹) 代码 ...
- TensorSpace:超酷炫3D神经网络可视化框架
TensorSpace:超酷炫3D神经网络可视化框架 TensorSpace - 一款 3D 模型可视化框架,支持多种模型,帮助你可视化层间输出,更直观地展示模型的输入输出,帮助理解模型结构和输出方法 ...
- 三分钟学会用 js + css3 打造酷炫3D相册
之前发过该文,后来不知怎么回事不见了,现在重新发一下. 中秋主题的3D旋转相册 如图,这是通过Javascript和css3来实现的.整个案例只有不到80行代码,我希望通过这个案例,让正处于迷茫期的j ...
- 基于ViewPager的一些酷炫切换效果
1.ViewPager可以用于实现类似banner的功能,我曾经在“时间超市”项目中使用过.但如何在此基础上实现一些切换的酷炫效果呢?今天细细品读了鸿洋大神的相关博文,终于学会了如何自定义切换效果. ...
随机推荐
- Java 接口:比较对象的大小
1 package com.bytezreo.interfacetest; 2 3 /** 4 * 5 * @Description 接口:比较对象的大小 6 * @author Bytezero·z ...
- MYSQL索引-上
前言 今天同事做数据清理的时候发现我这边有一张表没有主键,这个表有两个字段,ID和Name,ID作者唯一索引,在我印象里,一个数据表如果没有主键索引,它会内部创建主键索引,创建的标准就是唯一性,我觉得 ...
- springboot多数据源配置理解
今天研究项目的多数据源配置,产生了一点疑惑,有很多地方没有指定数据源,那么spring如何知道连接哪一个呢?让我们从头开始梳理吧. 首先是数据源配类 其中使用到了两个数据源,项目采用读写分离,一个主库 ...
- @Autowired和@Resource整理
参考,欢迎点击原文:https://www.ixigua.com/6991282608663593508?id=6945836219422999079&logTag=944f6616c791c ...
- Spring Boot学习日记11
学习静态资源,和统一打包 WebJars是将web前端资源(js,css等)打成jar包文件然后借助Maven工具,以jar包形式对web前端资源进行统一依赖管理 拿到静态资源 http://loca ...
- VR虚拟现实原型制作-应用及解决方案的特点
VR虚拟现实原型制作 利用VR虚拟现实软件进行原型制作可以用于增强原型测试期间的沉浸感,减少产品设计迭代次数,并将与产品原型制作相关的成本降低40-65%. VR虚拟现实原型制作市场规模 用于原型制作 ...
- 让高清和流畅并存,3DCAT云看车技术领跑汽车行业
3DCAT实时云渲染平台在承接了奥迪大客户的项目后,将把一部分业务重心放到汽车行业,加大了研发力度和算力投入,细节决定成败,3DCAT的云看车高度还原了汽车每一种材质和纹理,逼真的视觉享受,让车主爱不 ...
- 记录--短视频滑动播放在 H5 下的实现
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 短视频已经无数不在了,但是主体还是使用 app 来承载的.本文讲述 H5 如何实现 app 的视频滑动体验. 无声胜有声,一图顶百辩,且看 ...
- KingbaseES V8R3集群运维案例---进程内核参数配置集群启动故障
案例说明: KingbaseES V8R3集群在部署时需要配置与进程间通讯(IPC)相关的内核参数,如果缺失配置或配置错误,kingbasecluster服务在启动过程中将因为内核参数配置错误导致启动 ...
- Games101:作业6
说明 本次作业主要实现对上一次作业代码的重构以及使用BVH加速求交的交点判断和递归调用 代码框架的修改 有影响的改动就是框架中定义了两个结构体一个是光线ray,一个是交点Intersection 交点 ...