对于不同体量的三维矢量化场景(如开放世界类型游戏),行业内有不同的性能优化方案,所谓的“体量”有许多衡量指标,最常用的指标是全场景三角形的数量。本文提出了一套针对10亿+三角形规模的场景优化方案,融合多个技术包括hLoD、QEM、WebRTC来提升性能并适配多端设备,目的是让中低端设备也能运行大型三维可视化管理系统。
前端现状
游戏行业用“次世代“表示最新一代渲染技术,因为随着软硬件的更新换代,计算机图形学的理论几乎每十年就发生一次颠覆性的迭代,最近的一次则是以可编程的GPU渲染流水线(pipeline)为代表的着色器技术[A],这一批理论升级极大地提升了开发者的创作自由度,但也给性能带来了巨大挑战:像移动端一类低配设备的GPU每帧至多只能处理十万数量级的三角形,面对更大一点的开放场景往往只能以时间换空间,最终造成无法接受的高延迟;而如果都配备高性能的图形处理器又面临着低性价比的问题。因此面对如何让大型3D场景在低配设备上运行的问题,主流的做法是通过视频流技术(像素流)将服务端上渲染好的帧(包括音频)实时传输到客户端,视频的编解码同样是运行在GPU上的专用计算单元,客户端的硬件只要有视频解码的能力即可。
WebRTC像素流简介
在众多视频编码技术中,WebRTC是最流行的,因其开源免费、跨平台、更新频繁等特点[B],解决了传统视频会议软件中需付费、门槛高、标准化不足等问题[C],主流的3D引擎包括虚幻引擎和Unity都选择在WebRTC的基础上实现了像素流技术。WebRTC的架构通常是利用信令通道(signalling channel)交换视频通讯双方的候选地址(ICE Candidate)和凭证等信息,然后双方利用候选地址建立起基于UDP的对等体直连,再通过音视频编码技术(如H.265)传输压缩、加密后的实时画面。这些特性依托垄断的chromium浏览器引擎得以迅速推广,随着时间推移,负责维护WebRTC的谷歌和负责维护视频硬编码的Nvidia等厂商相互兼容配对,协同更新,甚至可能组成联盟,形成“双寡头垄断“,WebRTC在即时通讯行业中的垄断地位将成为唯一的标准。WebRTC通过H.264或VP9编码将原始像素流压缩至10%以下,大大节省了带宽压力,最少只需要250Kbps就能运行480x270@25fps的视频[D]。
参考文献
[A] Edward Angel, Dave Shreiner. (2016 April). Interactive Computer Graphics: A Top-Down Approach with WebGL 7th edition [M]. Pearson. 32-33. (chapter 1.8)
[B] Dan Ristic. Learning WebRTC: (2015 June). Develop interactive real-time communication applications with WebRTC [M]. Packt.
[C] Tiberkak A, Lemlouma T, Belkhr A, et al. A Novel Approach for Generic Home Emergency Management and Remote Monitoring [J]. Software Practice and Experience, 2017, 48(1).
[D] Bart Jansen,Timothy Goodwin,Varun Gupta,et al. Performance Evaluation of WebRTC-based Video Conferencing[J]. ACM SIGMETRICS Performance Evaluation Review, 2018.