Manim, rewritten in Rust + wgpu, now 90x faster
TL;DR: We are open sourcing ManimGX, a blazingly fast Rust + wgpu animation engine with a Manim compatible API. Install with pip install manimgx.
Hi everyone, after ~7-8 months of work, we are finally launching ManimGX, our from scratch Manim reimplementation in Rust + wgpu.
The GitHub repository: https://github.com/academa-labs/manimgx
For anyone unfamiliar with Manim, it's the Python animation tool originally created by Grant Sanderson for his 3Blue1Brown videos. ManimGX is a from scratch implementation targeting ManimCE's API, with a Rust renderer built on wgpu. You can install it with pip install manimgx.
The motivation is the same as before: waiting for renders makes polishing an animation a slow process. We wanted to make that loop faster while keeping the familiar Python API.
A few details about the implementation that might interest people here:
- Rust + wgpu for rendering, with PyO3 + maturin for Python bindings and packaging.
- The same renderer runs in the browser through WebAssembly and WebGPU, with Python running through Pyodide.
- Typst for text and math, with mitex translating LaTeX input.
- Geometry passes from Python to Rust as packed arrays and is reused across frames.
- Native video export uses x264 directly, without an FFmpeg subprocess.
It only requires Python 3.13+. Fonts, typesetting, and video encoding are included, so there is no separate FFmpeg or LaTeX installation either.
Most ManimCE code runs after changing the import from manim to manimgx, with differences documented in the migration guide. The documentation includes a gallery of examples with their Python source: https://manimgx.academa.ai
Credit to Grant Sanderson, the Manim Community contributors, whose work this builds on. Happy to answer questions about the implementation. We'd especially appreciate feedback from people working with Rust graphics or WebAssembly, and from anyone trying it with their existing Manim scenes.