移动在线实时绘制技术研究综述

2022-07-04 01:53刘畅霍宇驰张严辞张乾郑家祥唐睿余耿王锐贾金原
中国图象图形学报 2022年6期
关键词:引擎绘制图形

刘畅,霍宇驰,张严辞,张乾,郑家祥,唐睿,余耿,王锐*,贾金原

1. 南昌航空大学信息工程学院,南昌 330063; 2. 同济大学软件学院,上海 200082;3. 浙江大学计算机科学与技术学院,杭州 310058; 4. 四川大学计算机学院,成都 610065;5. 上海渲图科技有限公司,上海 201806; 6. 杭州群核信息技术有限公司,杭州 310012

0 引 言

5G时代,通过移动互联网进行可视化呈现的在线虚拟城市、在线虚拟家居、在线虚拟旅游以及在线虚拟教学等移动互联网应用已转化为以3维虚拟场景为主要交互对象并具有高度沉浸感的新型在线可视化应用,并在移动设备的辅助下消除了应用服务的距离和时间的限制。随着移动互联网技术和3维可视化技术的不断发展,以移动在线实时绘制技术为核心的3维可视化应用借助移动互联网在各类平台上得到广泛的传播。

移动在线实时绘制技术直接面向移动端设备,对移动端设备的渲染研究十分重要。近年来,工业界对移动端绘制硬件构架的设计不断优化,这使得移动端硬件设备对渲染算法的加速水平不断提升,进而导致了渲染效果的突飞猛进,之前遥不可及的光线跟踪算法也逐步从电脑(personal computer, PC)端转向了移动端。因此,本文第1节对移动端的硬件发展和渲染算法进行了重点阐述。

对于移动互联网来说,移动设备并不是承载信息内容的唯一载体。在元宇宙产业蓬勃发展的今天,各类虚拟现实、增强现实、混合现实和扩展现实等领域的可穿戴设备也借助移动互联网不断出现在用户面前。因此,跨平台、轻量化的兼容性运行平台才是当前移动在线实时渲染技术发展的基础。作为一个用户较广的轻量级的跨平台浏览环境,Web端伴随着Web3D技术的发展逐步成为了这样一个平台。所以,本文第2节对Web端的核心渲染机制、关键渲染技术以及主流渲染工具进行了一定的说明。

虽然移动端和Web端渲染水平逐年提升,但是相对于桌面级终端的渲染能力来说,同属于瘦客户端。因此,如何借助像云服务器这样具有强大渲染能力的硬件设备辅助各类瘦客户端的高质量绘制成为移动在线实时绘制技术的未来。云渲染就是这样一种辅助式绘制技术,它将渲染任务分配至云服务器,然后通过视频串流回本地客户端,使得弱客户端能够获得高质量的渲染效果,当前主要运用于云游戏、在线扩展现实(extended reality, XR)应用等领域。因而,本文在第3节对云端在线绘制的基础构架、服务核心以及优化重点进行了详细的描述。

多端协同在线绘制技术是一种新型的移动在线实时绘制系统,它避免了云渲染系统中客户端渲染能力的浪费,也弥补了纯端渲染系统中客户端渲染能力的不足。作为一款倍受研究者青睐的全新实时渲染技术,本文在第4节对端/云协同和端/边/云协同机制进行了深入的探讨。

综上,本文从移动端渲染、Web端在线渲染、云端在线渲染和多端协同渲染4方面入手对移动在线实时绘制技术进行深入剖析,力求为移动互联网下的新型3维可视化应用提供技术支撑。

1 移动端渲染

1.1 移动端渲染硬件技术

移动端主流图形处理器(graphics processing unit, GPU)近年得到了较快的发展(如表1所示)。2020年5月,ARM(Acorn RISC Machine)公司发布的基于第2代Valhall架构的Mali-G78 的 GPU已有24个计算核心,支持异步时钟域、自适应可扩展纹理压缩(adaptive scalable texture compression,ASTC)和ARM帧缓存压缩(ARM frame buffer compressionm, AFBC)等新型技术,降低功耗的同时,还进一步提升了芯片性能。

表1 近期移动端GPU芯片表Table 1 Table of rectent mobile GPU chips

苹果公司于2021年发布的搭载在iPhone 13系列上的A15仿生芯片(如图1所示),其GPU采用了全新的架构设计,从硬件层面提供了有损压缩、稀疏深度和模板、随机和填充等新特性。高通公司的骁龙888芯片搭载的Adreno 660 GPU,在能效提高20%的基础上,渲染图形的速度比上一代提高了35%(如图2所示)。

图1 ARM架构GPU Fig.1 GPU with ARM architecture

图2 高通骁龙888芯片Fig.2 Snapdragon 888 chip

与桌面端GPU相比,移动端GPU在电源功率、芯片面积、布线以及封装有一定的限制,因此该GPU的硬件架构较前者区别巨大。通常桌面端的中央处理器(central processing unit, CPU)和GPU各自独立存在,而移动端则将CPU和GPU集成在一块SOC(system-on-a-chip)芯片上,CPU和GPU共享内存以及带宽等。因此,桌面端和移动端的GPU在构架设计上有很大的不同。

相对于桌面端GPU采用围绕大量专用带宽而设计的即时模式渲染器(immediate mode renderers, IMR)架构而言,移动端GPU采用的是基于块的渲染(tile-based rendering, TBR)架构。与IMR相比,大量颜色和深度缓冲的来回读写,被隔离在片内的高速缓存中,每一块的帧缓冲在最终渲染完成后才会被写回主存,在最小化带宽消耗的同时,还控制了芯片的功耗和发热。

为了进一步提高渲染效率,移动端GPU采用了诸多新颖的设计。例如,为了不将计算资源浪费在对最终渲染画面没有贡献的片元上,移动端GPU会进一步延迟片元着色,以便在像素级别上实现Over-Draw的消除。每一块的图元光栅化成片元后,会等待所有片元全部经过深度测试后才进行片元着色,以确保只有离视点最近的片元才会被着色。

同时,近年来许多研究者对移动端GPU发展进行了研究(Surana 等,2020;Ain等2018;Singh和Jain,2014),并尝试对原有的移动端渲染硬件进行改进,探索更优的架构设计(Lee 等,2012;Gubran和Aamodt,2019)。

1.2 移动端渲染算法研究

