Radiance field-based rendering methods have attracted significant interest from the computer vision and computer graphics communities. They enable high-fidelity reconstruction with complex real-world lighting effects, but at the cost of high rendering time. 3D Gaussian Splatting solves this issue with a rasterization-based approach for real-time rendering, enabling applications such as autonomous driving, robotics, virtual reality, and extended reality. However, due to the lack of format and rendering standardization, the ecosystem is fragmented into specific viewers. This makes it difficult to integrate these methods into traditional mesh-based rendering pipelines, which is a common use case for interactive applications. To address this limitation, we propose a framework that uses Nvidia's interprocess communication (IPC) APIs to provide an implementation-agnostic rendering server, enabling the results to be viewed in external clients such as Unity, Blender, and OpenGL viewers. The code is available at https://github.com/RockyXu66/splatbus.
Figures & tables
Figure 1. Overview of SplatBus. A Python rendering server exposes rendered color and depth buffers through CUDA IPC, while external clients exchange camera and scene controls over sockets.
Figure 2. Screenshots of SplatBus clients showing plug-and-play integration with various 3DGS-based methods and compositing with mesh rendering pipelines.
720p
1080p
1440p
4K
Original render, avg. (ms)
4.3
6.0
8.5
15.4
+ Handoff (ms)
0.1
0.2
0.3
1.0
Overhead, avg.
2.3%
3.3%
3.5%
6.5%
GPU-mem overhead (MB)
7.0
15.8
28.1
63.3
Table 1. CUDA-IPC handoff overhead averaged over three Mip-NeRF 360 scenes; overhead is handoff time divided by render time.
Stage (ms)
CUDA-IPC
CPU-shm
Enc. loss.
Enc. lossy
Render
5.2
5.1
6.6
5.1
Handoff (server)
0.4
3.8
0.2
0.4
Transfer + recv
0.4
2.9
45.8
27.4
Viewer copy + draw
1.9
2.1
0.7
1.2
Pipeline total
7.9
13.9
53.3
34.1
Displayed FPS
169.4
118.4
52.6
92.2
Table 2. End-to-end latency (ms) and throughput (fps). “Enc.” denotes NVENC. Stage timings use per-frame device synchronization; displayed FPS does not.
SplatBus
Native Unity
Scene
Res.
SIBR
OpenGL (on-request)
OpenGL (free-run)
Unity (free-run)
Unity- GaussianSplatting
gsplat- unity
room
720p
352.2
300.2
284.1
253.0
441.1
688.6
1080p
205.9
185.2
169.4
148.5
372.3
435.4
1440p
135.4
122.3
108.2
99.9
292.7
290.9
4K
70.2
62.7
52.4
53.0
191.0
167.8
garden
720p
207.5
172.6
161.3
154.1
138.5
243.9
Table 3. Displayed throughput (fps) of SIBR, SplatBus clients, and native Unity implementations.
Scene
System
PSNR ↑
SSIM ↑
LPIPS ↓
room
SplatBus
31.25
0.914
0.221
UnityGaussianSplatting
30.82
0.885
0.221
gsplat-unity
30.29
0.874
0.228
garden
SplatBus
27.04
0.857
0.110
UnityGaussianSplatting
26.87
0.852
0.113
gsplat-unity
22.50
0.737
0.188
Table 4. Fidelity on Mip-NeRF 360 test views; SplatBus reproduces the original rasterizer.