DirectXSplat Brings 3D Gaussian Splat Rendering to Direct3D 12 as an Embeddable C++ Library

Michael Rubloff

Michael Rubloff

Email
Copy Link
Twitter
Linkedin
Reddit
Whatsapp
DirectXSplat

DirectXSplat is a C++/Direct3D 12 library that renders Gaussian Splatting scenes from inside a host D3D12 application. The caller supplies the D3D12 device, direct queue, command list, and submission fence, while the library records its splat passes into that command list and hands back a result. That makes it an integration target for existing Windows renderers and engines rather than a standalone viewer. The first tagged release, v0.1.0, landed May 25, 2026 under an MIT license.

The core dxsplat module loads PLY, SPZ, .splat, and SOG scenes plus LOD metadata, then handles upload, residency management, depth sorting, and frame rendering. Sorting runs on the GPU through the bundled GPUSorting package, which itself carries notices for incorporated radix sort work from AMD’s FidelityFX SDK, NVIDIA’s CUB, and Microsoft’s DirectStorage. HLSL compute and raster shaders live in a separate shaders module, and an appcommon layer of D3D12/Win32 helpers backs the examples without being required to embed the core. The renderer exposes a configuration block covering a residency budget in Gaussians, per frame upload caps, chunk target size, screen radius thresholds for two LOD tiers and culling, and GPU timing.

The frame context’s fence must be the same direct queue fence passed to the D3D12 context, the submission fence value must be a future value rather than an already completed one, and if the render result returns a valid upload sync point the direct queue has to wait on it before executing the command list. There is a defined device lost path. When a render call returns an error with submissionRequired set, work may already be recorded, so the caller must submit and signal or enter cleanup, and a NotifyDeviceLost call exists for failures after recording. Beyond static scenes, the library offers a mutation API, begin a mutation token, then add, update, remove, enable, or rescale individual uploaded chunks, and a GPU resource lease for exporting renderer owned buffers into external GPU work.

Six example targets ship with the repository, from an ImGui-based interactive viewer down to an offscreen capture that renders a scene to a PPM image, plus focused samples for scene updates, resource interop, and host D3D12 integration. CI builds the library, examples, CPU tests, and loader and security regressions, but the maintainer flags that hosted CI does not fully exercise the hardware D3D12 renderer path, so GPU tests need a local D3D12 machine before release. The project is consumed through CMake FetchContent or find_package and targets C++20.

Learn more on the DirectXSplat GitHub.

Featured

Recents

SplatBridge Brings Streamed Gaussian Splats and Splat Colliders to Unity 6

SplatBridge 1.0.4 imports SOG, SPZ and 3DGS PLY into Unity 6, streaming city-scale captures under a fixed GPU budget and baking splats into a MeshCollider.

Michael Rubloff

Sep 10, 2026

SplatBridge Brings Streamed Gaussian Splats and Splat Colliders to Unity 6

SplatBridge 1.0.4 imports SOG, SPZ and 3DGS PLY into Unity 6, streaming city-scale captures under a fixed GPU budget and baking splats into a MeshCollider.

Michael Rubloff

Platforms

NVIDIA NCore v19.6.0 Opens Sensor Model Construction

NVIDIA NCore v19.6.0 replaces its from_parameters static methods with free camera, lidar and external distortion model factories carrying an open registry.

Michael Rubloff

Sep 10, 2026

Platforms

NVIDIA NCore v19.6.0 Opens Sensor Model Construction

NVIDIA NCore v19.6.0 replaces its from_parameters static methods with free camera, lidar and external distortion model factories carrying an open registry.

Michael Rubloff

Platforms

three.js Ships Its Native Gaussian Splat Renderer and Splat Raycasting in r186

three.js r186 ships GaussianSplat, its first native Gaussian splat renderer, adding raycasting, per-mesh frustum culling and view-dependent spherical harmonics.

Michael Rubloff

Sep 9, 2026

Platforms

three.js Ships Its Native Gaussian Splat Renderer and Splat Raycasting in r186

three.js r186 ships GaussianSplat, its first native Gaussian splat renderer, adding raycasting, per-mesh frustum culling and view-dependent spherical harmonics.

Michael Rubloff

Platforms

PlayCanvas Releases SuperSplat 3.0

SuperSplat 3.0 rewrites PlayCanvas's Gaussian splat editor on WebGPU only, removing the WebGL2 path, cutting peak memory, and adding sort-free Stochastic Alpha.

Michael Rubloff

Sep 8, 2026

Platforms

PlayCanvas Releases SuperSplat 3.0

SuperSplat 3.0 rewrites PlayCanvas's Gaussian splat editor on WebGPU only, removing the WebGL2 path, cutting peak memory, and adding sort-free Stochastic Alpha.

Michael Rubloff

Michael Rubloff

Written by Michael Rubloff

Michael is the Founder and Managing Editor of Radiancefields.com

Email
Copy Link
Twitter
Linkedin
Reddit
Whatsapp

More from Michael Rubloff

More from Michael Rubloff

SplatBridge Brings Streamed Gaussian Splats and Splat Colliders to Unity 6

SplatBridge 1.0.4 imports SOG, SPZ and 3DGS PLY into Unity 6, streaming city-scale captures under a fixed GPU budget and baking splats into a MeshCollider.

Michael Rubloff

Sep 10, 2026

SplatBridge

SplatBridge Brings Streamed Gaussian Splats and Splat Colliders to Unity 6

Michael Rubloff

Sep 10, 2026

SplatBridge

SplatBridge Brings Streamed Gaussian Splats and Splat Colliders to Unity 6

SplatBridge 1.0.4 imports SOG, SPZ and 3DGS PLY into Unity 6, streaming city-scale captures under a fixed GPU budget and baking splats into a MeshCollider.

Michael Rubloff

Sep 10, 2026

SplatBridge

Platforms

NVIDIA NCore v19.6.0 Opens Sensor Model Construction

NVIDIA NCore v19.6.0 replaces its from_parameters static methods with free camera, lidar and external distortion model factories carrying an open registry.

Michael Rubloff

Sep 10, 2026

NVIDIA Logo

Platforms

NVIDIA NCore v19.6.0 Opens Sensor Model Construction

Michael Rubloff

Sep 10, 2026

NVIDIA Logo

Platforms

NVIDIA NCore v19.6.0 Opens Sensor Model Construction

NVIDIA NCore v19.6.0 replaces its from_parameters static methods with free camera, lidar and external distortion model factories carrying an open registry.

Michael Rubloff

Sep 10, 2026

NVIDIA Logo

Platforms

three.js Ships Its Native Gaussian Splat Renderer and Splat Raycasting in r186

three.js r186 ships GaussianSplat, its first native Gaussian splat renderer, adding raycasting, per-mesh frustum culling and view-dependent spherical harmonics.

Michael Rubloff

Sep 9, 2026

three.js Gaussian Splatting

Platforms

three.js Ships Its Native Gaussian Splat Renderer and Splat Raycasting in r186

Michael Rubloff

Sep 9, 2026

three.js Gaussian Splatting

Platforms

three.js Ships Its Native Gaussian Splat Renderer and Splat Raycasting in r186

three.js r186 ships GaussianSplat, its first native Gaussian splat renderer, adding raycasting, per-mesh frustum culling and view-dependent spherical harmonics.

Michael Rubloff

Sep 9, 2026

three.js Gaussian Splatting