由于设备功耗级别不同,移动端GPU的渲染能力通常不如桌面端GPU,进而导致移动端渲染效果较后者略低。许多研究者从渲染算法和渲染优化出发来提升移动端GPU的渲染效果,以弥补其硬件渲染能力的先天不足(如表2所示)。

表2 移动端渲染算法表Table 2 Table of rendering algorithms on mobile

1.2.1 移动端的光线跟踪算法

从2018年NVIDIA推出GPU的实时光线跟踪(ray tracing texel extreme,RTX)技术后,桌面端的实时渲染画质得到了极大提高。相应地,移动端也在积极尝试引入实时光线跟踪技术。

在算法方面,Viitanen等人(2017)提出了一种轻量化的MergeTree结构以加速HLBVH(hierarchical linear bounding volume hierarchy)树,可用于在移动端上实时计算光线跟踪。为面向多场景进行优化,Lee等人(2016)提出了一种自适应的多速率射线采样算法。为了适应移动端低带宽的特性,Hwang等人(2015)提出了一种混合fix和float格式的优化方法,用于减少移动端光追的带宽。Lee等人(2015)提出了一种带宽和能源效率高的混合光线跟踪和光栅化架构。为了高效利用移动端的高速缓存,Shin等人(2015)提出了一种有效的光线调度算法和非块缓存架构来隐藏主内存访问延迟,以实现移动设备上的实时光线跟踪。

在硬件以及软件开发工具包(software development kit, SDK)方面,移动设备芯片厂商Imagination公司(IMG)将光线跟踪分为6个级别,并早在2015年就展示了实时光线跟踪的PowerVR GR6500 GPU。华为在其2021年的开发者大会上,推出了其光线跟踪模块“凤凰引擎”,通过多层BVH加速结构以及多叉树遍历算法,构筑了高效、无偏光线跟踪算法底座,并基于华为硬件平台的自研混合渲染管线,实现了实时光线跟踪技术在线移动应用。2021年10月,三星发布了基于AMD(advanced micro devices)的RNDA2架构的Exynos 2200 GPU,目前能够支持桌面和移动电脑的光线跟踪。这项技术预计将会引入三星的新一代智能手机,创造出更真实的光照效果。

1.2.2 移动端渲染优化

相比于桌面端,移动端的渲染硬件存在特殊的性能瓶颈。Martin等人(2013)对其瓶颈的主要来源进行了分析,并给出了移动端渲染硬件需要解决的核心问题:散热。为了移动设备的轻薄性,往往需要将大量硬件集成到轻薄移动设备专用的主板上,高密度的硬件导致散热成为了难题。其次,控制设备产生的热量,以及提高移动设备的续航,这使得渲染硬件的功率也受到了极大的限制。

为了解决这些问题,开发者往往需要去估计一个渲染管线的功耗,或者在给定的电量预算下去寻找一个合适的渲染管线配置。针对功耗估计的问题,Sun等人(2014)和Yun等人(2018)给出了通过估计纹理采样数、浮点运算吞吐量等方式来估计功耗。而Wang 等人(2016)提出了一种在给定渲染预算下和最低能量消耗的前提下,获取最优图形质量的方法。

为了缓解移动平台带宽瓶颈带来的影响,许多研究者提出了一系列如何高效利用带宽的方法。Martin等人(2015)提出了在移动端优化高性能的物理渲染(physically based rendering, PBR)方案,该方案使用ARM架构特性进行高效的帧缓存读取,并通过每个像素独立的局部存储单元高效利用带宽。Olsson等人(2015)针对高度占用带宽的光源渲染算法进行研究,提出了利用移动端特有的架构“TBR”来做大量光源渲染的针对性的解决方案。

由于移动端的便携性,可以很轻松地与虚拟现实(virtual reality, VR)眼镜结合,为用户提供沉浸式的VR体验。近年来,如何给出更优质的移动VR体验受到广大研究者的关注。Lee等人(2017)提出了一种全新函数用于加速在移动端VR中的桶形失真校正计算。Nah等人(2016)提出了一种基于tile的移动架构的遍历顺序“Z2遍历顺序”,可以最大化空间局部性的tile遍历以便在VR应用中提高GPU缓存效率。

1.3 移动端渲染工具

1.3.1 移动端图形API

在图形应用程序编程接口(application programming interface,API)方面,OpenGL ES作为目前应用最广的跨平台图形API,支持Android、iOS等多个平台,但OpenGL ES在2015年8月更新至版本3.2后至今没有发布新的版本。作为OpenGL的替代者Vulkan将其目标聚集于“高效”和“跨平台”,旨在提供更高的性能和更均衡的CPU/GPU负载。得益于其多线程渲染管线和多线程指令流的实现,Vulkan在移动端有着优秀的性能表现。目前,Vulkan在Windows、Linux、Android等各大平台都有相关应用实现;以Unity和Unreal为代表的主流商业游戏引擎也逐步加强对它的支持。Metal是苹果公司发布的兼顾图形和通用计算的API,它是苹果公司专门为苹果产品定制,因此在苹果产品上有优异的表现。

1.3.2 游戏引擎中的移动端渲染

虚幻引擎4(UE4)的移动端渲染器独立于桌面端,拥有专门针对移动端优化的功能。然而,UE4目前没有为移动端提供特定优化的渲染管线,对于较为复杂的图形功能没有提供较好的支持。在材质方面,UE4移动端还停留在传统低复杂度的材质参数设置和材质着色计算上,不支持曲面细分、次表面散射等图形技术,也不能较好地模拟毛发、布料和眼睛等高复杂度物体的光照着色。阴影、雾等高质量渲染效果,也只提供如级联阴影映射(cascaded shadow maps,CSM) (Dimitrov, 2007)和大气雾等工业界传统的解决方案。在2021年5月份,Epic官方发布了UE5预览版,在预览版中官方也未添加移动端模块。

相对于UE4对移动端支持不足,Unity对移动端则更加友好。Unity在2018.1 beta版本中就开始引入了可编程渲染管线(scriptable render pipeline, SRP)的概念。通过编写脚本,用户可以在渲染管线层面控制场景的剔除、渲染方式和后期处理。在2021年初,Unity为SRP添加了Enlighten实时全局光照系统,增加了间接光照计算部分,大大提升了画面表现力。之后,Unity又在2019.1版本中引入通用渲染管线(universal render pipeline, URP)的概念。通过调整光照计算和阴影计算的方式,将所有的光照都放到一次渲染管线流程中,降低光照计算和阴影计算的能耗负担,为移动端提供更好的性能优化。近年来,Unity更是与ARM深度合作,让其用户内容在各类移动设备上的能耗和带宽需求降至更低。

