The shader node catalogue. One graph drives 2D, three.js, and the C++ engine.
Input
Where a graph starts. These nodes read something from outside — the position of the pixel being shaded, the timeline clock, a texture you supplied, a plain number you typed. Every graph begins with at least one of them, because nothing downstream has anything to work on otherwise.
Motion
The category a node set inherited from 3D surfacing does not have, and the one that matters most in a motion tool. Oscillators, seeded noise over time, springs, easing curves, staggered delays. Every one is a pure function of the timeline clock and never of a wall clock, which is why a graph scrubs and exports identically.
Shape
Signed distance fields for the primitives you would otherwise draw by hand. A shape node returns distance rather than colour, so you can grow it, outline it, round it, and combine it with another shape smoothly — things a rasterised shape cannot do.
Texture
Procedural patterns evaluated per pixel: noise, gradients, cells, stripes. Because they are functions rather than images, they stay sharp at any resolution and can be layered without a bake between levels.
Noise
Fractal noise. Value is cheapest, Perlin has no axis bias, Simplex is cleanest on a triangular lattice.
Cellular
Cellular texture. F1 gives cells, F2−F1 gives the cracks between them, and the cell id gives flat random tiles for shatter looks.
Multifractal Noise
Multifractal noise. Unlike fBm the octave amplitude depends on the value so far, giving smooth valleys with rough peaks — the classic terrain generator.
Waves
Bands or rings with optional noise distortion — wood grain, marble veining, ripples.
Checker
Two-colour checkerboard. The standard UV-distortion test pattern.
Bricks
Offset running-bond rows with mortar gaps and per-brick colour variation.
Gradient
The ramp shapes: linear, radial, spherical, diagonal and their eased variants.
Sine Interference
Iterated sine distortion — psychedelic banding that is hard to get any other way.
White Noise
Uncorrelated per-point random. Film grain, dithering, and seeding randomness per cell.
Dot / Halftone
Regular dot grid with adjustable radius and softness — halftone printing, perforations, LED panels.
Weave
Over-under warp and weft — fabric, baskets, carbon fibre.
Maze Tiles
Randomly rotated quarter-arc tiles that connect into endless maze-like paths. A pattern no raster tool ships.
Hex Grid
Hexagonal tiling with per-cell random id — honeycomb, sci-fi panels, shield effects.
Scratches
Directional streaks for wear, brushed metal and grime — standard in dedicated texturing tools, absent from most 3D packages.
Image Texture
Sample a bitmap. The one node that is not procedural, and the bridge for scanned or painted maps.
Distort
Nodes that move sample coordinates rather than colours. Feed a texture through a warp and the pattern bends; feed a shape through it and the outline ripples. This is the family that stops procedural work looking mechanical.
Color
Adjustment and mixing. Ramps, blends, corrections, colour-space moves. Most graphs end with two or three of these shaping whatever the generators produced.
Vector
Maths on 2- and 3-component values — building them, splitting them, transforming them. Unglamorous and constantly needed, because half of graph work is getting a coordinate into the right space.
Converter
Scalar maths and plumbing: arithmetic, clamping, remapping, comparison. The nodes you reach for when a value is in the wrong range rather than the wrong shape.
Filter
Neighbourhood operations — blur, sharpen, edge detection and friends. These read more than one sample, which is what separates them from the per-pixel families above.
Levels
Remap input black/white points with a gamma in between, then to an output range. The standard contrast tool.
Threshold Scan
Sweep a soft threshold across the value range. Driving position from a Progress node is how erosion and burn reveals are built.
Posterize
Collapse to a fixed number of bands — cel shading, contour maps, retro colour depth.
Dither
Ordered 4×4 threshold matrix — banding traded for texture. Screen-space, so the pattern stays crisp at any zoom.
Edge Detect
Gradient magnitude of the incoming value — outlines from any field. Uses screen-space derivatives, so it costs nothing.
Sharpen
Unsharp mask from the local gradient — pushes values away from their neighbourhood average.
Curvature
Convex and concave regions of a normal, separated. Feeding convexity into a mask is how edge wear and dirt-in-crevices are made.
Occlusion from Height
Darkens where the height field sits below its surroundings. Cheap contact shadowing without a ray anywhere.
Blur
Softens by resampling the coordinate at a ring of offsets. Re-runs the upstream chain once per tap — keep the tap count low on deep graphs.
Slope Blur
Smears coordinates along a height gradient — the erosion and drip look. A directional warp driven by the surface itself.
Directional Warp
Push coordinates along a fixed angle by an amount a field controls. Wind, brushing, motion streaks.
Vignette
Radial falloff from the centre — framing, spotlight masks, lens darkening.
Chromatic Shift
Splits a colour into per-channel offsets — lens fringing, glitch, holographic edges.
Grain
Screen-space film grain. Stays a constant size on screen regardless of texture scale, which is what makes it read as grain and not as noise in the material.
Glow
Lifts and spreads bright regions. Approximated from the local gradient rather than a real blur — see the note at the top of this file about why a true neighbourhood blur is not possible in one pass.
Material
Material closures. Where the rest of the catalogue produces numbers and colours, these produce a surface description that the output node can light.
PBR Surface
The standard uber-shader. One node covering metal, plastic, glass and skin.
Diffuse
A material node.
Glossy
A material node.
Glass
Refractive transmission with Fresnel. Feeds the 3D engines transmission directly and drives the 2D refraction path.
Transparent
A material node.
Emission
A material node.
Toon
Banded, hard-edged shading for cel looks.
Subsurface
Light entering the surface and scattering back out — skin, wax, marble, leaves. The tint is what light looks like after travelling through the material.
Translucent
Diffuse transmission — light passing through and scattering, as through paper or a lampshade.
Refraction
Transmission without the reflective component — the bending half of glass on its own.
Anisotropic
Directional highlights — brushed metal, hair, vinyl records. The highlight stretches perpendicular to the grain.
Sheen
Retroreflective grazing-angle bloom — velvet, suede, dusty cloth. Brightest exactly where a normal material goes dark.
Volume Scatter
Participating media — fog, smoke, god rays. Approximated as depth-weighted emission, since a raster pass has no volume to march.
Volume Absorption
Light lost travelling through a medium — tinted glass, deep water. Density darkens rather than brightens.
Holdout
Punches a hole through everything — cuts the layer out so what is behind it shows through.
Blend Material
Blend two materials. This is why BSDFs stay structs instead of collapsing to colour.
Add Material
A material node.
Spectral Blades
Blurred silhouette bent by a directional wave and dyed through a cyclic color ramp — the flowing spectral-blade look — the Shaders-tab shader, usable as a graph node.
Silk
Flowing liquid-gradient folds — domain-warped noise lit with glossy streaks, colors pouring along the creases — the Shaders-tab shader, usable as a graph node.
Holo Chrome
Iridescent chrome field — rainbow bands squeeze into ribbons where the liquid surface folds, with full artifact cleanup controls — the Shaders-tab shader, usable as a graph node.
Crushed Foil
Crumpled metallic foil with angular color clustering, crease hairlines and live pointer ripples, wakes and foam — the Shaders-tab shader, usable as a graph node.
Aurora Mesh
Soft drifting mesh-style gradient — up to five color nodes floating and blending, with flow warp and grain — the Shaders-tab shader, usable as a graph node.
Output
The end of the graph. Exactly one output is active at a time, and everything not reachable from it is dead code that never reaches the compiler.