Shader node reference
95 nodes across 7 categories, for building materials as graphs. How to use them is in Material graphs.
Port types are float, vec2, vec3 and vec4. A vec3 carries a colour or a direction; connecting mismatched widths is handled for you where it makes sense.
const
Fixed values you type in.
| Node | What it does | Inputs | Outputs |
|---|---|---|---|
constFloat | A fixed number. | — | out:float |
constVec3 | A fixed triple. | — | out:vec3 |
input
Where values come from: UVs, the surface normal, time, textures, the instance being drawn.
| Node | What it does | Inputs | Outputs |
|---|---|---|---|
cameraDistance | How far this pixel is from the camera. Good for fading things out with distance. | — | out:float |
chromaKey — Chroma key | Removes a colour, turning a green screen transparent. | color:vec3, key:vec3, similarity:float, smoothness:float, spill:float | rgba:vec4 |
instanceColor — Instance Color | The tint that copy carries. | — | out:vec3 |
instanceId — Instance ID | Which copy of an instanced object is being drawn — feed it into a hash to make every copy different. | — | out:float |
materialRef — Material | Pulls in another material as a starting point. | — | out:vec3 |
normal | Which way the surface faces. | — | out:vec3 |
normalMap | Applies a normal map, adding surface detail without more geometry. | uv:vec2, strength:float | out:vec3 |
paramColor — Param (color) | A colour exposed the same way. | — | out:vec3 |
paramFloat — Param (float) | A number exposed as a material setting, adjustable without editing the graph. | — | out:float |
position | The point on the surface, in the object’s own space. | — | out:vec3 |
sampleLod — Sample Texture LOD | Samples at a chosen blur level — cheap softness. | uv:vec2, lod:float | rgba:vec4 |
screenUv | Where the pixel is on screen rather than on the surface. | — | out:vec2 |
texelFetch — Texel Fetch | Reads one exact pixel, unfiltered. | texel:vec2 | rgba:vec4 |
texelSize — Texture Size | The size of one pixel of a texture, for neighbour-sampling effects. | — | size:vec2, texel:vec2 |
texture | Samples an image at some coordinates. | uv:vec2 | rgba:vec4 |
time | Seconds since the scene started. Anything that moves starts here. | — | out:float |
triplanar | Projects a texture from three directions at once, so untextured or stretched geometry still looks right. | scale:float, blend:float | rgba:vec4 |
uv | The texture coordinates of the pixel being drawn — the basis of most patterns. | — | out:vec2 |
viewDirection | The direction from the surface toward the camera. | — | out:vec3 |
worldPosition | The same point in world space — use it for effects that stay put as an object moves. | — | out:vec3 |
light
Lighting terms you can shape yourself.
| Node | What it does | Inputs | Outputs |
|---|---|---|---|
fresnel | Stronger at glancing angles — rim light, force fields, the sheen on a car. | power:float, normal:vec3 | out:float |
lit — Lit (scene lights) | Standard lighting, so a custom graph still sits correctly in the scene. | color:vec3, roughness:float, specular:float, normal:vec3 | out:vec3 |
toonLit — Toon (scene lights) | Banded lighting for a stylised look. | color:vec3, steps:float, normal:vec3 | out:vec3 |
math
Arithmetic and curves on single numbers.
| Node | What it does | Inputs | Outputs |
|---|---|---|---|
abs | Drops the sign. | x:float | out:float |
add | Adds. | a:float, b:float | out:float |
atan2 | The angle to a point — how you build radial patterns. | y:float, x:float | out:float |
ceil | Rounds up. | x:float | out:float |
clamp | Keeps a value inside a range. | x:float, min:float, max:float | out:float |
cos | Cosine. | x:float | out:float |
divide | Divides. | a:float, b:float | out:float |
exp | e to the power of the input. | x:float | out:float |
fbm | Layered noise — clouds, smoke, rust, terrain. | uv:vec2, scale:float, octaves:float | out:float |
floor | Rounds down. | x:float | out:float |
fract | Just the fractional part — the standard way to make anything repeat. | x:float | out:float |
log | Natural logarithm. | x:float | out:float |
max | The larger of two. | a:float, b:float | out:float |
min | The smaller of two. | a:float, b:float | out:float |
mix | Blends between two values. | a:float, b:float, t:float | out:float |
mod | The remainder; the other way to wrap a value. | x:float, y:float | out:float |
multiply | Multiplies. | a:float, b:float | out:float |
noise | Smooth random values. The starting point for anything organic. | uv:vec2, scale:float | out:float |
oneMinus | Flips a 0–1 value round. Deceptively useful. | x:float | out:float |
posterize | Snaps values to a number of steps — banding, on purpose. | x:float, steps:float | out:float |
pow | Raises to a power. | x:float, e:float | out:float |
remap | Rescales from one range to another. | x:float, inMin:float, inMax:float, outMin:float, outMax:float | out:float |
round | Rounds to nearest. | x:float | out:float |
sign | Gives −1, 0 or 1. | x:float | out:float |
sin | Sine — every wobble, pulse and ripple starts with this. | x:float | out:float |
smoothstep | A soft edge, with a gradient between the two thresholds. The workhorse of shader graphs. | from:float, to:float, x:float | out:float |
sqrt | Square root. | x:float | out:float |
step | A hard edge: below the threshold 0, above it 1. | edge:float, x:float | out:float |
subtract | Subtracts. | a:float, b:float | out:float |
tan | Tangent. | x:float | out:float |
voronoi | Cellular patterns: scales, cracked earth, stained glass. | uv:vec2, scale:float | dist:float, cell:float |
output
Where the graph ends: what the surface actually looks like.
| Node | What it does | Inputs | Outputs |
|---|---|---|---|
mrtOutput — Output (MRT) | Writes several outputs at once, for advanced pipelines. | color:vec3, alpha:float, color1:vec3, alpha1:float, color2:vec3, alpha2:float, color3:vec3, alpha3:float | — |
output | Where the graph ends: the finished look of the surface. | color:vec3, alpha:float, offset:vec3 | — |
surfaceOutput — Output (surface) | The physical description — base colour, metallic, roughness, normal, emissive, alpha. | baseColor:vec3, metallic:float, roughness:float, emissive:vec3, normal:vec3, alpha:float, offset:vec3, clearcoat:float, clearcoatRoughness:float, ior:float, transmission:float, thickness:float | — |
post
Nodes that sample the rendered frame — these make the graph a full-screen effect rather than a surface.
| Node | What it does | Inputs | Outputs |
|---|---|---|---|
chromaticAberration | Splits colour channels at the edges, like a real lens. | uv:vec2, amount:float | out:vec3 |
contrast | Pushes light and dark apart. | color:vec3, amount:float | out:vec3 |
exposure | Brightens or darkens the whole image. | color:vec3, amount:float | out:vec3 |
grain | Adds film grain. | color:vec3, intensity:float | out:vec3 |
invert | Inverts it. | color:vec3 | out:vec3 |
saturation | More or less colourful. | color:vec3, amount:float | out:vec3 |
screenColor | The scene as already rendered. Using this makes the graph a full-screen effect. | — | out:vec3 |
tint | Pushes the image toward a colour. | color:vec3, tint:vec3 | out:vec3 |
vignette | Darkens the edges of the frame. | color:vec3, offset:float, darkness:float | out:vec3 |
vector
Building, splitting and transforming vectors and colours.
| Node | What it does | Inputs | Outputs |
|---|---|---|---|
addVec3 | Adds two triples. | a:vec3, b:vec3 | out:vec3 |
alpha | Pulls the transparency channel out. | v:vec4 | out:float |
combineVec2 | Builds a pair. | x:float, y:float | out:vec2 |
combineVec3 | Builds a triple. | r:float, g:float, b:float | out:vec3 |
combineVec4 | Builds a quad. | rgb:vec3, a:float | out:vec4 |
cross | A direction perpendicular to both. | a:vec3, b:vec3 | out:vec3 |
distance | Distance between two points. | a:vec3, b:vec3 | out:float |
dot | Dot product — how much two directions agree. | a:vec3, b:vec3 | out:float |
equirectUv — Equirect UV | Maps a direction onto a panoramic image. | dir:vec3 | uv:vec2 |
flipbook — Flipbook | Plays a grid of frames in one image as an animation. | uv:vec2, frame:float, tilesX:float, tilesY:float | uv:vec2 |
gamma | Applies a gamma curve. | rgb:vec3, gamma:float | out:vec3 |
hsvToRgb | And back again. | hsv:vec3 | out:vec3 |
hueToRgb | A hue straight to a colour. | h:float | out:vec3 |
length | How long a vector is. | v:vec3 | out:float |
luminance | How bright a colour reads to the eye. | rgb:vec3 | out:float |
mixVec3 | Blends two triples. | a:vec3, b:vec3, t:float | out:vec3 |
multiplyVec3 | Multiplies two triples. | a:vec3, b:vec3 | out:vec3 |
normalize | Same direction, length 1. | v:vec3 | out:vec3 |
panner | Scrolls coordinates over time — flowing water, conveyor belts, energy beams. | uv:vec2, speed:vec2 | out:vec2 |
reflect | Bounces a direction off a surface. | v:vec3, normal:vec3 | out:vec3 |
rgb | Builds a colour from three numbers. | v:vec4 | out:vec3 |
rgbToHsv | Colour to hue, saturation and value — the easy way to shift hue. | rgb:vec3 | out:vec3 |
scaleVec2 | Scales a pair by a number. | v:vec2, s:float | out:vec2 |
scaleVec3 | Scales a triple by a number. | v:vec3, s:float | out:vec3 |
splitVec2 | Takes a pair apart. | v:vec2 | x:float, y:float |
splitVec3 | Takes a triple apart. | v:vec3 | x:float, y:float, z:float |
uvTransform | Scales, rotates and offsets coordinates before sampling. | uv:vec2, tiling:vec2, offset:vec2, rotation:float, center:vec2 | out:vec2 |