meshoptimizer 1.0 released
09 Dec 2025A short post today. If you’re following me on any of the vast array of social accounts then you’re probably aware, but if you’re reading this blog through the ancient technology otherwise known as RSS, meshoptimizer v1.0 has been released yesterday!
In addition to the usual release notes on GitHub, I’ve also written a dedicated announcement that talks a little more about the last couple years of progress. If you’re interested in graphics programming, you might find it interesting:
It’s a little strange to look back and think that it has been nine whole years since the library was originally created. The scope and quality have grown substantially since then, and what started as a small hobby project has slowly turned into an important technology used across the industry. The first release, confusingly numbered 0.5, was just under 1400 lines of code and had a fraction of the functionality that v1.0 provides today1. I think “0.5” referred to the fact that parts of the code were salvaged from my toy engines I’d developed over the years and as such were somewhat well tested. I assume that what I was thinking at the time is that a few more improvements and a couple versions later and the library can reach 1.0!
What happened instead is a deep rabbit hole of algorithms, hardware details, inventions and new use cases. I’ve written about some of these on this blog, although it’s always been a tradeoff that’s difficult to navigate - do I write more code, or do I write more text about the code? Here’s some of the articles published on the internals over the years:
- Optimal grid rendering isn’t optimal (2017)
- Small, fast, web (2019)
- Learning from data (2020)
- VPEXPANDB on NEON with Z3 (2022)
- Efficient jagged arrays (2023)
- Meshlet triangle locality matters (2024)
- Load-store conflicts (2025)
- Billions of triangles in minutes (2025)
These only really cover a small portion of the research and work that went into the library. Perhaps someday I’ll write more; it might be interesting to do something special for the 10th anniversary.
As always, feel free to drop me a note if you are using meshoptimizer or have ideas and suggestions for future versions. As I write in the full post linked above, v1.0 is an important milestone, but also 1.0 is just a number.
We continue.
-
Ironically, because the initial version heavily relied on STL, compiling v1.0 - which has ten times as much source code - takes almost as much time in debug (1.1s vs 0.85s) and only twice as long in release (2.2s vs 1.1s). ↩
| « Billions of triangles in minutes |