About this project

This repository is a Unity-based viewer for 3D Gaussian Splatting, implementing the real-time visualization portion of the SIGGRAPH 2023 paper "3D Gaussian Splatting for Real-Time Radiance Field Rendering" by Kerbl, Kopanas, Leimkühler and Drettakis. It consumes already-trained gaussian splat model files rather than performing training itself, and it is explicitly based on the original paper rather than the many later gaussian splatting research variants. Status and platform support The author states that as of December 2023 no significant further development is planned. Known-working platforms are those using D3D12, Metal or Vulkan graphics APIs: Windows (D3D12 or Vulkan), Mac (Metal) and Linux (Vulkan). DX11 does not work. OpenGL and OpenGL ES are not supported, WebGPU is not yet viable, and mobile support is inconsistent, with some iOS and Android devices reported as non-functional. Some VR devices reportedly work (HTC Vive, Varjo Aero, Quest 3, Quest Pro), while others such as Apple Vision Pro may not. Usage workflow Open the projects/GaussianExample folder as a Unity project (developed with Unity 2022.3) and load the GSTestScene scene. GaussianSplat assets are created through the Tools -> Gaussian Splats -> Create GaussianSplatAsset menu. The input can be a PLY file from the original 3DGS paper (typically point_cloud/iteration_*/point_cloud.ply) or the Scaniverse SPZ format. An optional cameras.json can be placed alongside or in parent folders. The dialog offers compression options and an output folder; even the "very low" quality preset is described as decently usable, with one capture under 8MB total. The resulting asset consists of several data files. No splat models are bundled in the repository because of their size; the original paper repository links to a 14GB zip of pretrained models. Rendering and controls A GaussianSplatRenderer script on a game object takes the created asset in its Asset field. The script exposes controls for debugging and visualizing the data, plus a slider to move the game camera to one of the asset's camera locations. Rendering accounts for the game object's transformation matrix; official models appear rotated about -160 degrees around X and mirrored around Z, so the sample scene applies such a transform. Additional documentation covers render pipeline integration and splat editing. Performance notes For the paper's "bicycle" scene with 6.1M splats at 1200x797 and Medium asset quality (282MB asset), the author reports on Windows with an NVIDIA RTX 3080 Ti: the official SBIR viewer at 7.4ms (135FPS) using 4.8GB VRAM, and Unity on DX12 or Vulkan at 6.8ms (147FPS), split into 4.5ms rendering, 1.1ms sorting and 0.8ms splat view calculation, using 1.3GB VRAM. On Mac with an Apple M1 Max, Unity on Metal is reported at 21.5ms (46FPS). Beyond the loaded asset, roughly 48 bytes of GPU memory per splat is currently needed for sorting and caching view-dependent data. Licensing The author's code is MIT licensed. Third-party components include zanders3/json (MIT), GPU sorting code "DeviceRadixSort" contributed by Thomas Smith, and VR fixes contributed by @ninjamode based on Unity-VR-Gaussian-Splatting. The README cautions that the original paper implementation's license restricts its training software to educational, academic and non-commercial use, with commercial use requiring a license from INRIA; users must separately consider how their PLY files were produced.