Procedural shading languages are very powerful. With a relatively small program you can create extremely beautiful and subtle animated textures.
But that very power comes with a price: Because the resulting code is so compact, it can be difficult for somebody else to understand what you have written.
I’m thinking it would be useful to “unpack” such programs, so that people can understand how they really work. For example, the bubble below can be described in just a few dozen lines of shader code (plus another few dozen lines for my standard noise and turbulence functions).
If you click on the image, you can see the bubble as a real time procedural animation, together with the shader program that makes it work. That program is very short, but it’s also really difficult to understand.
I’m thinking that I might try to create a step-by-step version of the process of creation. As you click through the steps, the shader program, and the corresponding result, will progress from very simple (just a few lines of code at first) to the final result.
At each step, the result will get a little more interesting. And at each step I can annotate exactly what has changed in the program to cause the visual improvement from the previous step.
Hopefully, if I design these steps carefully, every piece of the shader program will end up making sense. Then maybe some people will start to create their own animated bubbles!