百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

新技术来了,你没必要继续折腾WebGL了

bigegpt 2025-04-01 16:07 13 浏览

我在前面的文章中提到过目前基于WebGL的前端三维可视化存在的一些问题:

1、前端浏览体验和数据量有很大关系,需要花费大量的数据进行数据的轻量化以及切片处理,但是同样要忍受切片调度加载的问题;

2、前端性能的稳定性不高,高负载的情况下容易出现崩溃;

3、无法支持大分辨率的场景问题;

这些问题在目前情况下似乎都是无解的,要么就是退回到CS架构;要么就是限定使用场景,比如圈定一个比较小的数据使用范围,以此来获得比较好的使用体验;

但是这个都只是权宜之计,在当下强调全场景内容分发的时代,限定内容的分发渠道肯定是不明智之举,在数字互联时代,所有的内容制作者都希望尽可能触及到更多的消费者,将内容能在不同的平台上分享,包括手机、平板电脑、个人电脑以及交互式屏幕。

显然在当前的技术背景下继续折腾WebGL 或者H5都是不明智,因为天花板已经很明显了,既然“重前端”的模式有瓶颈,那是否可以考虑将高负载的“渲染”放置到能力强大的后端,解放前端?

那一个理想的后端渲染方案应该实现哪些特性?

1、各种终端和平台都可以在无需安装的前提下无缝访问三维场景;

2、客户端可以非常高效的访问三维场景,无需等待数据的下载;

3、场景的交互与数据量无关,在前端都可以获得一致的访问体验;

为此一些游戏引擎厂商提出了一种新的三维“云渲染”方案-基于WebRTC的视频流推送技术:

UE称之为PixelStreaming;

Unity称之为RenderStreaming;

由于基本原理一致,就是将场景通过后端渲染,然后采用实时视频流推送到网页端,并且能够实现前端到后端的交互同步。虚幻引擎相应的宣传以及资料多一些,下面就以此为例介绍一下:

像素流送以插件形式集成在游戏引擎中,插件会对主机服务器的图形流信息进行编码,然后通过 WebRTC 协 议将其发送给位于接收端的浏览器和设备。事实上,通过在高性能主机系统上运行渲染引擎,用户能在所有终 端设备上享受到与主机相同的画质,并且能体验到所有的渲染引擎功能。

由于数据保存在主机上,并且只有像素被流送到查看设备上,所以诸如像素流送这类流送解决方案本质上要比 客户端下载方案更快速、更安全。此外,用户会话数据可以在引擎中捕获以满足任何指标需求。

什么是WebRTC?

WebRTC(网页实时通信)是一种通过网页浏览器和移动应用程序进行实时通信的协议。该协议允许以直接链接 的方式传输音频和视频,用户无需下载任何插件或应用程序。通信命令通过 API 接口提交,前端只要声明一个标签就可以实现视频流的加载和交互。

如何搭建像素流架构?

借助 WebRTC 协议,像素流送插件可以在主机服务器上与网络中的服务器或客户端进行通信,像素流送可以通过单台服务器运行,也可以通过允许动态扩展并提供足够硬件的 GPU 云环境运行。在这些情况 中,关键之处是对所需规模进行分析,因为这直接关系到最终主机环境的成本以及用户体验的流畅程度。

如果某个应用程序需要支撑大量的最终用户访问,并且这些用户所使用的硬件和软件设置五花八门,那么就需要采用拥有可延展特性的云环境来实现像素流送。图中展示了多终端场景下的推流布局,该布局同样适用于对数据 访问存在安全要求并且需要跟踪记录的共享体验。

在大多案例场景中,不同用户需要不同的交互体验和推流内容。该系统会为每个用户运行一个单独的像素流 送组件堆栈,并将每个用户指向一台单独的网络服务器和主机。匹配器会负责将每个请求者重定向至属于它的信令和网络服务器,从而为客户端及其 WebRTC 代理服务器建立 连接。只要用户在服务器上一直保持活跃状态,匹配器就会不断为用户推流内容。匹配器组件可以在渲染引擎 以及其他服务器组件中找到。

需要怎样的支持环境?

每个堆栈都需要一个唯一的标识符和端口来控制体验。许多消费级显卡最多只能同时运行两个编码器,从而限制了电脑上可以运行的实例数量。对于专业级显卡来说,例如英伟达的 Quadro 或 Tesla 系列,或者基于云的 GPU 实例(AWS)则没有这些限制。

英伟达的 GPU 自从 Kepler 架构开始都包含一个名为 NVENC 的硬件编码器,它能为视频编码提供独立于图形 性能的全面硬件加速功能。通过将涉及编码的复杂计算任务转移到 NVENC 上,图形引擎和 CPU 将能够专注于 其他操作。NVENC 使得以下工作成为可能:

  • 在不使用 CPU 的情况下,以高质量和超低延迟对游戏和应用程序进行编码和推流
  • 为归档、OTT 推流和网络视频提供极高质量的编码
  • 单次流送编码的功耗极低(瓦特/流送)

视频编码硬件 NVENC 可通过英伟达的视频编码解码器 SDK 获得。该专用加速器支持对 Windows 和 Linux 上 的许多常见视频编码解码器进行硬件加速编码。

1. 硬件编码以及像素流送的生成过程。NVENC 编码器通过缓冲区与 CPU 和 CUDA 核心协同工作并生成像素流,然后 通过 CPU 发送到分发网络中。

最后总结一下,目前基于视频流的“云渲染”方案其实已经有了很成熟的商业应用,在一些小场景的可视化中使用常规的WebGL可视化技术应该是没有问题的,而且成本可控,但是对于一些效果要求高,数据量大,效果酷炫的场景,可能就需要考虑这种“云渲染”的方案了,还是那句话随着未来5G的普及,这种模式应该是可以更好的适应未来场景下的可视化开发场景。

参考资料:

1、Unity RenderStreaming:

https://gitee.com/Unity-Technologies/UnityRenderStreaming/tree/chore/promotion

2、UE 流送参考:

https://docs.unrealengine.com/zh-CN/Platforms/PixelStreaming/PixelStreamingReference/index.html

测试视频:

1、Unity官方实时云渲染RenderStreaming小测评:

https://www.bilibili.com/video/av68637388/

2、UE4像素流技术 | UE4 Pixel Streaming(官方汉化):

https://www.bilibili.com/video/av83445467/

相关推荐

得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践

一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...

warm-flow新春版:网关直连和流程图重构

本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...

扣子空间体验报告

在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...

spider-flow:开源的可视化方式定义爬虫方案

spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...

solon-flow 你好世界!

solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...

新一代开源爬虫平台:SpiderFlow

SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...

通过 SQL 训练机器学习模型的引擎

关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...

鼠须管输入法rime for Mac

鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...

Go语言 1.20 版本正式发布:新版详细介绍

Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...

iOS 10平台SpriteKit新特性之Tile Maps(上)

简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...

程序员简历例句—范例Java、Python、C++模板

个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...

Telerik UI for iOS Q3 2015正式发布

近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...

ios使用ijkplayer+nginx进行视频直播

上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...

IOS技术分享|iOS快速生成开发文档(一)

前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...

macOS下配置VS Code C++开发环境

本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...