Skip to content

Unshape ​

Constructive media generation in Rust.

Status: Potentially Mature ●

Covers 13+ media generation domains (meshes, audio, textures, noise, physics, fluid sim, animation, voxels, point clouds), with comprehensive documentation and an extensive test suite. Production-grade for offline generation; GPU compute backend partially designed but not yet integrated.

Unshape provides composable primitives for procedural generation of meshes, audio, textures, vector graphics, and skeletal animation.

Domains ​

DomainCratesCapabilities
3D Geometrymesh, gltf, pointcloud, voxel, spline, curve, surfacePrimitives, booleans, subdivision, LOD, NURBS
Audioaudio, spectralFM/wavetable/granular synthesis, FFT, 3D HRTF, time-stretch
2D VectorvectorSVG paths, bezier, boolean ops, gradients, hatching
Imageimage, colorConvolution, color grading, normal maps, pyramids
Animationrig, motion, motion-fn, easingSkeleton IK, motion graphics, 31 easing functions
Physicsphysics, spring, particle, fluidRigid/soft body, cloth, SPH fluids
Procgennoise, automata, procgen, lsystem, rd, space-colonizationNoise, WFC, mazes, L-systems, reaction-diffusion
Corecore, op, field, geometry, transform, spatialNode graphs, lazy fields, 9 spatial structures

Philosophy ​

Unshape treats media as data structures that can be composed, transformed, and evaluated lazily. Rather than imperative drawing commands, you build up descriptions that are rendered on demand.

Ops as values - Every operation is a serializable struct first, enabling project files, undo/redo, and node graphs.

  • Dew - Expression language for shader and procedural expressions