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