如何优化大场景实时渲染?HMS Core 3D Engine这么做

如何,优化,场景,实时,渲染,hms,core,3d,engine,这么 · 浏览次数 : 441

小编点评

**3D Engine 如何应对大规模场景实时渲染挑战?** 3D Engine通过“Hi-Mesh”层级网格渲染加速技术,解决场景规模的挑战: * **多维度、多层级结构优化:**通过多维分区、视角空间分层、内容特征分组和拓扑连接分片等技术,降低场景数据量,降低遍历耗时。 * **隐式编码树:**使用一种常量级性能的构造和遍历方法,提升 GPU 性能。 * **GPU驱动技术:**利用 GPU 的并行能力和可编程性,实现渲染性能的提升。 * **低代码的可视化开发:**提供开发人员便捷高效地创建 3D 内容的选项。 通过这些技术,3D Engine 可有效应对大规模场景的实时渲染挑战,并为开发者提供无缝的 3D 开发体验。

正文

在先前举办的华为开发者大会2022(HDC)上,华为通过3D数字溪村展示了自有3D引擎“HMS Core 3D Engine”(以下简称3D Engine)的强大能力。作为一款高性能、高画质、高扩展性的3D引擎,3D Engine不仅能通过实时光追、水体渲染、体积云雾、多维GPU粒子系统等技术还原真实世界的物理表现,对于大规模数字世界的实时渲染,3D Engine同样也能为开发者提供有力的技术支持。

大规模数字世界的需求与挑战

今天,如何更好地实现大场景下的实时渲染,已经成为行业的热门话题,相关技术在众多领域都有着广阔的应用前景。我们可以明显感受到,从3D游戏到虚拟现实,从三维GIS到数字城市,涉及场景的规模都在呈指数级增长,部分游戏中的世界地图甚至没有边界。可以说,大规模场景的实时交互渲染能力正在成为构筑数字世界的基础设施

然而,这并非易事。

场景规模的扩大带来的结果就是海量的内容和数据。一个城市涉及的物件数差不多是百万级,面片数更是可能达到亿级,而硬件配置却始终是相对有限的,即使再高级的硬件配置也有力不从心的时候。

数据和硬件之间的矛盾,对3D引擎的大场景实时渲染能力提出了挑战:

• 由于物件、网格、材质等内容数量太多,受限于显存容量,传统的全场景预先加载方式无法实现;

• 在传统3D绘制模式下,GPU的算力不足以支撑万级规模物件数和亿级规模面片的实时渲染;

• 如果使用流式加载场景的方式,可以实现一边渲染一边加载数据,但需要预处理场景数据,诸如分区分层、模型合并、材质合并、纹理烘焙等预处理往往极为耗时,几万个物件就需要小时级的等待,且仅支持场景中静止不动的物件。

譬如上图这个服务器大楼,三角面片数达到了千万级,并且有将近万件的模型。为了实现实时渲染,通常需要通过HLOD的方式将整个场景进行Spatial-Coherent的层次重组。

类似于右图红圈所示,以不同半径为一个空间节点,将圈圈内的模型进行合并处理,从而降低场景物件的遍历数量,提高绘制性能。而这个预处理操作本身就需要耗费近一个小时,大大增加了调试和开发成本。

那么,HMS Core 3D Engine将如何应对挑战,构建大规模场景的实时渲染能力?

Hi-Mesh层级网格渲染加速技术

为了解决这三个“放不下”、“算不了”、“等不起”的问题,华为2012菲尔兹实验室基于HMS Core 3D Engine自研了“Hi-Mesh”层级网格渲染加速技术,针对场景中的资产进行多维度、多层级的结构优化,确保场景结构在生成、遍历、处理过程中的高效。譬如针对一个大规模场景,可将其数字内容进行多维分区:

  1. 按空间结构分区

3D场景中利用物件原生隐含的空间属性,进行快速位置编码和索引,大幅降低传统树形结构的线性遍历耗时;

  1. 按视角空间分层

利用视角的局限性,对场景中的物件进行不同细节层次的区分或合并处理,从而降低场景的数据量;

  1. 按内容特征分组

利用场景物件的特征,如按网格、材质的同源性进行分组,从而使用特定优化的绘制指令来强化它们的绘制效率;

  1. 按拓扑连接分片

将模型网格进行更精细粒度的分片,实现高效率的剔除和遮挡操作,优化实时渲染的性能。

Hi-Mesh架构图

基于将场景化整为散的原则,以高效率的空间/视角结构来实现多层级的数据优化,并以GPU驱动的方式,最终实现百万级物件、亿级片面的数字世界的实时渲染。

一千个物件实时动态更新

为了实现上述的操作,3D Engine使用了一种隐式编码树的空间层次结构——“Hi-Mesh Tree”。不同于传统基于链表形式的空间结点树的方式,3D Engine通过一种常量级性能的构造和遍历方法,相较现有的商业引擎,大规模场景的实时渲染性能可提升15%~120%。此外,还可以大幅提升三维空间场景组织结构的生成效率,甚至达到毫秒级,大大降低了工作流的时间成本。

数据来源: 华为内部实验室测试结果

同时,3D Engine还使用了基于GPU驱动的Cluster Rendering (GDCR)绘制技术

GPU驱动在业界已有一些探索和应用,其理想目标是用一个Draw Call(DC)来绘制整个场景,以充分发挥GPU的并行流水线能力,实现渲染性能的提高。下图是Ubisoft 在Siggraph 15上提出的GPU驱动管线的架构图,其核心思想就是将原本基于CPU的可视性检测处理迁徙到GPU上,利用GPU的并行和可编程能力,提供高并发、不同粒度的可视性检测能力,从而大幅提高渲染性能。

