Vector and raster nodes

I've found that unless you're working strictly with photographs vector tools are indispensable in creating imagery because they can quickly create the skeleton, then you can use raster tools to add realism. Because I view the vector tools as the skeleton I thought it was most important to focus on those first. It's also where I thought there was the most room for innovation.

Currently Exothermic supports two main node graph types, vector, and raster. Vector graphs keep all data as a vector, even after compositing all the layers. These graphs can be exported to other vector formats such as SVG. Raster graphs store their data in pixels. All the vector tools also work in the raster space and vector graphs can even be instanced within rasters. When vectors are used in raster graphs they are maintained as a vector for as long as possible, usually up until the layer is composited with the other raster layers, but they can also be converted at any time to raster if you want to apply raster effects such as blurring. This is all handled automatically whenever possible.

Variables

The intent behind variables goes back to how I'm treating vector graphics as the skeleton that the raster graphics are built on top of. You can think of variables as the muscles and nerves that can bring the skelton to life. Data can be attached to any component of a vector: points, spans, segments and paths. Internally I use variables to control the thickness and offset of the stroke, and the fill color of the closed paths, but users can add variables for anything. You could potentially use variables to control the amount rust so that it only appears on the bottom edges of a shape. You could use it to control how leaves appear on tree branches. For character, animation variables could be used to add weights to how a skin outline is deformed by underlying bones. Currently, 2D graphics are pretty dumb, I'm trying to make them smarter by adding more information that can open the door to some exciting features.