Releases: zacsmms/mpsplat
v0.1.0 — initial public 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 Transformpanel (up-axis / yaw / pitch / roll) and a--decimateflag for fluid orbiting - Top-level
QUICKSTART.mdwalks 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.