Yan's Studio.

浅谈端云协同渲染

Word count: 1.2kReading time: 4 min
2023/02/21

原创性声明

本文为作者原创,在个人Blog首次发布,如需转载请注明引用出处。(yanzhang.cg@gmail.comhttps://graphicyan.github.io/)

从云游戏到混合渲染

云游戏(Cloud Game)

原理
  • 发送用户输入,从端到云。
  • 渲染完整帧,云。
  • 将画面以视频流传回,从云到端。
特点
  • 适用于异构、低级别的终端设备。
  • 围绕高效的视频压缩及传输技术构造技术生态。
  • 延迟(~100ms),视频类应用尚可接受、交互式对抗类游戏会难以忍受。
  • 传输带宽限制,对压缩算法的挑战。

混合渲染(Hybrid Rendering)

原理
  • 端侧以实时计算的Raster及ComputeShader为主,保证基本的输出。
  • 辅以云侧的Raytrace、GI、AO、Translucency等算法,增强端侧效果。
特点
  • 算力适合地分布在云、端侧,协同两侧资源计算,混合计算结果。
  • 策略丰富、增强效果、传输数据具有定制化(可优化空间)。
  • 数据量相比云游戏方案,一般来说更小。
  • 技术选型风险、工业化程度低。

云游戏

把算力放在云端,看似简单,想要在端侧、云侧通信并实时处理逻辑、用户输入、渲染、捕获、编码、打包、传输、解码、显示,仍然由诸多难点和不确定性。

Framework for Cloud Gaming

image.png
image.png
image.png

延迟

image.png

技术分类

平台技术
  • 系统集成:组建云游戏(计算)的基础平台。
  • 服务质量分析(QoS):主要集中在两种指标,能量开销(电池网络指标(延迟)。
  • 体验质量分析(QoE):用户的主观评分,本质上乏味且贵,大多数尝试分析QoS和QoE的关系来反推QoE。
平台优化
  • 云服务器基建:多数据中心、服务节点、客户端的资源分配问题;如P2P覆盖及多层云等分布式架构
  • 通信:如多层编码和图形压缩等数据压缩方法;自适应传输根据网络动态适时更改编码比特率、帧率、分辨率等参数。

实现示例

平台部署


WebRTC

一个成熟的实时通信架构,应该具备音视频传输、多平台支持、插件管理等功能。
成熟的实时通信具备的能力
WebRTC实现了上面所有的功能,是做网络实时通信的最优解。
目前UE的云游戏、淘宝直播、以及ZOOM等都用这套方案。
webrtc架构图
VS自研

使用WebRTC实现云推流

  1. 云端引擎的像素流送模块首先将建立到信令和Web服务器的链接。
  2. 客户端会连接到信令服务器,服务器将对客户端提供一个HTML页面,其中包含播放器控件和以JavaScript编写的控制代码。
  3. 用户开始流送时,信令服务器将进行交涉,在客户端浏览器和云端引擎之间建立直接连接。客户端和云端引擎须了解相互的IP地址,此连接方能工作。如两者在同一网络中运行,通常它们可看到各自的IP地址。然而在两个端点之间运行的网络地址转换(NAT)服务可能对任意一方的外部可见IP地址进行修改。解决此问题的方法通常是是用STUN或TURN服务器,告知每个组件其自身的外部可见IP地址。
  4. 客户端和云侧引擎之间的连接建立后,像素流送模块便会直接开始将媒体流送到浏览器。来自客户端的输入由播放器页面的JavaScript环境直接发送回云端引擎中。
  5. 即使媒体流送已经开始播放,信令和Web服务器仍会维持其与浏览器和云端引擎的连接,以便在必要时将用户从流送中移除,并处理浏览器造成的连接断开。

混合渲染

基于差异的协同渲染

Delta Encoding

Delta Encoding
image.png
image.png

I-Frame Rendering

Client-Side I-Frame Rendering

云光线追踪

image.png
image.png

分布式动态光照探针

[A Distributed, Decoupled System for Losslessly
 Streaming Dynamic Light Probes to Thin Clients]

开个脑洞

NV’s Hybrid Pipeline

[Hybrid Rendering for Real-Time Ray Tracing]

参考文献

[2020][VR]Cloud-to-end Rendering and Storage Management for Virtual Reality in Experimental Education

[2022][IXR]Distributed Hybrid Rendering for Metaverse Experiences

[2022][PG Poster]Cloud-Assisted Hybrid Rendering for Thin-Client Games and VR Applications

[2022]A Full Dive into Realizing the Edge-enabled Metaverse

[2008][ICIP]Low Delay Streaming of Computer Graphics

[2009]Geelix_LiveGames_Remote_Playing_of_Video_Games

[2015][MobiSys]Kahawai

[2016]Mobile Cloud Computing Research

[2020][MICRO]A Benchmarking Framework for Interactive 3D Applications in the Cloud

[2020][MTA]A Hybrid Remote Rendering Method for Mobile

GitHub - EpicGames/PixelStreamingInfrastructure: The official Pixel Streaming servers and frontend.

Build software better, together

Real-time Streaming Of 3D Enterprise Applications From The Cloud To Low-powered Devices - CSE Developer Blog

Unreal Pixel Streaming in Azure - Azure Gaming

像素流介绍

搞懂WebRTC ,看这一篇就够了

WebRTC和WebSocket有什么关系和区别? - 知乎

音视频通信为什么要选择WebRTC?

【技术】UE4 Pixel Streaming 详细解读(实践篇)

PixelStreaming 局域网及公有云部署全流程记录

UE4像素流(Pixel Streaming)应用场景

CATALOG
  1. 1. 原创性声明
    1. 1.1. 从云游戏到混合渲染
      1. 1.1.1. 云游戏(Cloud Game)
        1. 1.1.1.1. 原理
        2. 1.1.1.2. 特点
      2. 1.1.2. 混合渲染(Hybrid Rendering)
        1. 1.1.2.1. 原理
        2. 1.1.2.2. 特点
    2. 1.2. 云游戏
      1. 1.2.1. Framework for Cloud Gaming
        1. 1.2.1.1. 延迟
      2. 1.2.2. 技术分类
        1. 1.2.2.1. 平台技术
        2. 1.2.2.2. 平台优化
      3. 1.2.3. 实现示例
        1. 1.2.3.1. 平台部署
        2. 1.2.3.2. WebRTC
          1. 1.2.3.2.1. 使用WebRTC实现云推流
    3. 1.3. 混合渲染
      1. 1.3.1. 基于差异的协同渲染
        1. 1.3.1.1. Delta Encoding
        2. 1.3.1.2. I-Frame Rendering
      2. 1.3.2. 云光线追踪
      3. 1.3.3. 分布式动态光照探针
      4. 1.3.4. 开个脑洞
        1. 1.3.4.1. NV’s Hybrid Pipeline
  2. 2. 参考文献