MetalSplat v0.3.0 Trains 3DGS and 2DGS on Apple Silicon

MetalSplat v0.3.0 trains 3D and 2D Gaussian splatting on Apple Silicon through PyTorch and hand-written Metal kernels, and aligns training with reference code.

MetalSplat v0.3.0 trains 3D and 2D Gaussian splatting on Apple Silicon through PyTorch and hand-written Metal kernels, and aligns training with reference code.

Michael Rubloff

Michael Rubloff

Michael is the Founder and Managing Editor of Radiancefields.com

Miris

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.

Featured

Recents

Platforms

360 Gaussian Pro 1.1.0 Adds Denser Alignment and GPS EXIF

360 Gaussian Pro 1.1.0 keeps two-view points for denser COLMAP alignment and writes focal length and GPS positions into EXIF for RealityScan and Metashape.

Michael Rubloff

Sep 30, 2026

Platforms

360 Gaussian Pro 1.1.0 Adds Denser Alignment and GPS EXIF

360 Gaussian Pro 1.1.0 keeps two-view points for denser COLMAP alignment and writes focal length and GPS positions into EXIF for RealityScan and Metashape.

Michael Rubloff

Platforms

Spirula Studio v2026.9.30 Trains Large Scenes in Parts and Merges Them

Spirula Studio v2026.9.30 splits large reconstructions into parts that train separately and merge, and adds text-prompted SAM 2.1 masking and VRAM forecasting.

Michael Rubloff

Sep 30, 2026

Platforms

Spirula Studio v2026.9.30 Trains Large Scenes in Parts and Merges Them

Spirula Studio v2026.9.30 splits large reconstructions into parts that train separately and merge, and adds text-prompted SAM 2.1 masking and VRAM forecasting.

Michael Rubloff

Platforms

Spark v2.3.0 Fixes On-Demand Rendering for Paged LoD

Spark v2.3.0 fixes on-demand rendering for paged LoD Gaussian splats, adds credentialed and custom-header loading, and lets writeSpz export ExtSplats to SPZ.

Michael Rubloff

Sep 30, 2026

Platforms

Spark v2.3.0 Fixes On-Demand Rendering for Paged LoD

Spark v2.3.0 fixes on-demand rendering for paged LoD Gaussian splats, adds credentialed and custom-header loading, and lets writeSpz export ExtSplats to SPZ.

Michael Rubloff

Platforms

ColmapView v0.15 Publishes COLMAP and Gaussian Splat Projects to Hugging Face in One Click

ColmapView v0.15 adds one-click publishing of COLMAP and Gaussian splat projects to Hugging Face and loads PlayCanvas SOG splat bundles through Spark.

Michael Rubloff

Sep 30, 2026

Platforms

ColmapView v0.15 Publishes COLMAP and Gaussian Splat Projects to Hugging Face in One Click

ColmapView v0.15 adds one-click publishing of COLMAP and Gaussian splat projects to Hugging Face and loads PlayCanvas SOG splat bundles through Spark.

Michael Rubloff

Michael Rubloff

Written by Michael Rubloff

Michael is the Founder and Managing Editor of Radiancefields.com

More from Michael Rubloff

More from Michael Rubloff

Platforms

360 Gaussian Pro 1.1.0 Adds Denser Alignment and GPS EXIF

360 Gaussian Pro 1.1.0 keeps two-view points for denser COLMAP alignment and writes focal length and GPS positions into EXIF for RealityScan and Metashape.

Michael Rubloff

Sep 30, 2026

360 Gaussian Pro

Platforms

360 Gaussian Pro 1.1.0 Adds Denser Alignment and GPS EXIF

Michael Rubloff

Sep 30, 2026

360 Gaussian Pro

Platforms

360 Gaussian Pro 1.1.0 Adds Denser Alignment and GPS EXIF

360 Gaussian Pro 1.1.0 keeps two-view points for denser COLMAP alignment and writes focal length and GPS positions into EXIF for RealityScan and Metashape.

Michael Rubloff

Sep 30, 2026

360 Gaussian Pro

Platforms

Spirula Studio v2026.9.30 Trains Large Scenes in Parts and Merges Them

Spirula Studio v2026.9.30 splits large reconstructions into parts that train separately and merge, and adds text-prompted SAM 2.1 masking and VRAM forecasting.

Michael Rubloff

Sep 30, 2026

Spirula Studio

Platforms

Spirula Studio v2026.9.30 Trains Large Scenes in Parts and Merges Them

Michael Rubloff

Sep 30, 2026

Spirula Studio

Platforms

Spirula Studio v2026.9.30 Trains Large Scenes in Parts and Merges Them

Spirula Studio v2026.9.30 splits large reconstructions into parts that train separately and merge, and adds text-prompted SAM 2.1 masking and VRAM forecasting.

Michael Rubloff

Sep 30, 2026

Spirula Studio

Platforms

Spark v2.3.0 Fixes On-Demand Rendering for Paged LoD

Spark v2.3.0 fixes on-demand rendering for paged LoD Gaussian splats, adds credentialed and custom-header loading, and lets writeSpz export ExtSplats to SPZ.

Michael Rubloff

Sep 30, 2026

Spark.js

Platforms

Spark v2.3.0 Fixes On-Demand Rendering for Paged LoD

Michael Rubloff

Sep 30, 2026

Spark.js

Platforms

Spark v2.3.0 Fixes On-Demand Rendering for Paged LoD

Spark v2.3.0 fixes on-demand rendering for paged LoD Gaussian splats, adds credentialed and custom-header loading, and lets writeSpz export ExtSplats to SPZ.

Michael Rubloff

Sep 30, 2026

Spark.js

New to Gaussian Splatting? Start here

Radiance fields, explained from the ground up: what a Gaussian splat is, how to capture one, and which tools and gear to start with.

Newsletter

Keep up with the field.

New research, tools and captures from the Radiance Fields newsroom, in your inbox. Free, no spam.