Skip to content

Pin Types

The small sockets on a node’s edges are its pins: inputs on the left, outputs on the right. Each pin’s shape and color say what kind of data it carries, and a wire only connects pins that fit together. Drag a wire somewhere it cannot go and the graph refuses it, with a message saying why.

This recolor graph shows most of the kinds at once:

Image In 1 potion.png image Palette 1 palette 3 slots Shape 1 backgroundmasksize ref imagealpha Ellipse Palette Remap 1 imagepalettemask batch (x3) Export Batch 1 batch (x3)
The orange square takes a color image, the violet triangle a palette, and the blue circle a single-channel mask, here limiting the recolor to the potion's liquid. The gold square carries the batch of three variants.
Pin TypeShapeColorCarries
Image■OrangeA color image with transparency (the most common type)
Mask●BlueA single-channel grayscale image
PixelsOrange / BlueA color image or a single-channel image; the output matches the input
Palette▲VioletA set of named color slots
Batch■GoldMany frames at once (see Batch Processing)
Size Reference●TealA width and height to match
Texture■GreenA whole texture set, every map of one material
Pixels or TextureOrange / Blue, green with a setA color image, a single-channel image, or a texture set; the output matches the input

Output pins are always filled. An input is filled when it is connected or required; an optional input with nothing connected is hollow. The two split pins turn solid once the data through them is known: orange for color, blue for single-channel, green for a texture set. Hover any pin to see its type and name.

Most filters and adjustments, such as Blur, Levels, Curves, Resize, and Transform, take their main input on a Pixels pin: color in gives color out, and a single-channel image in gives a single-channel image out. So a mask can be softened and adjusted with the same nodes you use on pictures, and it stays a mask the whole way:

Shape 1 backgroundmasksize ref imagealpha Rounded Rectangle Blur 1 imagemaskstrength image Levels 1 imagemask image Image In 1 photo.jpg image Mask Apply 1 imagemask image
The Shape's alpha is a single-channel image. Blur softens its edge and Levels tightens it, and the wire stays blue: it is still a mask when Mask Apply uses it to cut out the photo.

A few color-only nodes, such as HSB, Color Balance, Color Overlay, and Palette Remap, need a color image and refuse a mask:

This node requires a color image. Insert a Gradient Map to colorize a mask first.

The fix is the one the message names: a Gradient Map turns the gray values into colors, and the color node takes it from there.

Shape 1 backgroundmasksize ref imagealpha Circle Gradient Map 1 imagemask image HSB 1 imagemask image

To make single-channel data from the start, the generators (Canvas, Shape, Gradient, Noise, Pattern, and Text) have a Color Mode of Grayscale, and Image In and Image Folder have an Output Format of Grayscale that keeps a grayscale file single-channel. At the end, Output Channels on Export Image and Export Batch writes a genuine grayscale file.

Some connections between different types are allowed, and the data is converted on the way:

A color image into a mask pin is read by its brightness. Wire a photo into Blur’s Mask input and the blur is strongest where the photo is brightest. A Mask From setting appears on the node to read the alpha or one color channel instead:

Blur 1
Mask From
Alpha

For thresholding or feathering as well, put a Mask From Image in between.

A mask into an image pin becomes a gray color image, marked with a small indicator in the middle of the wire. That is how a Shape’s alpha can go straight into a Layer.

A plain image where a texture set is expected (Export Texture, 3D Render, a Texture Layer row, a Scatter stamp) is read as a set with only a Base Color, its transparency becoming the set’s Opacity.

A texture set is never taken apart for you. Wiring one into an ordinary image input is refused, with a message pointing at Split Texture (to edit one map) and Export Texture (to write the set). The nodes that take a set say exactly which map they work on, such as a Levels with its Map row set to Roughness. See Changing one map.

A batch into an image pin is processed one frame at a time, so any node works on a batch; see Batch Processing.

An image’s transparency can be stored two ways, and mixing them up is the classic cause of dark or light fringes around a composited edge.

The same edge pixel stored two ways: straight alpha keeps full-strength color under a fading alpha; premultiplied alpha fades the color along with it, which is why an add (Merge's Plus) only combines correctly in the premultiplied form.
  • Straight alpha keeps each pixel’s full color, whatever its transparency: a translucent red pixel is still (255, 0, 0). This is the ordinary, editable form.
  • Premultiplied alpha stores the color already scaled by the transparency, so red at 10% coverage is stored as a near-black (25, 0, 0). Adding light passes together is only correct in this form.

So when you add a glow or a light pass on top of a render with Merge’s Plus, premultiply it first:

Image In 1 glow_pass.png image Premult 1 image image Image In 2 render.png image Merge 1 ab image Plus

Without the Premult, the glow blows out to a bright halo at every translucent edge. Unpremult converts the other way. OpenEXR export writes premultiplied alpha, the form other compositing applications expect.

Matching types always connect. These are the conversions and exceptions:

From (output)To (input)Rule
MaskImageAuto-promoted to RGBA, with a small indicator mid-wire. The color-only nodes listed below refuse this instead.
ImageMaskAuto-converted. The image is read by its brightness (luminance) by default; a Mask From control appears on the node to read Alpha, Red, Green, or Blue instead. Use Mask From Image when you also want thresholding or feathering.
Image or MaskPixelsPasses through as-is, and the node’s output matches.
BatchPixelsAllowed. The batch is processed frame by frame, as it is for an Image input.
PixelsImageAllowed. A grayscale result is promoted to RGBA.
PixelsMaskAllowed. A color result is read by its brightness, with the same Mask From control.
PixelsPaletteNot allowed. Pixels carries pixel data only.
TextureTextureA batch of texture sets (a library) is processed one set at a time.
TexturePixels or TextureThe whole set is placed at once and the output is a set.
Image or MaskPixels or TextureExactly as for a Pixels pin.
ImageTextureAllowed where a set is expected: Texture Layer rows, Scatter stamps, Export Texture, and 3D Render. The image is read as a set holding only a Base Color, with its alpha as the set’s Opacity.
TextureImage, Mask or PixelsRefused. Use Split Texture to pull out one map, or Export Texture to write the set.
Image, Mask, Pixels or TextureSize ReferenceAllowed; the pin just reads the connected node’s dimensions, and a set’s place on a trim sheet. A library sizes each frame in turn.

A pin’s name hints at how it is used:

  • image: the primary image input or output. On channel-polymorphic nodes this is a Pixels pin.
  • alpha: a generic single-channel input.
  • mask: a single-channel input that restricts where the node’s effect applies.
  • matte: a Mask output produced by a keyer (Chroma Key, Luma Key).
  • palette: connects a Palette node to a remapper or exporter.
  • size_ref: a Size Reference pin that drives output dimensions.