SplatRenderer:Unreal Engine 3D/4D Gaussian Splatting plugin
開源 UE5 plugin,使用自建 compute shader pipeline 即時渲染 3D 與 4D Gaussian Splats。2M+ Gaussians 達 100+ FPS。
概述
SplatRenderer 是一個免費開源的 Unreal Engine plugin,支援靜態 3DGS(.ply)與動態 4DGS 序列(.gsd)的即時渲染。整條渲染管線從零開始使用 UE5 的 RenderGraph API 與自訂 compute shader 打造。
Demo 在 RTX 4080 上跑 2M+ Gaussians 達 100+ FPS。
Demo Reel
影片中所有 4DGS 場景都是從單一影片拍攝生成。多個 splat 場景可以在同一個 UE 關卡中裁切、複製、排列。
SplatRenderer demo reel:3DGS + 4DGS 場景在 Unreal Engine 5 中運行 | 在 YouTube 觀看
v1.1 Demo Reel
SplatRenderer v1.1:Level Sequencer 整合 | 在 YouTube 觀看
從影片到 4DGS
Demo 中每個 4DGS 場景都是用 iPhone 拍攝的單一影片生成。一段錄影就能成為在 Unreal Engine 中播放的 Gaussian Splat 動畫序列。
流程:拍攝影片,用 Apple SHARP 訓練,透過 4DGS Converter 轉換成 .gsd,拖進 Unreal Engine。
功能
拖放式 Blueprint
將 BP_3DGS 或 BP_4DGS 拖入關卡,設定檔案路徑、調整 Details panel 中的參數,完成。



裁切體積
使用 3D 裁切框搭配可拖曳的編輯器 widget,可即時裁切感興趣的區域。3DGS 與 4DGS 皆適用。
Level Sequencer 整合
v1.1 新增完整 Level Sequencer 支援。可在 UE Sequencer 時間軸上直接 keyframe Brightness、SplatScale、ScrubFrame、PlaybackSpeed、AudioVolume 與 Crop 參數。將 Playing 關閉後,即可透過 Scrub Frame keyframe 精準控制播放,打造電影級運鏡。
多場景組合
在同一個關卡中裁切、複製、排列多個 splat 場景。每個實例獨立運作,擁有各自的播放控制。
場景展示
技術細節
渲染管線
Plugin 使用 UE5 的 RenderGraph API 與自訂 HLSL compute shader 建構了完整的 GPU 渲染管線。整條管線在 GPU 上運行,無 CPU readback,確保 render thread 不被阻塞。
每一幀依序經過:frustum culling、covariance projection、depth sorting,以及最終的 Gaussian alpha blending draw pass。管線設計能處理數百萬個 splat 並維持即時幀率。
架構
Plugin 遵循 UE5 的 Scene Proxy 模式,將 game thread 邏輯(actor 設定、檔案載入、參數控制)與 render thread 執行(GPU dispatch、排序、繪製)清楚分離,確保 thread safety 並自然整合進 UE5 的渲染架構。
4DGS 的部分,自訂的 sequence player 在背景執行緒上預載幀數據,搭配 double-buffered textures,讓 GPU 永遠不會等待資料。
3DGS vs. 4DGS
Plugin 支援兩條渲染路徑:
- 3DGS(
.ply):Gaussian 資料載入一次後存為 GPU textures,covariance 在載入時預計算,每幀成本極低。 - 4DGS(
.gsd):每幀的 Gaussian 資料從自訂壓縮格式串流讀取,GPU 即時重建每幀的 covariance,實現動畫序列播放。
.gsd 格式(開源)
我設計了 .gsd(Gaussian Sequence Data)作為 4DGS 序列的壓縮容器。相較於可能高達數百 GB 的原始 PLY 序列,.gsd 將每幀的 Gaussian 資料壓縮成單一可串流檔案。
480 幀的 PLY 序列大約 30 GB,同樣的序列用 .gsd 壓縮到 ~13 GB(generic LZ4),針對 SHARP 的 PLY 格式優化後可達 ~5 GB。
格式支援:
- LZ4 壓縮: 選擇 LZ4 是因為解壓速度優先於壓縮率。4DGS 播放時需要即時解碼每一幀,快速解壓至關重要。
- VQ(Vector Quantization)碼簿: rotation、scale 與 SH 資料在每幀量化為 256 筆碼簿,降低 entropy 後再交給 LZ4 壓縮。這將壓縮率從 ~3-5x(純 LZ4)提升至 ~5-8x。
- 精度控制: 每個分量(position、rotation、scale、SH 係數)可選 FP32 或 FP16
- 幀級隨機存取: 可跳轉至任意幀而無需解碼整個檔案
Converter 與格式規格完全開源:
GitHub: 4DGS Converter效能
讓 2M+ Gaussians 達到 100+ FPS 的關鍵設計:
- 純 GPU 管線: 渲染路徑中無 CPU-GPU 同步點
- 積極剔除: 在 view frustum 或 crop volume 外的 splat 在排序前就被丟棄
- 智慧快取: 攝影機未移動時跳過 GPU sort
- 非同步串流: 4DGS 幀在背景執行緒上提前解壓
粒子特效
可選的 compute shader 系統可對個別 Gaussian 施加力場(噪波、風、重力、渦流),在捕捉的場景上即時產生程序式特效。
未來計畫
- Relighting: Gaussian Splat 場景的動態光影互動
- FX 系統: 擴展粒子特效與材質層級控制
- 時間軸優化: 更智慧的幀插值與預測式串流
社群迴響
Plugin 在發布第一週即被 Radiance Fields 報導,與 NVIDIA 等業界工具並列。

連結
- GitHub: SplatRenderer Plugin
- GitHub: 4DGS Converter
- YouTube: Demo Reel
- YouTube: Sequencer Demo
- Radiance Fields 報導
相關文章
聯絡
有問題或想合作?歡迎聯繫!