/

metalsplat

metalsplat is a differentiable 3D Gaussian Splatting rasterizer for PyTorch on Apple Metal and MPS.

Platform

Python package for PyTorch on Apple silicon Macs, using the MPS backend

GPU

None published. The kernels are Metal Shading Language and compile at runtime through torch.mps.compile_shader, so an Apple silicon GPU reachable by the PyTorch MPS backend is required and no CUDA device is used

Pricing

Free

License

MIT

Compare licence terms ↗

Best for

Training and researching Gaussian Splatting on Apple silicon

Updated

July 2026

metalsplat is a differentiable 3D Gaussian Splatting rasterizer that runs inside PyTorch on Apple Metal through the MPS backend. It is published under the MIT licence by the developer tchauffi and written in Python around hand written Metal Shading Language kernels covering projection, rasterization and spherical harmonics evaluation.

Those kernels compile at runtime through torch.mps.compile_shader, which removes the Xcode metal toolchain and the native build step that an Apple GPU extension would normally require. Installation is a Python install rather than a compilation, and the gradients flow back through the rasterizer the same way a CUDA rasterizer would feed an optimizer.

Version 0.2.0 added a full 2D Gaussian Splatting pipeline alongside the 3D one. It implements the surfel formulation with exact ray to disk intersection, produces differentiable depth, normal and distortion maps, carries both of the 2DGS regularizers, and exports .ply files matching the layout of the 2DGS reference implementation.

The project is early. Two versions have been tagged, v0.1.0 and v0.2.0. Mesh extraction and TSDF fusion are named in the repository as not implemented, and multi camera batching, depth supervision and lens distortion are declared out of scope rather than pending.

The name is a collision worth stating plainly. metalsplat is not MetalSplatter, the Swift and Metal viewer from scier that renders splats on iOS, macOS and visionOS and holds its own page here. It is also distinct from msplat, msplat-ios and metal-gauss, three further Apple flavoured splatting repositories from different authors. The metalsplat README sets its heading as MetalSplat, one character from MetalSplatter, while the repository, the package and every import are lowercase. MetalSplatter draws finished splats and metalsplat trains them.

Frequently Asked Questions

What is metalsplat?

metalsplat is an MIT licensed differentiable 3D Gaussian Splatting rasterizer for PyTorch that runs on Apple Metal through the MPS backend, so training happens on an Apple silicon GPU rather than on CUDA.

Is metalsplat the same thing as MetalSplatter?

metalsplat and MetalSplatter are unrelated projects by different authors. MetalSplatter is a Swift and Metal viewer for iOS, macOS and visionOS, while metalsplat is a Python and PyTorch rasterizer used for training.

Does metalsplat need Xcode or a native build?

metalsplat needs neither. Its Metal Shading Language kernels compile at runtime through torch.mps.compile_shader, so there is no Xcode metal toolchain step and no native extension to build.

Does metalsplat support 2D Gaussian Splatting?

metalsplat added a 2DGS pipeline in version 0.2.0, covering the surfel formulation with exact ray to disk intersection, differentiable depth, normal and distortion maps, both 2DGS regularizers and .ply export matching the 2DGS reference layout.

What does metalsplat not do?

metalsplat has no mesh extraction and no TSDF fusion, and multi camera batching, depth supervision and lens distortion are stated as out of scope.

Alternatives