Arseny Kapoulkine

Arseny Kapoulkine

@zeux.io

Independent. Previously: TF@Roblox meshoptimizer, pugixml, volk, calm, niagara, qgrep, Luau https://github.com/zeux https://zeux.io

1.5K followers68 following285 posts

Pinned

meshoptimizer 1.3 is out! Featuring a new voxel remesher, support for normal generation, several simplification improvements and various optimizations and fixes. GitHub stars and reposts appreciated! meshoptimizer was started 10 years ago; excited for the years to come! github.com/zeux/meshopt...

meshoptimizer 1.3 is out! Featuring a new voxel remesher, support for normal generation, several simplification improvements and various optimizations and fixes. GitHub stars and reposts appreciated! meshoptimizer was started 10 years ago; excited for the years to come! github.com/zeux/meshopt...

Remesher has an online demo; I use it for development and testing so I haven't spent much time on polish :) This is a remesh -> simplify -> unwrap -> retexture pipeline mentioned in the release, unwrapping powered by xatlas and retexture powered by three-mesh-bvh ❤️ meshoptimizer.org/demo/remesh....

meshoptimizer turns 10 today! This blindsided me a little bit; I thought it would be later this year. So I don't have an anniversary release or post ready; I'm on a tail end of a few neat improvements that need a bit more time to work on or write about. Time flies!

Funny/strange fact that I forgot about: meshoptimizer was initially going to be 1.0 from the get go! I changed the version number to 0.5 right before release. The header was still C++ back then. The "real" 1.0 was released in December 2025, more than 8 years later :)

meshoptimizer 1.2 is out! Featuring support for tangent generation, a significantly faster vertex decoder for Intel/AMD CPUs, several new smaller algorithms (cluster position compression, triangle filtering, clusterlod BVH) and more. GitHub stars and boosts appreciated! github.com/zeux/meshopt...

Arseny Kapoulkine reposted

Replying to @superluminal.eu

We're finally bringing our powerful and user friendly CPU profiler to Linux! The beta version is now publically available, and it's free for 60 days during the open beta, so there's really no excuse not to try it out! Just download, extract, optimize. superluminal.eu/applications...

superluminal.euSuperluminal For Linux | Fast Profiling Without The ChallengesNo pages of installation guides. No Gigabytes to download and install. Just unzip, run and focus on performance issues. It Just Works™.

New blog post! In "Zigzag decoding with AVX-512", we look at two different ways to possibly (caveat emptor) speed up various forms of zigzag decoding with AVX-512 functionality that isn't just "wider registers"! zeux.io/2026/06/17/z...

zeux.ioZigzag decoding with AVX-512I’ve been working on speeding up AVX-512 vertex decoding in meshoptimizer recently; in the process I stumbled upon two optimizations that I did not end up using but I thought they might be fun to writ...

pugixml 1.16 is out! It's a nice release, but also it's the 20th anniversary release, so I wrote a few words on the history in the release notes :) but also it's a well rounded release by itself, with bug fixes, performance improvements and a couple tiny features. github.com/zeux/pugixml...

github.comRelease v1.16 · zeux/pugixmlpugixml-1.16 is out. This is an anniversary release: pugixml turns 20 this year! In early 2006, I was evaluating existing XML parsers to parse large COLLADA files quickly and nothing fit the bill; ...

A list of experimental meshoptimizer APIs. When 1.0 was released in December last year, the only experimental API was marked with the green checkmark.

While volk always tracks the latest Vulkan version (I've automated myself), I occasionally tag new numbered versions and today is such a day! New release 1.4.350 features a number of small improvements for various edge cases as long as all the new extensions you may want. github.com/zeux/volk/re...

github.comRelease 1.4.350 · zeux/volkA periodic tagged release of volk, matching Vulkan 1.4.350. New extensions: VK_EXT_descriptor_heap 🎉 VK_ARM_data_graph, VK_ARM_data_graph_optical_flow, VK_ARM_performance_counters_by_region, VK_AR...

New blog post! In "Quantizing tangent frames", we look at various established methods to represent tangent frames in the vertex data, squeeze a few variants into 32 bits per vertex and look at the resulting precision. zeux.io/2026/04/30/q... Share, like and subscribe!

zeux.ioQuantizing tangent framesI’ve been working on tangent space generation recently, and also pondering the tradeoffs between QTangent and normal-angle storage. So when, in a completely unrelated discussion, someone said “you cou...

meshoptimizer 1.1 is out! github.com/zeux/meshopt... Featuring two new major features, meshlet topology compression and opacity micromaps, as well as a few smaller features and improvements! More information in the infographic and release above :) Boosts and repository stars are welcome!

Because of recent developments I also feel compelled to add: the features in the new release were written by my own damn hands (... and a keyboard). The infographic took me 3 hours in Canva yesterday. It's been a busy 4 months.

If you’re in SF the week of GDC and would like to get coffee and chat about game technology, email me! I probably won’t be at GDC proper but will be around.

Yesterday on stream we've sketched out most of the support code for descriptor heaps. If you want to see the rest of the owl, I've committed the remaining pieces after the stream. For now all of the previous descriptor code is still required to support production drivers. github.com/zeux/niagara...

github.comComparing f25b318a924a70ad98cb43bd6bbd5b1dd04c7780...8cf95feee3e7f37b2864795dbcbbf0acc375860c · zeux/niagaraA Vulkan renderer written from scratch on stream. Contribute to zeux/niagara development by creating an account on GitHub.

I wish there was a clean way to provide shader code that works across the multitude of shading languages; this works in Metal and should work in GLSL/Slang/et al but having to write this code five times would not be ideal…

Tried using Slang. It can output working MSL but regresses Metal decoding performance by a few %. The output shader isn’t very readable so not sure where the regression is atm. Might just add CUDA code as an example and whoever needs this can get their LLM of choice to translate directly :-/

The fact that the entire industry is now wasting time working on, integrating, analyzing, reviewing, and commenting on frame generation is so sad. Surely there are actually productive things we all can be doing instead.

One more thing! A few weeks ago I wrote a post that aggregates various articles I have written on meshoptimizer over the years: zeux.io/2025/12/09/m... If you’re looking for some reading to do over the break, consider revisiting these.

zeux.iomeshoptimizer 1.0 releasedA 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...

Also the stream from yesterday is up on YouTube if you missed it. And with that, I plan to do absolutely nothing productive during what little remains of this year. See you in 2026!

Half resolution is when you cut width and height in half, and get at best half of your rendering time back, since rarely if ever do things scale perfectly with pixel count.

Do I know anyone in Poland who will be there next week and wants to get tea or whatever people drink there and chat? Schedule not too flexible but I might be in the right city at the right time :) DM me!