Most of the Shaders are "ported" from ShaderToy - they each have the author and if you click on that or the ShaderToy S logo then you will see them on ShaderToy. Generally, we can copy and paste the Fragment code from there into a new Shader(w, h, fragment) in ZIM and it will probably work.
Shaders have their own language GLSL and there are two types - Vertex Shaders that work with points and Fragment Shaders that work with the color of the pixels. It is tricky to code - kind of like C but even more careful for performance. So there are tricks to avoid loops and conditionals. So... a whole new world.
We pass information into the shader with Uniforms. They are link changing properties. They need to be declared in the Shader and then we have a ZIM Uniform class to help animate the properties, etc. There are a half dozen default Uniforms that match the ones that ShaderToy provides.
Here is the introduction Bubbling video:
And the mini-site is at ZIM 016 - Shaders - Code Creativity
And the docs are at https://zimjs.com/docs.html?item=Shaders
Also read the introduction to them in the Updates at https://zimjs.com/updates.html.
You are welcome to ask questions here... but I do not know a lot about the actual shader code - but can help with making them work in ZIM.