Skip to content

v0.1.0 — initial public release

Latest

Choose a tag to compare

@zacsmms zacsmms released this 01 May 23:26
· 12 commits to main since this release

mpsplat — a Mac (Apple Silicon / MPS) port of gsplat by Kanazawa AI Research (KAIR).

This is the first public release. Train and view 3D Gaussian Splats end-to-end on an M-series Mac, no CUDA required.

What's in it

Native Metal kernels (compiled at runtime via torch.mps.compile_shader):

  • 3DGS rasterizer (forward + backward)
  • Tile intersection
  • 3DGS EWA projection (forward + backward)
  • Spherical harmonics (forward + backward)
  • 2DGS rasterizer (forward + backward)
  • 2DGS projection (forward; backward via torch autograd)
  • 3DGUT UT projection — pinhole, OpenCV-pinhole-distorted, OpenCV-fisheye
  • 3DGUT eval3d rasterizer (forward + backward) — pinhole, OpenCV-fisheye

Pure-PyTorch fallbacks (work, just not as fast):

  • ftheta camera model
  • Rolling-shutter pose interpolation
  • OpenCV pinhole-distorted eval3d
  • Multi-channel eval3d (CDIM != 3)
  • packed mode in the 2DGS / eval3d rasterizers

Capture-to-viewer pipeline:

  • COLMAP-based dataset parser
  • 3DGS / 2DGS / 3DGUT trainers ported to MPS
  • viser-based browser viewers with a Scene Transform panel (up-axis / yaw / pitch / roll) and a --decimate flag for fluid orbiting
  • Top-level QUICKSTART.md walks through phone footage → splat → viewer in 5 steps

Status

35 MPS pytest tests pass, 27 legacy CUDA-only tests skip cleanly. End-to-end image fitting on a small synthetic problem runs ~166× faster than the pure-PyTorch baseline. Real-scene training is roughly 5–15× faster than pure-PyTorch on the same Mac.

Install

brew install uv ffmpeg colmap
git clone https://github.com/zacsmms/mpsplat.git
cd mpsplat
uv venv --python 3.13
uv pip install --python .venv/bin/python -e .
uv pip install --python .venv/bin/python -r examples/requirements.txt
uv pip install --python .venv/bin/python "imageio[ffmpeg]"

See QUICKSTART.md for the full walk-through (capture → COLMAP → train → view).

Credit

mpsplat is a fork. The math, the algorithms, the training strategies, the densification heuristics, the tests, the examples — all of those are gsplat's. This fork only owns the MPS-specific Metal kernels and the path-rewiring needed to make the same library run on device="mps". If you publish work that uses mpsplat, please cite the upstream gsplat paper (full bibtex in the repo README).

License

Apache-2.0, same as upstream.