Skip to content

Shader Nodes

Every node the Shader editor offers, grouped exactly as the palette and the right-click menu group them. Each node's one-line description is the same text the editor shows in its info pane when you select the node, so the two cannot disagree.

Types are float (one number), vec2/vec3/vec4 (two, three or four), and sampler2D (an image). Values convert automatically where it makes sense: a number feeding a colour input becomes grey, and a colour feeding a number input gives its red channel.

† marks an input whose type follows whatever you wire into it — Multiply of two colours gives a colour, of two numbers a number.

Input

Node In Out Parameters What it does
Float out (float) value 0.5 A single number you can dial, and drive from a Set Shader Uniform flow node.
Colour out (vec3) value #ffffff A colour you pick. Converted sRGB -> linear, so it matches what the picker shows.
Vector 2 out (vec2) value [0, 0] Two numbers — usually a UV offset, a tiling amount or a 2D direction.
Vector 3 out (vec3) value [0, 0, 0] Three numbers — a direction, a position offset, or a colour you want as numbers.
UV out (vec2) The surface's texture coordinates: 0..1 across the mesh's UV layout. The starting point for anything that varies across a surface.
Normal out (vec3) Which way the surface faces. In the surface stage this is the shaded normal; wired into Position it is the object-space normal, which is what you displace along.
View direction out (vec3) The direction from the surface towards the camera. Surface stage only — there is no camera vector while vertices are being placed. (surface only)
Time out (float) speed 1 Seconds from the SHARED clock, so anything animated is at the same point for every peer with no messages. Multiply by speed to go faster.
Texture uv (vec2) rgb (vec3), a (float), rgba (vec4) hash (none) Samples an image from your Explorer library. The graph stores a content hash, so the picture travels to peers once and is reused, never re-sent on every edit.

Math

Node In Out Parameters What it does
Add a (float†), b (float†) out (float) a + b. Brightening, offsetting, layering two patterns.
Subtract a (float†), b (float†) out (float) a - b. Cutting one pattern out of another, or centring a 0..1 value on zero.
Multiply a (float†), b (float†) out (float) a * b. Tinting, masking, scaling a pattern down.
Divide a (float†), b (float†) out (float) a / b. Scaling a value down by an amount you can drive.
Sin a (float) out (float) A smooth wave between -1 and 1. Feed it Time for a pulse, or UV for stripes.
Cos a (float) out (float) Like Sin, a quarter-cycle ahead — the pair makes circular motion.
Fract a (float) out (float) Keeps only the fractional part, so values wrap 0..1 repeatedly. The usual way to make something tile.
Abs a (float) out (float) Drops the sign, mirroring a pattern about zero.
One minus a (float†) out (float) 1 - a. Inverts a 0..1 mask.
Mix a (vec3†), b (vec3†), t (float) out (vec3) Blends a and b by t: 0 gives a, 1 gives b. The workhorse for combining two looks.
Clamp a (float†) out (float) min 0, max 1 Holds a value between min and max.
Dot a (vec3), b (vec3) out (float) How much two directions agree: 1 aligned, 0 perpendicular, -1 opposed. Lighting-style falloffs.
Power a (float) out (float) exponent 2 Raises to an exponent, which sharpens a 0..1 falloff (higher = tighter).
Smoothstep a (float) out (float) edge0 0, edge1 1 An eased 0..1 ramp between two edges — a soft-edged mask.
Remap a (float) out (float) inMin 0, inMax 1, outMin 0, outMax 1 Rescales a range onto another, e.g. -1..1 into 0..1.
Floor a (float†) out (float) Rounds down. Quantises a smooth value into steps.
Ceil a (float†) out (float) Rounds up, so anything above zero becomes at least 1 — a quick "is this non-zero" mask.
Saturate a (float†) out (float) Clamps to 0..1 — a safety net before something is used as a mask.
Normalize a (vec3†) out (vec3) Rescales a direction to length 1. Do this before using a vector as a direction.
Min a (float†), b (float†) out (float) The smaller of two values — an upper limit, or the intersection of two masks.
Max a (float†), b (float†) out (float) The larger of two values — a lower limit, or the union of two masks.
Modulo a (float†), b (float†) out (float) The remainder of a / b. Repeats a value every b, for bands and grids.
Step a (float), edge (float) out (float) 0 below the edge and 1 at or above it — a hard-edged mask.
Length a (vec3) out (float) How long a vector is. Distance from the origin, for radial patterns.
Distance a (vec3), b (vec3) out (float) How far apart two points are — glows and radial falloffs.
Cross product a (vec3), b (vec3) out (vec3) A direction perpendicular to two others. Building a basis from two directions.

