There are a lot of things happening under the hood: I wrote a runtime type system in TS that generates both shader code and a UI, allowing me to quickly iterate on new features and experiment easily. The renderer is based on regl (https://regl-project.github.io/). I've adapted regl to support WebGL2. I tried to use a functional, declarative approach, where input data is transformed into draw calls. I'm using my own custom cache system that smartly tries to cache assets (like images and geometry data) between draw calls.
I'm curious what you think of it! Let me know in the comments if you have ideas for more features, fractals, etc. I'd also love to know if you encounter any bugs!
Here is a blog post that I made, describing the features and underlaying math in layman terms: https://blog.repper.app/introducing-repper-labs/
Oh, and no vibe coding in this project! All code was artisanally crafted.