Node catalog
A shader graph is made of 92 node types (and 137 entries in the Shader view’s sidebar, since many nodes come in several flavors: Add, Multiply and Step are all the Math node). This catalog describes each one: what it is for in plain words, its ports and settings, and an example in Python.
15Inputs, parameters and constantsThe nodes every shader starts from: where the pixel is, the time, the mouse, your own variables and fixed values.7MathArithmetic, one-value functions (sin, fract, abs...), mix, clamp, smoothstep and remap: the glue of every shader graph.19Vectors and UVBuild and split vectors, measure distances and angles, and move, tile, rotate, twist or bend the coordinates.12Noise and patternsOrganic randomness (Perlin, simplex, fractal, Voronoi) and regular patterns (checker, stripes, grid, dots, gradients, waves).10ShapesCircles, boxes, rings, lines, polygons and stars as signed distances, combined and drawn with fill, stroke and glow.19Color, effects and texturesGradients, palettes, hue, saturation, blend modes and layers, screen effects (vignette, scanlines, grain) and images.10Logic, variables and utilityComparisons and if/else, named values, reroutes, your own WGSL, other shaders as functions, comments and the Output node.
How to read a node
Section titled “How to read a node”flowchart LR
in1["inputs (left)"] --> node["Node<br/>settings inside"] --> out1["outputs (right)"]
- Inputs are on the left of a node and outputs on the right. A wire goes from an output to an input.
- An input that is not wired uses its default: a number, a vector, a color, or a context value such as UV (the pixel’s position) or Time. You can type another value right on the node.
- Settings are not ports: an operation, a noise kind, a blend mode, the stops of a gradient. Change them in the Properties panel (or as keyword arguments in Python).
| Type | What it holds | Example |
|---|---|---|
float |
One number | 0.5, a brightness, a time |
int |
A whole number | 5 octaves |
bool |
True or false | is the mouse over the shader? |
vec2 |
Two numbers | a position (x, y), a size |
vec3 |
Three numbers | a color (r, g, b) from 0 to 1 |
vec4 |
Four numbers | a color with alpha (r, g, b, a) |
texture |
An image | a texture variable |
T |
Any of the number types | Math nodes: the widest type wired to them |
Values convert on the way: a float fills every component of a vector (0.5 becomes (0.5, 0.5, 0.5)), and a
vec3 becomes a color with alpha 1. A wire that can never work, such as a texture into a number, is refused.
Every node
Section titled “Every node”| Input | UV, Pixel, Size, Time, Mouse, Centered UV |
| Parameters | Parameter |
| Constants | Float, Int, Bool, Vector2, Vector3, Vector4, Color, Math constants |
| Math | Math, Function, Mix, Clamp, Smoothstep, Remap, Multiply add |
| Vector | Compose, Decompose, Swizzle, Dot, Cross, Length, Distance, Normalize, Reflect, Polar |
| UV | Tiling and offset, Scroll, Rotate, Twirl, Pixelate, Barrel, Kaleidoscope, Flip, Repeat |
| Noise | Noise, Fractal noise, Voronoi, White noise, Random |
| Patterns | Checker, Stripes, Grid, Dots, Linear gradient, Radial gradient, Wave |
| Shapes | Circle, Box, Ring, Segment, Polygon, Star, Combine shapes, Fill, Stroke, Glow |
| Color | HSV to RGB, RGB to HSV, Hue shift, Saturation, Brightness and contrast, Luminance, Grayscale, Invert, Gamma, Posterize, Blend, Palette, Gradient, RGBA, Layer |
| Effects | Vignette, Scanlines, Film grain |
| Texture | Sample texture |
| Logic | Compare, Select, Logic |
| Variables | Set value, Get value |
| Utility | Reroute, Expression, Shader function, Comment |
| Output | Output |