Channel

Node In Out Parameters What it does
Split value (vec4) x (float), y (float), z (float), w (float) Breaks a colour or vector into its x, y, z and w parts, so one channel can drive something on its own.
Combine x (float), y (float), z (float), w (float) xyz (vec3), xyzw (vec4) Builds a colour or vector back up from separate numbers.

UV

Node In Out Parameters What it does
Tiling & offset uv (vec2) out (vec2) tiling [1, 1], offset [0, 0] Repeats and shifts texture coordinates: tiling 3 means the image fits three times, offset slides it.
Panner uv (vec2) out (vec2) speed [0.1, 0] Scrolls texture coordinates over time on the shared clock — flowing water, conveyor belts, moving clouds. Every peer sees the same offset.

Utility

Node In Out Parameters What it does
Fresnel out (float) power 3 Bright at grazing angles, dark face-on — the rim light that reads as glass, water or a force field. Power tightens the rim. (surface only)
Noise uv (vec2) out (float) scale 8 A smooth random pattern from UV, identical on every peer (no texture needed). Clouds, grime, variation.
Posterise a (vec3†) out (vec3) steps 4 Snaps values into a number of steps, for a banded or cel-shaded look.
Gradient t (float) out (vec3) colorA #000000, colorB #808080, colorC #ffffff, mid 0.5 A three-colour ramp driven by one number. Feed it Noise, UV or Fresnel to colour-map anything; the midpoint biases where the middle colour sits.
Normal map map (vec3), uv (vec2), normal (vec3) out (vec3) strength 1 Reads a normal map image and applies it as surface detail, building the tangent frame from screen-space derivatives so it works on meshes with no tangents. (surface only)
GLSL expression a (float), b (float), c (float) out (float) expression a, type float The escape hatch: write a GLSL expression using a, b and c as the wired inputs, and declare what type it returns.

Output

Node In Out Parameters What it does
Surface albedo (vec3), emissive (vec3), roughness (float), metalness (float), normal (vec3), opacity (float), ao (float), position (vec3) The graph's output. Each input replaces one part of the material and anything left unconnected keeps the material's own value: albedo (base colour), emissive (glow), roughness, metalness, normal (surface detail), opacity (needs blending), ao (shades indirect light) and position (moves vertices — note it does not recompute normals or move the shadow).

Notes on the ones worth a second look

Texture

Stores the image's content hash, so the picture reaches peers once and is never re-sent as you edit. Assign it by clicking the swatch or dropping an Explorer image on it; hover for a preview with dimensions and file size.

With no image chosen it is opaque white, which changes nothing when multiplied into albedo — so a fresh Texture node never blacks an object out. While an image is still arriving from a peer, the same neutral white stands in.

Its three outputs share one sample: rgb for colour, a for the alpha channel (useful straight into opacity), and rgba for all four at once.

Split and Combine

Together they let one channel do its own job: Split a texture and drive roughness from its red channel while albedo uses the whole colour. Split always gives you w even for a three-component input, where it reads 1.

Tiling & offset, and Panner

Both rewrite texture coordinates, so wire them into a Texture node's uv input rather than into Surface. Chain them — Tiling then Panner — for a scrolling, repeating pattern.

Panner uses the shared clock, so every peer sees the same offset without any network traffic. The same is true of anything driven by Time.

Gradient

A three-colour ramp driven by one number: feed it Noise for organic colour variation, UV (via Split) for a linear ramp, or Fresnel for a rim that shifts hue. mid biases where the middle colour sits.

Normal map

Applies a normal-map image as surface detail. It builds the tangent frame from screen-space derivatives, so it works on primitives and imported meshes that carry no tangent data. Wire the Texture node's rgb into map, and the result into Surface's normal. Surface stage only.

Fresnel

Bright at grazing angles, dark face-on: the rim that reads as glass, water or a shield. Into emissive it glows; into albedo it tints; as the t of a Mix it blends two whole looks by viewing angle. Surface stage only.

Noise

A smooth random pattern computed from UV, with no texture needed and identical on every peer. Scale controls how fine it is. Good for grime, clouds, and — wired into position — a rippling surface.

GLSL expression

The escape hatch when the curated set will not do it. Write an expression using a, b and c for the wired inputs and say which type it returns. It is inserted as written, so a mistake here shows up as a compile error in the tab's error strip.

Surface

The output. Every input replaces one part of the material and anything unconnected keeps the material's own value. See the Surface node for what each tap does, and vertex displacement for the one that moves geometry rather than shading it.