大家好,本文記錄了嘗試跑通雲渲染的過程,目前暫時沒有跑通,不過已經有了方向
- 基本原理
- 1.租GPU伺服器
- 2.部署到雲渲染平臺
- 未來方向
- 更多參考資料
相關文章:
數字孿生雲渲染整體架構設計
本文嘗試把基於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伺服器上跑通了路徑追蹤渲染器(顯示卡驅動用NVIDIA Vulkan 1.2.145 developer driver 451.74)
但是,因為只能使用老版本的圖形驅動,導致沒有跑通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支援定製。我與他們聯絡後,在公有云不能跑起來(因為會開兩個視窗,而公有云只支援一個視窗),所以在私有云進行測試。不過遲遲沒有結果,給出的反饋是“驅動和作業系統不相容,還在適配”。
未來方向
1.升級WebGPU-Node,支援最新的圖形驅動
我開了issue,不過作者遲遲沒有回覆(因為已經不維護了)。只能自己來升級了,或者贊助作者來升級
升級的好處是能夠部署到雲渲染平臺,並且能使用最新的顯示卡(如RTX 4090)。經過我的測試,RTX 3090是RTX 2060s的3倍,另外可推測RTX 4090應該是RTX 3090的2倍
2.WebGPU-Node支援全屏
不過即時目前不支援全屏,雲渲染平臺應該也能透過視窗捕捉來,所以這個的優先順序較低
更多參考資料
UE畫素流送是什麼?畫素流推流原理介紹
137頁完整版《2023數字孿生世界白皮書》場景渲染能力篇:實時雲渲染