2 Web端在线绘制

在移动互联网时代,Web端是一个用户较广的轻量级的跨平台浏览环境。借助Web端进行3维呈现的在线虚拟城市、在线虚拟家居、在线虚拟旅游以及在线虚拟教学等Web3D应用打破了传统Web应用以文字、声音、图像、视频以及2维动画为主要传播媒体的惯例,进而转为以3维虚拟场景为主要交互对象并具有高度沉浸感的新型Web应用。随着各类Web3D应用的兴起并在多方面逐步影响人们的生活,用户对这些应用的体验需求也水涨船高。本节从Web3D渲染机制、Web端渲染的关键技术和Web端渲染工具3个方面出发,深度阐述了Web端在线实时绘制的相关研究。

2.1 Web3D渲染机制

随着软硬件平台的更新换代,一套免插件、高性能Web3D渲染机制不但是Web浏览器厂商的期许,更是广大Web3D应用开发者的期盼。21世纪初,JavaScript作为Web浏览器中默认的脚本语言,以其良好的兼容性和强大的可扩展性深受广大Web3D编程者的青睐。随着JavaScript虚拟机的巨大性能提升使得在同一个画框内3D空间中数以千计的顶点得以快速且准确的控制(Evans等,2014),研发者对于在Web端实现免插件的高性能3D渲染技术充满希望,而通过Web浏览器借助JavaScript直接访问GPU的方法标准化需求已非常清晰。

在上述背景下,Khronos组与主要的浏览器供应商Apple(Safari)、Google(Chrome)、Microsoft(Edge)和Mozilla(Firefox)合作,联合推出了一款Web端专属图形API的首个版本“WebGL 1.0”。WebGL 1.0的内核来自于著名的移动端图形API“OpenGL ES 2.0”,并以JavaScript作为开发语言,可以用于在大部分主流的Web浏览器中展示2维(two-dimensional, 2D)或3D图形。该图形API不仅可以使GPU加速图形处理,而且允许其内部函数借助JavaScript嵌入Web端的超文本标记语言(HTML)中,实现3D应用与Web端免插件无缝对接。2017年,Khronos组推出了WebGL升级版本“WebGL 2.0”,开始支持包括二次幂纹理、双精度浮点和3维纹理等在内的高级图形渲染功能(Frigo等,2018),并受到Firefox,Chrome和Opera等主流浏览器的广泛支持。一直沿用至今的WebGL已被广大的Web3D应用开发者所接受,它的运行机制被认为是目前Web3D应用的主流渲染机制,并为时下种类繁多的Web端渲染工具提供了有力的技术支撑。

2.2 Web3D绘制工具

2.2.1 Web3D引擎

随着Web3D技术的发展,国内外出现了多款优秀的Web3D引擎(如表3所示),其中国外以Three.js、Babylon.js和PlayCanvas较为突出。

表3 Web3D引擎Table 3 Web3D engine

Three.js由Ricardo Cabello在2010年首次发布,是基于JavaScript和WebGL搭建的3D图形渲染库,可以进行高效、免插件的网页端3D应用的研发。不少WebVR渲染系统采用了Three.js引擎,如Marion和Jomier(2012)提出的网页可视化系统;Jacinto等人(2012)的实时医疗图像的可视化分割系统,以及上述Web3D协同式光照渲染系统Cloud Baking(Liu等,2017,2018a)。

Babylon.js是Microsoft公司于2013年发布的Web3D游戏引擎,底层完全基于WebGL图形API。整套引擎通过JavaScript语言进行编写,同时还支持TypeScript语言,并把工作重心放在Web3D游戏开发上。

PlayCanvas是Will Eastcott等人开发的一个开源Web3D引擎,包括3D 游戏引擎、交互式3D应用程序引擎以及专有的云托管创建平台,允许通过基于浏览器的界面从多台计算机同时编辑,2017年被Snap Inc公司收购。与Three.js引擎相比,PlayCanvas开发资源更为丰富、开发效率更为突出且具有专业的云托管平台(如图3所示)。

图3 可编辑PBR材质(PlayCanvas)Fig.3 Editable PBR material(PlayCanvas)

国内的Web3D引擎以Oasis、Egret、LayaAir和Cocos3D最具代表性。这些引擎以WebGL或WebGPU为底层图形API,结合各类脚本语言进行3D图形渲染库的搭建,形成具有各自特点的Web3D开发工具。

Oasis Engine是由蚂蚁集团开发的Web3D 互动图形引擎。以WebGL为底层图形API,结合TypeScript语言进行开发。主要针对移动端,并且支持前端开发。

白鹭科技在2014年2月创立了白鹭引擎(Egret Engine),引擎使用TypeScript进行编写,其底层API仍是WebGL。在渲染方面,Egret使用了Canvas渲染技术,保证了其作品在浏览器上的兼容性。并且额外提供了CPU渲染模式和WebGL渲染模式,支持 WebAssembly技术,其效果图如图4所示。

图4 体积光照(Egret Engine)Fig.4 Volumetric lighting(Egret Engine)

LayaAir是Layabox于2016年发布的一款基于WebGL的开源引擎,支持ActionScript3、JavaScript、TypeScript这3种开发语言。该引擎同时支持WebGL与Canvas渲染,且优先使用WebGL渲染,在优秀浏览器环境下运行性能媲美Unity3D等桌面级游戏引擎。

Cocos3D 由雅基软件公司于2016年开发,以OpenGL为底层API,其核心采用 C++编写,支持使用C++、Lua 或 JavaScript 进行开发。基于 OpenGL ES 2.0 和 Metal 进行图形渲染。Cocos Creator 3D将数据驱动和组件化作为其游戏开发的核心方式。

2.2.2 游戏引擎的Web3D渲染

