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.

Michael Rubloff

Written by Michael Rubloff

Michael is the Founder and Managing Editor of Radiancefields.com

Email
Copy Link
Twitter
Linkedin
Reddit
Whatsapp