Available at palmdrop.github.io/substrates
An experimental project for creating dynamic noise effects. Visual programming on the web. A more general solution to my previous Surfaces projects.
I got tired of manually editing code to achieve various noise and domain warping effects, and although it would probably have been faster and easier to learn to use software such as Touch Designer, I liked the idea of building a tool of my own, specifically designed for the noise and domain warping effects I love to play around with.
The project is unfinished and occasionally buggy, and will probably remain that way for a long time. But hopefully, after some time of sporadic work, I'll solve all the issues, and add all the missing functionality.
The application uses a visual programming language, where the only real requirement is to feed the OUTPUT node with a color. The color value will be evaluated for each pixel in the viewport.
Use the program by dragging nodes from the palette side panel. I suggest you start with the generator nodes. These nodes usually output a floating point value. Connect this output value to the hsv to rgb node (found in the color dropdown), and the output of the hsv to rgb node to the OUTPUT node color value. You should at this point see something on the screen.
When a node is selected, you can change the parameters in the left sidebar. If no node is selected, this will default to the OUTPUT node settings.
These are the different node types:
A note on warp nodes: A warp node outputs a 3-dimensional vector (a point in 3D space). Each generator and input node optionally takes a point argument. This argument is used to determine which point in space to sample. Input the warp output here. If the point argument is omitted, it will default to a position determined based on the pixel coordinate. 
H - Hide/show the nodes.C - Center the nodes.F - Tries to fit the nodes into the available screen space.CTRL-Z - Undo the last action.S - Save the current node setup.P - Capture the current frame.DELETE - Delete the selected node (OUTPUT node cannot be deleted).My personal backlog. Items in no particular priority order.
InterfaceRenderer and InterfaceController to be more modular. It's difficult and messy to add/change things at the moment.:computer: Website
:mailbox_with_mail: Email
:camera: Instagram