Introduction
Degenerate is a programmable generative art engine. It is developed on GitHub and deployed on the web at degenerate.computer.
Degenerate operates as a chain of image filters. The output of each filter is
used as the input of the next filter. Degenerate programs configure the state
of the current image filter and call render()
to apply it.
Image filters have a number of properties, including a coordinate transformation, which determines where in the input image pixels will be sampled from; a signed distance field, which determines which of those pixels will be modified; and a color transformation, which determines how those pixels will be modified.
Try copying this example script into the text input field at degenerate.computer:
// Set the scale component of the current coordinate transformation
scale(0.75);
// Use the X signed distance field
x();
// Use a tenth-turn about the green color axis as the color transformation
rotateColor('green', 0.1 * TAU);
// Apply the current image filter
render();
Press the Run
button or Shift + Enter
to run it. Try running it repeatedly
to see the effects of iterated rendering.
For more information about the JavaScript and Rust programming API, see Programming. For more details about how the rendering engine works, see Rendering.
Development
Degenerate is developed on GitHub. If you're interested in contributing, take a look at the codebase, and pop into the Discord for some suggestions for a good first issue.
Suggestions
Experiment, experiment, experiment! Clever combinations of commands craft
charming consequences. Check out and modify some examples by using the
drop-down menu in the upper right corner of the page. Try changing the filter
and rendering in a loop, or just mash Shift + Enter
over and over again to
see what happens.
Saving your creations
// Make the resolution nice and big
resolution(4096);
// Render something cool
x();
render();
// Save it
save();
Learning JavaScript
An introduction to JavaScript is outside of the scope of this document. The reader is referred to the excellent Mozilla Developer Network introduction to JavaScript, JavaScript tutorial. and JavaScript reference.
Learning Rust
An introduction to Rust is outside of the scope of this document. The reader is referred to the excellent Rust Book.