Unity3D是一个跨平台的游戏引擎,具有先进的3D图形功能。与上述3D渲染引擎相比,Unity3D体现出渲染能力强、可扩展性高、程序开发复杂度低及跨平台性灵活等特点,它非常适合于打造多平台下高质量的实时视频游戏。在Unity3D中创建出的所有3D应用,可以导出相应的Web格式,并通过Unity Web Player插件在主流的浏览器中进行演示。因此本节仍然把其列为Web3D引擎的一员,尽管这只是它的小部分功能。Unity3D支持的主要开发语言有JavaScript和C#,其场景编辑器支持3D场景编辑的同时还可以将相应的脚本语言代码直接嵌入编辑对象中(Xie,2012)。

UE5是Epic于2020年公布的第5代游戏引擎,具备照片级逼真的渲染功能、动态物理与效果、栩栩如生的动画、健壮的数据转换接口等。在第4代引擎UE4的基础上新增了高级别几何信息的虚拟微多边形几何系统“Nanite”,并很好地优化了场景中全局动态的光照变化的实时性。从UE4开始,该引擎对Web端采用容器的技术,此技术是一种支持大规模云应用部署的技术,具有轻量、可移植的特点,为Web3D应用提供了一致的运行环境。

2.2.3 Web3D绘制工具的渲染表现

Web3D在线渲染效果取决于承载Web3D应用的硬件性能和支撑Web3D图形API。如2.1节所述,当前的主流Web3D应用的图形API是WebGL 2.0,该API派生自移动端图形API——OpenGL ES 3.0并承载其大部分的渲染表现。

虽然Web3D在线渲染无法实现光线跟踪这类高耗能的实时全局光照渲染算法,但其渲染能力和绘制质量仍不可小觑。其中,高性能的物理渲染(physically based rendering, PBR)是提升渲染质量(Robart等,1999)的有效手段,尤其在制作全局光照渲染效果时,表现显著。

国外的Web3D引擎Babylon.js和PlayCanvas就把PBR材质的可视化编辑作为其重要渲染任务之一。国内的Web3D引擎Oasis在其PBR工作流中设置环境光的漫反射和镜面反射来达到基于图像的照明效果(image based lighting,IBL)(Debevec,2006)。

另外,以软阴影效果为主的高质量光照遮挡技术也是体现Web3D渲染质量的一大看点,Babylon.js就在其最新的4.2版本中支持基于环境光照遮挡的透明物体软阴影渲染(如图5所示),而PlayCanvas则支持多种软阴影算法,并能在引擎运行时生成面向数十个静态灯光的光照贴图。

图5 透明物体软阴影(Babylon.js)Fig.5 Soft shadows of transparent objects(Babylon.js)

除材质和光影特效之外,GPU动画加速、GPU粒子系统加速、伽玛矫正、纹理混合和线性图形管道渲染等技术都在基于WebGL2.0的新一代Web3D应用或Web3D引擎中得以体现。

2.3 Web3D渲染的轻量化关键技术

目前,随着Web3D应用逐步被人们接受,Web3D数据内容(尤其是Web3D场景内容)复杂度和规模与日俱增,典型的应用包括:在线虚拟校园、在线虚拟博物馆和在线虚拟城市等。虽然网络带宽与网速也在不断提升,但远远跟不上Web3D数据的扩张速度。因此,在线大规模Web3D场景即时加载成为Web3D应用的瓶颈问题,受到广大研究者的关注。当前解决这一问题的关键技术分为两类:1)Web3D场景的轻量化技术;2)渐进式对等传输技术。

2.3.1 Web3D场景的轻量化技术

虽然计算机图形学方法中早对3D场景的轻量化处理有所涉及,如:细节层次技术(level of detail, LOD)(李公立和黄毓瑜,2004)、渐进式网格技术(progressive meshes, PM) (Hoppe,1996;Ma等,2016)等。但这些技术并不完全适用于在线Web3D应用中的虚拟场景。离散型LOD模型只能使得网络负载更加沉重;渐进式网格会引起网页端在线解析时间过长且不适用于所有模型。因此,如何同时使得场景的数据量更小、网络传输速度更快以及到达网页端的后处理(在线解析和渲染)时间更少才是Web3D场景轻量化的最终目标(涉及技术如表4所示)。

表4 3维模型轻量化处理技术表Table 4 Table of 3D model lightweight technology

近来研究者为靠近上述目标提出了新的轻量化方法:基于单元重用的模型轻量化方法(Shikhare 等,2001;Cai 等,2009)、基于几何最小化的3D数据压缩算法及基于并行快速匹配搜索的解压缩算法(Siddeq和Rodrigues,2016)、基于贝叶斯学习算法及傅里叶变换的压缩/重建方案(Lalos等,2017)就是其中的代表。这些方法使得Web3D场景在几乎无损轻量化的同时未增加网络负载,且对模型的通用性更佳。

另外,更有学者将新型方法与传统方法结合,提出了轻量化渐进式纹理(Englert等,2015)、轻量化渐进式网格(Wen等,2016)和建筑模型轻量化语义表达(Liu等,2016)等混合改进型轻量化方法,为Web3D场景的轻量化处理再添新的思路(如图6所示)。

图6 在线大型BIM场景Web3D绘制(Liu等,2016)Fig.6 Online Web3D rendering of large-scale BIM scenes(Liu et al., 2016)

2.3.2 渐进式对等网络传输

针对大规模Web3D场景的网络传输,传统的解决方法仍然集中在渐进式传输机制上。该机制源于计算机图形学的渐进式加载技术,通过分步增量式的加载大规模Web3D场景模型来解决模型数据传输的网络负载过重问题。为了提升增量式加载的准确性,双层扇形兴趣域(double-layer sector of interests, DAOI)(Wen 等,2016)、扩展多层兴趣区(scalable multi-layer sector AOI, SMLAOI)(贾金原 等,2014;Jia等,2016)和路径兴趣域(path of interests,POI)(Wang等,2015a)等加载增量预测算法相继被提出。

研究者们把渐进式传输机制常与对等传输网络(peer-to-peer networking,P2P)环境有机结合,提出了兼具增量式传输和对等传输双重优势的渐进式对等网络传输机制(Yahyavi和Kemme,2013;Buyukkaya 等,2015)。在此基础上,王伟等人(2010)提出了面向对等网络的新型渐进式场景更新策略;Hu等人(2008,2010)自主研发了仿真对等传输平台“FLoD”;Jia等人(2014)在FLoD基础上进一步提出了可扩展多层兴趣区域的数据加载框架,并把FLoD升级为更智能的仿真对等传输平台“iFLoD”;Jia等人(2014)提出了基于路径兴趣域数据加载框架,将iFLoD升级为兴趣域相关的仿真对等传输平台“interest-iFLoD”。

