Skip to content

Pin Types

ArcBrush uses a typed pin system to ensure that only compatible nodes can be connected. Each pin type represents a different kind of data flowing through the graph.

Each pin type uses a distinct shape and color so you can tell them apart at a glance. Most shapes never change when a pin is connected; they’re tied to the type, not the connection state. The one exception is the Pixels pin, whose color reflects the kind of data flowing through it (see Channel Polymorphism below).

Pin TypeShapeColorDescription
Image Filled squareOrangeRGBA image data (the most common type)
Mask Filled circleBlueSingle-channel grayscale mask
Pixels Split circle (orange top, blue bottom)Orange / BlueA channel-polymorphic input that accepts a color image or a grayscale/mask, producing a matching channel count
Palette Filled triangleVioletNamed color slot collection
Batch Outlined squareGoldMultiple image frames (from Palette Remap, Collect, or Image Folder)
Size Reference Outlined circleTealDimensional reference (width/height)

Many filter and structural nodes (Blur, Sharpen, Levels, Curves, Brightness/Contrast, Vignette, Invert, Mirror, Crop, Resize, Transform, and more) expose their main input as a Pixels pin. A Pixels pin accepts either a full-color image or a single-channel grayscale/mask, and the node’s output follows the input: feed it color and you get color back, feed it a mask and you get a mask back. A mask can therefore flow through a whole chain of effects and stay a mask, with no manual color-conversion step in between.

On the canvas, an unconnected Pixels pin draws as a circle split into an image-orange top half and a mask-blue bottom half. Once you wire something in, an input Pixels pin turns a solid color to show which kind of data is actually flowing: orange for a color image, blue for a grayscale/mask. Output Pixels pins keep the split look, because the result’s channel count depends on whatever you connect upstream.

Two boundary nodes, Gradient Map and Normal Map, also accept a grayscale source on their Pixels input, but they always output a full-color image, since their job is to turn grayscale into color.

Originating and writing single-channel data. A single-channel image no longer has to come from Mask From Image or a keyer matte. The six generators (Canvas, Shape, Gradient, Noise, Pattern, and Text) have a Color Mode (RGBA / Grayscale) that outputs a single-channel image directly at the source, and Image In / Image Folder have an Output Format (Auto / RGBA / Grayscale) that keeps a grayscale file single-channel on load. Switching a generator’s Color Mode carries each color’s brightness to and from its gray value, as a single undoable step. At the end of the chain, Export Image and Export Batch add an Output Channels control that writes a genuine grayscale PNG, TGA, or TIFF (JPEG and WebP have no single-channel mode, so they upcast a grayscale frame to gray-valued color).

A handful of color-only nodes were deliberately left out: HSB, Color Balance, Black and White, Color Overlay, Chroma Key, Luma Key, Dither, Quantize, Palette From Image, Palette Remap, Color Remap, and Channel Shuffle keep a plain Image input and reject a Mask, prompting you to insert a Gradient Map to colorize it first.

Most connections require matching pin types, with a few useful exceptions:

From (output)To (input)Rule
ImageImageDirect connection.
MaskMaskDirect connection.
PalettePaletteDirect connection.
BatchBatchDirect connection.
MaskImageAuto-promoted. The grayscale mask is converted to RGBA and a small indicator appears mid-wire. A few color-only nodes reject this instead (see below).
ImageMaskAuto-converted. The color image is read as a mask by its brightness (luminance) by default; a Mask From control appears on the node so you can read Alpha, Red, Green, or Blue instead. Use Mask From Image when you also want thresholding or feathering.
Image or MaskPixelsDirect connection. The data passes through as-is (color stays color, a mask stays a mask), and the node’s output matches.
BatchPixelsAllowed. The batch is processed frame by frame, exactly as it is for an Image input.
PixelsImageAllowed. A grayscale result is promoted to RGBA if the downstream node needs color.
PixelsMaskAllowed. A color result is read as a mask by its brightness (luminance) by default, mirroring the Image to Mask conversion, with the same Mask From control to pick a different channel.
PixelsPaletteNot allowed. Pixels carries pixel data only.
Image, Mask or PixelsSize ReferenceThe Size Reference pin accepts any of them; it just reads the connected node’s dimensions.

The graph blocks invalid wiring as you drag, and an inline toast explains why if you try to make a forbidden connection. Connecting a Mask into one of the color-only nodes (HSB, Color Balance, Black and White, Color Overlay, Chroma Key, Luma Key, Dither, Quantize, Palette From Image, Palette Remap, Color Remap, Channel Shuffle) raises “This node requires a color image. Insert a Gradient Map to colorize a mask first.”

Common patterns:

  • Most nodes have Image inputs and outputs.
  • Palette Remap takes an Image + Palette and outputs a Batch.
  • Collect and Image Folder also output a Batch; Split decomposes a Batch back into individual images.
  • Export Batch takes a Batch and writes every frame as a separate file.
  • Keyer nodes (Chroma Key, Luma Key) expose a matte Mask output you can route directly into mask inputs, with no Mask From Image needed.

When you hover a pin, the name hints at how it’s used:

  • image: the primary image input or output. On channel-polymorphic nodes this is a Pixels pin that also accepts a grayscale/mask.
  • alpha: a generic single-channel input (often interchangeable with a mask).
  • mask: a mask input that restricts where the node’s effect applies.
  • matte: a mask output produced by a keyer node (Chroma Key, Luma Key).
  • palette: a Palette pin connecting a Palette node to a remapper or exporter.
  • size_ref: a Size Reference pin that drives output dimensions.
  • Input pins appear on the left side of a node.
  • Output pins appear on the right side.
  • Connected pins are filled; unconnected pins are hollow (the shape is the same either way).
  • A Pixels input pin shows the orange/blue split while unconnected, then turns a solid color once wired to show whether color or grayscale data is flowing; output Pixels pins always keep the split.
  • Hover over a pin to see its type and name.