gitwtfhub

wtf is unitysplats?

arloopa/unitysplats — explained in plain English

Analysis updated 2026-05-18

13C#Audience · developerComplexity · 4/5Setup · moderate

TL;DR

A Unity 6 package for importing and rendering 3D Gaussian Splatting content. It supports many file formats and works across Windows, Mac, mobile, WebGL, and XR headsets.

Mindmap

mindmap
  root((repo))
    What it does
      Imports 3D splat files
      Renders Gaussian Splats
      Auto coordinate conversion
      Cross-renderer sorting
    File formats
      Binary PLY files
      Compressed PLY
      SOG v1 and v2
      SPZ and GLB files
    Platforms
      Windows DirectX Vulkan
      Mac and iOS Metal
      Android Vulkan GLES
      WebGL 2 browsers
    Performance
      GPU radix sort
      CPU fallback sort
      Async GPU upload
      Texture storage for web
    Extras
      XR headset support
      Orthographic camera
      MSAA and cutouts
      Unity Package Manager
    Requirements
      Unity 6 or newer
      Mathematics library
      WebP decoder package
      Git URL install

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Render realistic 3D Gaussian Splatting scenes inside a Unity 6 game or app.

REASON 2

Build AR or VR experiences on headsets like Meta Quest 3 using splat-based environments.

REASON 3

Display compressed 3D splat assets in WebGL browsers for web-based visualization.

REASON 4

Load and view splat files at runtime from local storage or streamed data.

What's in the stack?

C#Unity 6Direct3DVulkanMetalOpenGL ESWebGL 2

How it stacks up

arloopa/unitysplatsbio-canse/fh6-afk-script-packrizwan3d/nanoagent.builder
Stars131313
LanguageC#C#C#
Setup difficultymoderateeasyhard
Complexity4/51/54/5
Audiencedevelopergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Requires Unity 6 or newer plus external dependencies including a mathematics library and a WebP decoder package.

The license for this package is not specified in the available documentation.

Wtf does this do

UnitySplats is a package for Unity 6 that lets you import, load, and render 3D Gaussian Splatting content. Gaussian splatting is a technique for representing 3D scenes as a cloud of tiny, overlapping Gaussian blobs, which can produce detailed, realistic results. The package is a fork of an earlier Unity renderer by Yize Wu, substantially extended and maintained by ARLOOPA. It also adapts architectural ideas from the PlayCanvas engine. The package supports several file formats for splat data. These include standard binary PLY files, PlayCanvas compressed PLY, SOG v1 and v2 (both bundled and unpacked), SPZ versions 1 through 4 (including Zstandard-compressed v4), and GLB files using a splatting extension. You can load files at runtime from file paths, byte arrays, or streams. The importer handles coordinate conversion automatically, translating from the source format's coordinate frame into Unity's. UnitySplats works across a range of platforms and graphics APIs. On Windows, it supports Direct3D 11 and 12, Vulkan, and OpenGL Core. On macOS and iOS it uses Metal, on Android it supports Vulkan and OpenGL ES 3.1, and it also targets WebGL 2 in browsers. Where the hardware supports it, the package uses a GPU-based sorting method called radix sort to order splats for correct rendering. When GPU support is insufficient, it falls back to a CPU-based counting sort while still using the GPU for drawing. The WebGL 2 path avoids compute buffers entirely, storing data in sampled textures and sorting on the main thread, which means large assets are more expensive in browsers than on native platforms. The package requires Unity 6000.0 or newer, the mathematics library version 1.3.2 or later, and a WebP decoder package for SOG image decoding. Installation is done through Unity's Package Manager using a Git URL, with the option to set up an OpenUPM registry entry so Unity resolves the WebP dependency automatically. Alternatively, both packages can be installed from Git URLs or from a downloaded release archive. Additional features include asynchronous GPU upload with optional rendering during upload, orthographic camera support, MSAA, cutouts, and XR integration for headsets like the Meta Quest 3. Cross-renderer sorting, which depth-orders splats from multiple renderers as one merged scene, is enabled by default when certain conditions are met. The full README is longer than what was shown.

Yoink these prompts

Prompt 1
How do I install UnitySplats in Unity 6 using the Package Manager Git URL, and how do I also set up the WebP decoder dependency?
Prompt 2
Write a Unity C# script that loads a .ply Gaussian Splatting file at runtime using UnitySplats and renders it in my scene.
Prompt 3
Explain the difference between GPU radix sort and the CPU counting sort fallback in UnitySplats, and how do I know which one is being used on my target platform?
Prompt 4
How do I configure UnitySplats to render 3D splatting content on WebGL 2, and what are the performance limitations compared to native platforms?
Prompt 5
Show me how to use UnitySplats with XR headsets like the Meta Quest 3, including any setup steps for cross-renderer sorting.

Frequently asked questions

wtf is unitysplats?

A Unity 6 package for importing and rendering 3D Gaussian Splatting content. It supports many file formats and works across Windows, Mac, mobile, WebGL, and XR headsets.

What language is unitysplats written in?

Mainly C#. The stack also includes C#, Unity 6, Direct3D.

What license does unitysplats use?

The license for this package is not specified in the available documentation.

How hard is unitysplats to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is unitysplats for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.