上述研究大多是针对P2P 网络架构场景流式传输方法研究(如表5所示),很少关注用户本身和场景数据,随着场景规模扩大和用户访问量增大,多用户协同访问及资源搜索、节点定位等处理变得复杂,这使得基于P2P的Web3D应用中的场景数据传输和交互实时性面临严峻考验。因此,为Web3D场景的对等传输提供构建合理、布署方便以及访问高效的技术框架是研究者们亟待解决的下一个研究热点。

表5 渐进式传输与对等传输相关技术Table 5 Technologies of progressive transmission and peer-to-peer transmission

3 云端在线绘制

云端在线渲染的本质是远程渲染,其出发点是希望把繁重的渲染任务迀移至远程服务器而使得瘦客户端也能进行高质量渲染效果展示(Maclntyre和Smith,2018)。在云计算的协助下,远程渲染系统中的渲染任务被迁移至云服务器中,并逐步形成云端在线绘制技术(Hou等,2017)。近年来,随着5G通信和互联网技术的发展,以追求高质量渲染和快交互响应为目标的移动云游戏(Hou 等,2021)成为云渲染技术的主要应用领域(Liu 等,2018a)。从云端在线绘制的目标入手,重点讨论云端在线绘制系统的构架与服务、优化以及核心应用“云游戏”。

3.1 云绘制系统的构架与服务

在实际应用中,把所有绘制任务完全放在客户端,会受到客户端的能耗、算力和兼容性等诸多因素的影响。因此,工业界通常借助远程云服务器进行高质量的图形绘制,再将绘制结果传输到客户端设备上进行图形显示,使得轻量级的客户端也能支持高质量的绘制应用。而这个过程就是云绘制过程,完成此过程的系统称为“云绘制系统”,其框架如图7所示。

图7 云绘制架构Fig.7 Cloud rendering architecture

该框架以端云分离绘制技术为基础,云侧的绘制和端侧的绘制是分开进行的。它的端侧只负责渲染任务的申请和渲染结果的显示,完全不承担渲染任务;而服务器端负责所有渲染任务,其渲染结果会通过移动互联网流式化传往移动前端。

作为一种云计算服务,云绘制可以分为3层:基础架构即服务(infrastructure as a service,Laas)层、平台即服务(platform as a service,PaaS)层、软件即服务(software as a service,SaaS)层,分别用于满足云绘制应用在底层硬件、中间平台和高层软件的不同层次需求。其中,PaaS层作为云绘制服务的核心层,主要提供3大功能:1)完成3D可视化应用(包含VR应用)的自动化托管;2)优化用户的计算资源和网络资源的调度;3)实现多媒体数据的多终端稳定流式化传输。在这3大功能中,流式化传输功能是PaaS层的关键功能,可细分为多终端的操作信息获取和传送、绘制画面抓取编码和超低延迟传输以及端侧的解码和显示,是云绘制服务的优化重点。

3.2 云绘制优化

如3.1节所述,云绘制的优化重点集中在串流技术的优化上。串流技术就是对影音等多媒体数据(尤其是视频数据)进行流式化传输的技术总称。虽然串流技术在视频应用中优势明显,但依托此类技术的视频传输依然存在数毫秒到上百毫秒的延迟(Choy等,2012;Tolia等,2006)。由于缓存技术的支持,此类延迟在视频点播应用中可被忽略,然而对强调互动性的视频游戏或增强现实(augmented reality, AR)/VR/XR等应用的用户体验质量却影响巨大(Chen和El-Zarki,2019;Slivar 等,2014)。然而,视频的压缩率与带宽次线性相关的同时,吞吐量需求却依然不断地随着分辨率和帧率的提高而提高,并且图像质量也会因为有损的压缩方式而无法最优化(Sullivan 等,2012)。

另外,在云绘制过程中,移动端从提出渲染请求到接收渲染结果并显示,需要至少一次往返时间,而这些时间是云绘制过程中无法避免的交互延迟时间。交互延迟会导致用户自然以为云绘制应用的交互响应过长,实时性不够,从而在体验(尤其是视觉体验)过程中产生顿挫感。减少交互延迟的影响,提升视觉体验是云绘制优化的另一个重点。McMillan(1997)提出的3D warping是一种将参考图像上的像素映射到任意视点的技术。它广泛用于3D视频处理(Smolic 等,2008)和基于图像的实时渲染中(Fehn,2004;Mori等,2009)。Shi等人(2012)以及Zhu等人(2011)应用3D warping在他们的远程渲染系统中把接收到的渲染图像中的像素全部扭曲到交互延迟后的视点下,从而在视觉上减少了“交互延时”带来的影响。然而,当输入图像中的信息不足以生成新视点时,3D warping会产生孔伪影失真。面对这一问题,很多解决方案相继提出,包括分层深度图像(layered depth images, LDI)(Shade等,1998),splat warp (Mark等,1997),super-visual distortions(Bao和 Gourlay,2004)等。

3.3 云游戏

作为云端在线绘制系统的核心应用,云游戏已经成为一种新的计算机游戏范例,它通过在云服务器上运行视频游戏并将渲染的帧流式传输给用户,不受时间、空间和设备性能的限制(Laghari等,2019)。为了达到用户的体验质量要求,云游戏提供商必须面对3个主要挑战:减少交互延迟、降低云基础架构成本以及降低网络带宽需求。

为此,研究者们提出多种优秀的边缘/云渲染构架或系统(如表6所示):Bhojan等人(2020)提出了CloudyGame构架,该构架要求在不同的游戏实例之间更有效地共享和管理资源,并促使游戏资源流式化任务传往前端以降低初始化成本。Zhang等人(2019b)提出了EdgeGame框架,该构架除将计算密集型渲染工作卸载到了网络边缘外,还在边缘引入了深度强化学习,使其自动地调整视频比特率以适应网络动态变化。Chen等人(2019)提出的T-Gaming游戏框架采用了优先视频编码和自适应实时流媒体技术,可以有效提高用户的体验质量。Cai等人(2018)基于组件的认知能力设计出UBCGaming系统,能够有效平衡系统性能和交互延迟,可以给用户提供更好的游戏体验。Pitkänen等人(2019)设计了一个面向移动设备的VR云游戏系统,在这种端到端的方案中,VR游戏的执行从低功耗的移动设备端被卸载到边缘/云服务器,在边缘/云服务器上根据控制器的方向和通过网络传输的动作来呈现已执行的游戏。

