云渲染实施记录(已经跑通)
大家好,本文记录了尝试跑通云渲染的过程,已经跑通了,也有了未来方向
相关文章:
数字孪生云渲染整体架构设计
本文尝试把基于WebGPU-Node的路径追踪渲染器部署到云端,以云渲染/云游戏的方式 渲染到客户端,从而实现在手机上也能渲染出高质量的画面
基本原理
客户端与云端 通过WebRTC通信
客户端发送指令到云端
云端发送像素流到客户端
WebRTC有100ms左右的延迟,造成的效果是画面仍然是60FPS(跟云端的渲染器的FPS相同),但是进行鼠标等操作后要延迟100ms左右才响应。这在数字孪生这种对实时响应不敏感的场景是适用的,不过对于游戏特别是网络对战类游戏就太慢了,可以通过WebTransport、WebCodecs来降低延迟,具体可参考WebTransport 与 WebCodecs 初探
有两个实现的方案:
1.首先租台GPU服务器,部署路径追踪渲染器;然后通过WebRTC、编码等技术实现云渲染
2.将路径追踪渲染器部署到云渲染平台,通过简单的配置而无需实现WebRTC即可实现云渲染
目前第二个方案已经跑通了!
下面分别讨论这两个方案:
1.租GPU服务器
目前是在淘宝上租GPU服务器的,具体是3090GPU服务器租用4090显卡远程电脑出租智能AI绘画算力建模渲染
已经在RTX 3090、Win10 服务器上跑通了路径追踪渲染器(显卡驱动用NVIDIA Vulkan 1.2.158 developer driver 457.17)
但是,因为只能使用老版本的图形驱动,导致没有跑通tf.js的Node.js gpu后端,所以只能使用WebGPU-Node的compute shader来实现深度学习的推理(包括NRC的全连接神经网络的GPU实现、WSPK的卷积神经网络的GPU实现)
另外,暂时没有兴趣来通过WebRTC实现云渲染/云游戏(因为是新的领域,不熟悉)
本来想找现成的WebRTC应用/库(如WebRTC社区头部开源项目介绍),但目前只找到用于实时会议的(如Livekit-开源实时音视频基础设施介绍),暂时没有合适的用于云游戏的(只有这个,已经2年没更新了,不太靠谱)
更多参考资料:
tfjs node.js后端
windows下部署深度学习环境cuda+cudnn+tensorrt
Running on server
2.部署到云渲染平台
我看到有腾讯应用云渲染、3dcat 数字孪生云渲染 云渲染平台,只需将.exe应用上传,简单配置一下即可实现云渲染
我使用pkg实现了将Node.js应用(路径追踪渲染器)打包为1个.exe
但因为不能使用最新的图形驱动,所以需要GPU服务器定制。
3dcat支持定制。我与他们联系后,在公有云不能跑起来(因为会开两个窗口,而公有云只支持一个窗口),所以在私有云进行测试。不过迟迟没有结果,给出的反馈是“驱动和操作系统不兼容,还在适配”。
最新消息:
3dcat测试通过了!感恩!
目前手机上延迟75ms,PC上延迟40ms。这是因为虽然都连同一个网络,但是手机是连的wifi,PC是通过网线连接,所以PC网速更快
3dcat工作人员说目前测试节点是深圳的,实际上延迟应该可以降低到10ms以内!
未来方向
1.升级WebGPU-Node,支持最新的图形驱动
我开了issue,不过作者迟迟没有回复(因为已经不维护了)。只能自己来升级了,或者赞助作者来升级
升级的好处是能够部署到云渲染平台而无需服务器定制,并且能使用最新的显卡(如RTX 4090)。经过我的测试,RTX 3090是RTX 2060s的3倍,另外可推测RTX 4090应该是RTX 3090的2倍
2.WebGPU-Node支持全屏
不过即时目前不支持全屏,云渲染平台应该也能通过窗口捕捉来,所以这个的优先级较低