Per Vognsen

@pervognsen
2.5K Followers
357 Following
10K Posts
I like programming and understanding how stuff works. My background is in systems programming and game development.

meshoptimizer 1.1 is out!

Featuring two new major features, meshlet topology compression and opacity micromaps, as well as a few smaller features and improvements, it's a big release! Meshlet codec is heavily optimized for CPU decompression and output can be compressed further with Zstandard; opacity micromap rasterizer outputs hardware ready data representation and is fast and easy to integrate.

Boosts and repository stars are welcome! Like and subscribe!

https://github.com/zeux/meshoptimizer/releases/tag/v1.1

Hey there retrocoding friends. Indirectly prodded by @pervognsen I decided to dig out my old GBA stuff and then try to put together a quick "platform guide" for my blog: a round up of resources and resource hubs, along with just enough information to get bare-metal dev off the ground and clear away any toolchain nonsense.

Here's what I have so far, but I bet there are some GBA devs out there who can help me expand it. Any takers?

https://bumbershootsoft.wordpress.com/platform-guide-game-boy-advance/

#retrocomputing #gba #gbadev

Platform Guide: Game Boy Advance

Last updated: 28 Mar 2026 The Game Boy Advance is an anomaly for this collection: it was released in the 21st century and was contemporaneous with the GameCube, PlayStation 2, and the original Xbox…

Bumbershoot Software
I misspelled canonicalize as canonize in some code and now I feel like the pope.

Here's the Shadertoy where you can paint eroded mountains and islands with your mouse, right in the browser:
https://www.shadertoy.com/view/sf23W1

#ProcGen #vfx #GameDev

My erosion filter is out! Video, blog post, and shader source.

It emulates erosion without simulation, so it's fast, GPU friendly, and trivial to generate in chunks.

Explainer video:
https://www.youtube.com/watch?v=r4V21_uUK8Y

Companion blog post:
https://blog.runevision.com/2026/03/fast-and-gorgeous-erosion-filter.html

#ProcGen #vfx #GameDev

That is, it's technically UB if node->next == node + 1 and node and node->next are from different allocations and are only "accidentally" adjacent in the address space. I think the provenance-legal workarounds involve either inline assembly or exposed provenance which in the proposed change to the C standard requires ptr-int-ptr casts: https://gustedt.wordpress.com/2025/06/30/the-provenance-memory-model-for-c/.
The provenance memory model for C

[The wordpress markdown inclusion does a very bad job, it seems, there have been some idiotic formatting errors. I hope that these are fixed, now.] A years-long effort led by Kayvan Memarian and Pe…

Jens Gustedt's Blog
Now that pointer provenance is ingrained into my thinking, I realize that the code I posted some years ago as an example and which was written up by @francesco in https://mazzo.li/posts/value-speculation.html has provenance-related UB unless the nodes satisfying node->next == node + 1 come from the same allocation (e.g. from an arena block allocation).
Beating the L1 cache with value speculation

I'm occasionally tempted to do a homebrew computer vision project to figure out how frequently the geckos manage to get into and out of the sink on their own. My rule of thumb is that I never help a gecko the first time I see it in the sink, but if I come back an hour or two later and it's still there, it gets an assist.
There's a particularly fat house gecko I have to help out of the kitchen sink pretty much every day. At this point I feel like I'm interfering in the process of natural selection.
Andreas Abel added latency, throughput, and port usage data for Emerald Rapids, Meteor Lake, Arrow Lake, and Zen 5 to https://uops.info/table.html 🎉
uops.info - Table