表6 云游戏构架表Table 6 Table of cloud game architecture

4 多端协同在线绘制

多端渲染系统不同于远程渲染系统仅将渲染任务放于远程服务器,而是将渲染任务分摊放于“端服”协同执行(Chen和El-Zarki,2019)。随着云计算和边缘计算的先后提出,该系统也从“端云”协同逐步转向“端边云”协同。

4.1 端/云协同

“端云”渲染系统的协同机制体现在渲染任务的分摊上。该机制充分发挥前端的渲染能力,同时降低后端的渲染负载,使系统达到一定程度的负载均衡。此类渲染系统通常借助渲染方程的拆解,目前已有不少出色的研究成果,通过云端输出图像的视点相关性,可分为:1)视点相关端云渲染系统协同。该机制要求前后端渲染结果的视点一致。此类系统如:Crassin等人(2015)提出的协同式光照渲染系统“Cloud Light”,该系统首次涉及光照渲染任务的“端云”分摊问题;Liu等人(2018a)提出的面向Web3D的协同式光影渲染系统“Cloud Baking”,把简单的直接光照渲染任务放于Web前端,而把复杂的全局光照渲染任务放于云后端,最终的渲染结果将在Web前端合成并输出, 为了优化该系统,该团队构建了基于光图树的预渲染机制(刘畅 等,2019),并提出了基于设备性能的Web3D动态实时光影云渲染系统(刘畅 等,2021),进一步细分了“端/云”两侧各自的渲染任务。视点相关多端协同渲染系统对交互延迟十分敏感,一旦延迟发生必然使得前后端视点不一致,进而导致依靠两端结果融合的输出结果失真。对于延迟造成的输出结果失真,此类系统通常依靠视点矫正技术(Jiang和Gu,2015)予以解决。2)视点无关端云渲染系统协同,该机制不再要求前后端渲染结果的视点一致。此类系统如: Bugeja等人(2019)和邵威等人(2020)提出的协同式光照渲染系统,普遍延续了光照渲染分摊模式,只是云端对全局光照的处理方法有所不同,前者采用基于场景体素化的环境光遮挡算法,而后者采用的是基于稀疏体素化的Lightmap算法。当然,这两种算法都是视点无关的。此类系统对交互延迟有一定容忍度,但云端必不可少地会存储更多的光照信息图像。因此,对于这两种系统的选择应该充分平衡系统的交互性和存储消耗。除此之外,近年来研究者们还探索了实时渲染过程中着色计算与光栅化计算的“端云”协同分摊机制,Mueller等人(2018)提出的着色图集流式传输(shading atlas streaming, SAS)协同渲染系统把绝大部分着色任务分摊到云端,并将可见区域渲染图像汇聚成一个着色图集,而前端只需对可见模型进行光栅化处理并对云端图集进行纹理采样即可;Hladky等人(2019)在此基础上引入了细分曲面着色器,使得云端着色任务可以进行多线程硬件加速,提升了系统效率。总体而言,此类分摊机制的空间占用率高,对云端算力的需求较大,但对弱前端的支持力度明显。如表7所示。

表7 多端协同的渲染系统Table 7 Table of multi-terminals collaborative rendering system

4.2 端/边/云协同

随着边缘计算融入“端云”协同渲染系统中,该系统的渲染方式将发生极大的改变。由于边缘服务器距离前端比云服务器距离前端更近,因此将计算密集型的渲染任务从前端卸载到边缘端,可以减少网络延迟和带宽的消耗(Zhang等,2019a)。对于边缘承载的任务,Chatzopoulos等人(2017)根据边缘端的设备特点给出了两套方案:1)负责计算和渲染任务;2)只负责计算任务,渲染任务留在本地。在此基础上,Zhang等人(2019a)通过测试编码和渲染任务在不同边缘设备上分离的表现来判定边缘设备提高渲染服务质量的标准。Trinelli等人(2019)提出NEAR框架以支持网络功能虚拟化对混合现实(mixed reality, MR)设备的边缘计算加速。另外,Chen等人(2017)使用Gabriel平台实现了7种不同可穿戴设备的认知辅助,并测试了AR应用程序在不同设置和使用不同硬件中的延迟。Bachhuber等人(2019)提出了一个将AR渲染任务卸载到边缘的研究。他们特别关注通过优化编码和解码步骤来降低端到端的延迟,最终实现了83.5 ms的端对端延迟。总体看来,“端边云”渲染系统的任务协同机制目前没有较为统一的标准,视目标的不同“端边云”协同的机制也不同。

综上,“端边云”渲染系统的协同机制比“端云”渲染机制更为灵活,但不可控因素更大,容易对边/云算力造成极大的影响。

4.3 多端协同渲染的调度

多端协同渲染调度问题需要优化服务的操作成本和用户的端到端性能,涉及多个互相冲突的系统目标(如:并发用户数、用户交互延迟、渲染帧率、运行速度以及用户浏览系统的平均响应等因素),这些目标形成离散的、非凸的高次多项式函数,具有一定的耦合性。

Wang等人(2019b)对多端渲染系统的核心业务流程,尤其是多任务渲染流程进行了理论分析,并提出了独特的参数调整策略,即通过优化系统中服务器和渲染机的相关配置参数以提高系统的性能。在此基础上,该团队还提出一套支持服务器集群负载均衡、渲染机静态扩展和并行任务调度的多端协同云渲染系统(Wang 等,2020)。整套系统的多任务渲染器和云渲染系统遵循一套通讯机制,可以很好地满足并发用户的渲染需求。Lai等人(2017)提出一种针对“移动端/云”混合渲染的服务质量感知资源调度策略,该策略将“端/云”两侧的图形处理单元相结合。当网络带宽不稳定时,该技术能够评估当前的网络带宽,并在“端/云”动态配置渲染任务。即使客户端无法访问网络,也仍然可以通过本地计算机上的图像处理单元执行绘制任务。

