Loved the intro but that code sample could've used proper variable names.
Otherwise quite hard to visualize changes in you head.
I’ve pushed an update to the post with more implementation details, and I also cleaned up the shader code to make it easier to read/follow. If anything’s still unclear, feel free to comment on the post and I’ll try to clarify.