Thibaut Chauffier has released MetalSplat v0.3.0, an MIT licensed differentiable rasterizer for training Gaussian splats on Apple Silicon.
MetalSplat follows the architecture of gsplat, which the nerfstudio team introduced in 2023, with hand written Metal compute kernels standing in for its CUDA kernels on the PyTorch MPS backend. The kernels are Metal Shading Language source compiled at runtime through torch.mps.compile_shader, so there is no Xcode toolchain or native build step. On the Mac, OpenSplat added MPS acceleration to its trainer in 2024. MetalSplat stays inside Python, exposing GaussianModel, Camera, and render as a differentiable API, and every Metal stage has a pure PyTorch twin that the tests use as the gradient oracle.
The 3DGS pipeline supports spherical harmonics up to degree 3, the Mip-Splatting 3D filter, AbsGS style densification, SparseAdam, COLMAP loading through pycolmap, and standard PLY import and export. Version 0.2.0 added a parallel 2DGS pipeline, Gaussian2DModel and render_2dgs, which intersects each pixel's ray with the flat splat exactly and outputs differentiable depth and normals, trained with depth distortion and normal consistency regularizers.
MetalSplat v0.3.0 consists of a single merged pull request that fixes bugs Chauffier found in two reviews of the codebase and aligns training with the reference 3DGS, Mip-Splatting, and 2DGS implementations. Opacity resets had kept stale Adam moments, which let densification cull about 76% of a 2DGS model, and the 3D filter was about 2.2x too narrow. On the garden scene at 4,000 steps, held out PSNR for 2DGS rose from 22.79 to 24.06 dB, a gain Chauffier says is mostly recovery from the opacity reset collapse. The 3DGS figure rose to 24.05 dB from a 21.84 dB baseline that Chauffier calls approximate because it comes from an older log. 2DGS rendering dropped from 14.1 to 6.9 ms per view, and the test suite grew from 251 to 321 tests.
Only undistorted PINHOLE and SIMPLE_PINHOLE cameras are supported, and the 2DGS pipeline does not yet extract meshes. MetalSplat is a separate project from MetalSplatter, Sean Cier's Swift and Metal splat renderer for iOS, macOS and visionOS.
It is available now on GitHub.