动态服务调度在云环境中得到了广泛的研究,包括虚拟机合并(Guo 等,2018b)、负载平衡(Le 等,2014)以及网络功能链接(Guo 等,2018a)等。然而,这些研究通常并不针对外部环境的可变性所带来的影响,因此与本项目相比是不够的。最近的研究已开始侧重于通过在线服务放置和迁移来解决微型企业环境中用户动态的关键挑战(Wang 等,2015b)。此类工作并不一定需要预测用户动态行为,但是针对用户移动性则可以用马尔可夫链来近似的假设,Taleb等人(2019)制定了一个用户的马尔可夫决策过程以跟踪用户的最佳用户感知延迟;Wang等人(2019a)根据用户在MEC(mobile edge cloud)网络周围的移动来分配用户的工作负载,以优化随时间推移的操作和迁移成本;Chen等人(2018)在选定的MECs上放置服务实例,并随着时间的推移改进放置决策。

针对多端动态协同渲染系统,其资源的调度通常基于优化算法获取当前某时刻应用情境的最优化配置。然而,渲染系统的实际外部情境下却是复杂多变的,某时刻的最优化配置无法满足系统的动态调度需求。因此,如何设定智能且高效的资源调度配置方案,以适应复杂应用情景的动态变化,成为多端协同渲染调度未来研究中的又一个关键问题。

5 工业界中的在线实时云绘制

在实际应用中,纯端绘制会受到能耗、算力和兼容性等因素的影响。因此,在工业界的生产环境中的一类重要技术发展趋势就是通过远程服务器进行高质量的图形绘制,再将绘制结果传输到端设备上进行图形显示,使得轻量级的客户端也能支持高质量的绘制应用,这就是工业界引入远程渲染的开端。

基于远程服务器算力的实时云绘制技术在实现上没有统一标准,通常由厂商根据具体的落地应用场景进行深度定制。这些定制重点关注:硬件集群的资源调度与管理、串流能力和网络自适应算法的优化、多终端的操作信息获取和传送、渲染画面抓取编码和超低延迟传输以及端侧的解码和显示等多维度外围技术。

因此,本文立足工业界,列举了包括微软、英伟达、Unity、华为和酷家乐在内的国内外一线云绘制服务企业的经典云绘制系统,分析并对比了这些系统的设计框架和技术特点,为实时云绘制技术的最终落地提供参考。

5.1 CloudXR

CloudXR是美国英伟达公司提出的一套云渲染系统,旨在解决包括头戴式显示器、手机和平板等瘦客户端设备在内的前端渲染能力不足问题。CloudXR本质上就是一套远程渲染系统,其系统框架如图8所示。它的主要绘制任务完全放置于边缘/云服务器中,整个绘制过程通过借助英伟达的虚拟化软件调用服务器端GPU得以完成(Gül等,2020)。绘制结果借助5G或Wi-Fi网络以视频格式串流至前端,解决了包括无线VR/AR应用以及移动端在线3维可视化应用、移动3维视频游戏在内的瘦客户端应用渲染质量低下的问题。

图8 CloudXR系统架构Fig.8 CloudXR system architecture

在数据传输过程中,CloudXR充分利用5G网络优先将视频流推送到近端边缘服务器中,之后以更低的网络延迟将视频流迅速推送至各类客户端设备(Liubogoshchev等,2021)。另外,NVIDIA还为Cloud-XR提供了5G移动边缘计算开发包,给高质量三维可视化应用在“瘦”客户端设备(移动设备、XR设备、弱PC设备)的落地提供了稳定的开发环境。

5.2 Unity render streaming

Unity render streaming是架构在Unity3D游戏引擎上的一套云渲染解决方案。框架如图9所示,它基于WebRTC标准建立长连接,实现了高质量Unity3D可视化应用在Web端的实时展示与交互控制(Tandianus等,2018)。

图9 Unity render streaming系统架构Fig.9 Unity render streaming system architecture

该方案的网络构架较为简单,遵循服务器就近分配原则,一般选取本地云服务器进行点对点式的端云直接链接,排除任何中间服务器中转,如图10所示。

图10 Unity render streaming 网络架构Fig.10 Unity render streaming network architecture

由于架构在成熟的游戏引擎中,并以WebRTC为基础,Unity render steaming有其独特的优势:1)该方案通过引擎内核来支持图像截取,绕开了桌面合成引擎,降低了延迟(Tan等,2021);2)支持Unity所有的渲染特性,支持URP、支持HDRP(high definition render pipeline),也可以支持Builtin管线;3)支持自适应码率,串流带宽占用较低;4)支持包括Edge、Fireforx、Safari和Chrome在内的主流网页浏览器,体现一定的兼容性。对于广大游戏开发者而言,尤其是Unity3D引擎的使用者,Unity render steaming是一套行之有效的工业级云渲染方案。

5.3 Azure remote rendering

Azure remote rendering(ARR)是美国微软公司开发的远程渲染系统,系统框架如图11所示,该系统通过移动互联网将渲染任务卸载至云服务器中,并通过委托在云服务器上的图形渲染引擎获得高质量渲染帧,最后将这些渲染帧流式化传输至各类微软支持的移动终端或XR终端中(Chilberto等,2020)。

图11 ARR系统架构Fig.11 ARR system architecture

ARR针对渲染任务的不同,制定了混合渲染和多GPU渲染两种方案:1)混合渲染是一种端云协同式渲染方案,前端负责用户交互式(user interface, UI)的设计与渲染,后端负责应用的核心渲染任务,两端的渲染结果最终都在前端混合并输出。2)多GPU渲染是一套并行渲染方案,该方案将复杂的渲染任务合理地分摊至多个高端GPU上,最终将多个GPU上的渲染结果进行合并以产生最终的输出图像(Jaya等,2020)。

ARR的推出主要是为微软旗下的MR设备(Hololens)提供技术支持,然而随着系统体系日趋成熟,ARR也逐步成为一套通用的工业级云渲染解决方案。

5.4 酷家乐云设计

酷家乐家装云设计平台(酷家乐云设计)是一套Web/云协同渲染平台(Zheng等,2020),如图12所示,其中Web端是平台的主要入口,用户在Web端通过各垂直细分领域工具,产生3D数字内容,并根据不同的业务需要,提供不同的绘制结果;云端除基础服务外还包含了一个超大规模的XP 绘制集群,通过集群管理,向用户提供真实感的绘制结果,并以图片或视频等方式传送到端。