3D Engine为了更充分的实现GPU驱动的效率,对GPU驱动的管线节点、数据传输、图形资产进行深度优化和耦合,将场景下的所有3D物件在GPU上进行各个维度(包围盒、实例、片区、三角面)的可视性剔除,配合多层的重组(材质、顶点),从而实现以最少量的绘制指令来实现场景的光栅化和着色,同等规模场景下相比传统模式的渲染性能实现了翻倍。

同等规模场景下渲染性能对比

可以预见,未来的数字世界无论是元宇宙、数字孪生、还是开放大世界,趋于庞大的丰富多彩场景都将会是不可或缺的组成部分。在Hi-Mesh技术的加持下,3D Engine得以通过高效的空间层级结构和GPU友好的绘制管线,大幅提高大规模数字场景下的实时渲染能力,使场景中的3D内容“尽情放”、“更快看”、“少等待”,帮助开发者大大提升生产力。

关于HMS Core 3D Engine

3D Engine是HMS Core面向行业伙伴推出的重要图形能力,不仅提供高性能、高画质、高扩展性的实时3D引擎,配合低代码的可视化开发,能够帮助开发者便捷高效地创造出高品质的3D内容和体验。如需进一步了解更多信息,请访问: developer.huawei.com/consumer/cn/hms/3d-engine/?ha_source=hms1

了解更多详情>>

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

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

与如何优化大场景实时渲染?HMS Core 3D Engine这么做相似的内容:

如何优化大场景实时渲染?HMS Core 3D Engine这么做

在先前举办的华为开发者大会2022(HDC)上,华为通过3D数字溪村展示了自有3D引擎“HMS Core 3D Engine”(以下简称3D Engine)的强大能力。作为一款高性能、高画质、高扩展性的3D引擎,3D Engine不仅能通过实时光追、水体渲染、体积云雾、多维GPU粒子系统等技术还原真

[转帖]Redis 最佳实践(上)

https://my.oschina.net/jiagoushi/blog/5601975 引言 尽管 redis 是一款非常优秀的 NoSQL 数据库,但更重要的是,作为使用者我们应该学会在不同的场景中如何更好的使用它,更大的发挥它的价值。主要可以从这四个方面进行优化:Redis 键值设计、批处理

C#软件架构设计原则

软件架构设计原则 学习设计原则是学习设计模式的基础。在实际的开发过程中,并不是一定要求所有的代码都遵循设计原则,而是要综合考虑人力、成本、时间、质量,不刻意追求完美,要在适当的场景遵循设计原则。这体现的是一种平衡取舍,可以帮助我们设计出更加优雅的代码结构。 分别用一句话归纳总结软件设计七大原则,如下

活字格性能优化技巧(2)-如何在大规模数据量的场景下提升数据访问效率

本文由葡萄城技术团队于博客园原创并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 在上节内容中我们介绍了如何利用数据库主键提升访问性能,本节内容我们继续为大家介绍如何在大规模数据量的场景下提升数据访问效率。 在开始之前先做个小小的实验: 1. 准备一张

「硬核」实操如何拥有一个自己的数字人模型

本文大致分为三个章节: 第一部分会介绍常用技术以及简介,以及自己用到构建一个自己虚拟数字人用到的3D引擎和三维软件 第二部分会详细描述生成细节,通过照片建模,创建模型,添加细节,添加表情,优化效果,接入场景,最终效果 第三部分总结本篇内容

如何用ReadWriteLock实现一个通用的缓存中心?

摘要:在并发场景中,Java SDK中提供了ReadWriteLock来满足读多写少的场景。 本文分享自华为云社区《【高并发】基于ReadWriteLock开了个一款高性能缓存》,作者:冰 河。 写在前面 在实际工作中,有一种非常普遍的并发场景:那就是读多写少的场景。在这种场景下,为了优化程序的性能

从原始边列表到邻接矩阵Python实现图数据处理的完整指南

本文介绍了如何使用Python将原始边列表转换为邻接矩阵,并进行了一系列的扩展和优化,以满足不同场景下的需求。

“事后达尔文”—— 游戏业务效果评估方法实践

本文介绍了互联网业务数据效果评估的几种常见问题及方法,并基于分层抽样的逻辑优化出一套可应用于解决用户不均匀的“事后达尔文"分析法,可适用于无法ab测试或人群不均匀的ab测试等场景下的效果评估中,本文会基于实际应用案例,来给大家仔细阐述相关方法模型的思考过程,实现原理,应用结果,希望能够帮助大家,如果能对大家在各自领域中的业务效果评估有所助益的话,那就更棒了!

PPT 商务PPT 如何展示你的产品

PPT 商务PPT 如何展示你的产品 如何优雅的展示产品 如何展示互联网产品 直接产品截图,比较生硬,简单粗暴 使用场景+样机 放一个电脑或手机的外壳 如何展示产品 如何展示现实中的产品 多角度剪裁 细节放大 大图打底 线段连接

.NET性能优化-使用RecyclableMemoryStream替代MemoryStream

提到MemoryStream大家可能都不陌生,在编写代码中或多或少有使用过;比如Json序列化反序列化、导出PDF/Excel/Word、进行图片或者文字处理等场景。但是如果使用它高频、大数据量处理这些数据,就存在一些性能陷阱。 今天给大家带来的这个优化技巧其实就是池化MemoryStream的版本