图12 酷家乐家装云设计平台Fig.12 “Kujiale” cloud design platform for decoration

平台的整条技术链路随着业务迭代的复杂度上升,端与云侧的图形绘制均呈现了比较大的挑战,具体表现如下:1)Web 端复杂业务及场景带来的各类问题:(1)场景复杂度,WebGL 难以充分发挥现代 GPU 优势,绘制效果与绘制性能的平衡;(2)大场景性能带来的不可控;(3)细粒度的几何场景编辑;(4)不同业务需要带来的绘制效果要求与性能平衡。2)复杂业务带来的离线绘制引擎性能与用户期望的快速出图:(1)复杂场景(数以亿计的三角面片);(2)硬件架构如何最优;(3)服务器空闲带来的成本问题;(4)绘制内容的多样化,如图片、视频和动画等。

针对上述问题,酷家乐云设计平台基于自主材质体系,构建了一套较为完备的从Web端到云端的图形绘制引擎基础设施:1)Web端的底层是WebGL图形显示引擎,上层是设计工具及垂直应用。2)云端的底层是XPU绘制引擎,上层则是多机器集群通过端云方式,端发送数据到云,同时云端生成绘制结果返回到端。基于不同的业务应用,云端提供不同的方式返回到端。最终,酷家乐云设计已经能够作为国内在线家装设计领域的一线平台,给广大用户(包括移动端、PC端)提供高质量的家装设计结果(如图13所示)。

综上,通过对比国内外著名的一线云渲染系统或解决方案(如表8所示)可以看出,整个工业界的在线三维可视化应用当前正在经历一次由端云协同驱动的远程渲染变革。虽然移动端和Web端这些瘦客户端不断地优化自身的渲染算法,但对能耗的平衡必然导致此类前端设备在渲染能力上远低于桌面端设备。为此,以在线实时云渲染为代表的远程渲染技术随着网络带宽的不断增大,逐步成为当下不可或缺的在线实时渲染技术之一。

表8 工业界云渲染系统Table 8 Industrial cloud rendering systems

6 发展趋势与展望

当前,随着元宇宙及Web 3.0概念的兴起,整个3维可视化应用正在经历一次由移动互联网驱动的在线实时化绘制变革。虽然近年来移动端GPU渲染能力稳步提升,然而受功耗、带宽以及布局空间等先天条件制约,它与桌面端GPU的性能差距一直在不断拉大。为了满足移动互联网用户对设备绘制能力需求的提升,同时兼顾移动端设备的功耗级别与负载均衡,设备厂商提出了包括SOC芯片集成构架、TBR渲染构架和延迟片元着色等一系列面向移动端的渲染优化设计。研究者们则另辟蹊径,不仅对高耗能实时光线跟踪算法的移动端实现提出了挑战,而且面向功耗和带宽的先天不足提出各种优化渲染策略。引擎开发商也不逞多让,以Unreal和Unity3D为代表的3D游戏引擎,紧随移动互联网发展的潮流,为移动端提供了通用的渲染管线和良好的可视化的3D应用制作平台。

Web端作为轻量级跨平台的主流浏览环境,在移动互联网时代下仍然拥有极高的用户群体。随着诸如X3D、WebGL和WebGPU等各种3维图形API的提出,Web端已经具有制作3D应用的核心技术,具有高度真实感和沉浸感的Web3D应用开始展现在用户面前。随着移动互联网技术的推波助澜,Web在线3维实时绘制研究已经向超大规模场景实时绘制、照片级真实感和沉浸式交互感等多个目标发起挑战。为此,研究者们针对超大规模场景轻量化、场景的细粒度化、对等传输、基于PBR的真实感材质、实时全局光照绘制以及GPU加速动画绘制等多个方面展开了相关研究。

虽然移动端和Web端这些瘦客户端不断地优化自身的渲染算法,但受能耗的限制必然导致此类客户端在渲染能力上远低于桌面客户端。为此,以在线实时云绘制为代表的远程绘制技术随着移动互联网带宽的不断提升,逐步成为当下不可或缺的在线实时绘制的辅助手段之一。当前,云绘制的主要任务有3个方面:3D应用的自动化托管、资源调度和串流技术的应用,其中串流技术的应用是云绘制的核心。因此,各大云服务厂商和研究机构把云绘制的优化重点放在了串流技术的优化上,包括视频流的无损/低损压缩技术和视频流质量优化等。

然而,云绘制技术过度依托云服务器的渲染能力,完全忽略了前端设备。考虑到目前的瘦客户端的渲染能力已经发展到一定水准,让端云同时发挥各自绘制能力的“端云协同”技术将成为未来主流的移动在线实时渲染技术。端云协同的重点在渲染任务的分摊上,包括:光影渲染任务的分摊、着色器渲染任务的分摊和光栅化渲染任务的分摊等。渲染任务分摊好之后,让前端根据其绘制能力适当地承当其力所能及的渲染任务,不仅可以提高前端设备的利用率,而且降低了云服务器的绘制负担。展望未来,随着边缘计算和云计算的迅速普及,移动互联网的在线协同绘制构架已经从简单的端/云构架,逐渐演变成较为复杂的端/边/云构架。面对新的构架,全新的端/边/云渲染任务的分摊成为协同渲染的一个研究目标。另外,当前多端渲染系统的计算调度模式固化,在不同设备性能、不同软件平台和不同网络条件的复杂外部环境下,智能化协同调度机制使得整个多端渲染系统的性能无法发挥最佳水准,是当前端/边/云协同在线绘制的另一个重点研究对象。此外,随着WebGPU的普及,WebAssembly + WebGPU的组合方案预计会成为复杂在线 3D 场景的主流底层技术方案之一,基于该方案下的实时绘制效果也能得到更好的提升。

致 谢本文由中国图象图形学学会虚拟现实专业委员会组织撰写,该专委会更多详情请见链接:http://www.csig.org.cn/detail/2385。

猜你喜欢
引擎绘制图形
点燃企业发展的“引擎”
打造信息化建设的“党建引擎”
Painting ski maps 绘制滑雪地图
绘制童话
车坛往事4:引擎进化之屡次失败的蒸汽机车
绘制世界地图
分图形
找图形
神秘的不速之客
图形变变变