Data Types & Ports
Every node exchanges data through ports, and every port carries one kind of data. Type determines which connections are allowed, and the wire and port colors tell you at a glance what is flowing where.
A port is a connection point. Input ports receive data; output ports supply it. A placed node’s ports are fixed by its node type, together with its label, category and parameter list. Two kinds of node are the exception: a Custom Shader’s ports come from the source that instance holds, and a subgraph instance’s ports come from its definition’s boundary, so both change when what they wrap changes.
An input may be required or optional:
- A required input must be connected before the node produces anything. The node stays unrendered rather than erroring.
- An optional input changes the result when connected but the node works without it. Left unwired, an optional texture input binds a flat constant the port declares for itself, so the node still has something to sample. Most ports use mid-gray; the ones that need something else say so. Blend’s Base is fully transparent, so an unconnected Base makes a cut-out rather than a gray plate. Channel Combine’s R, G and B are black, so an unpacked color channel contributes nothing, while its A is white, so the Alpha parameter passes through unchanged. Tile Sampler’s Mask Map is white, so an unconnected mask hides nothing.
Some nodes expose more than one output port, each carrying different data derived from the same computation. See Multi-Output Nodes.
The Mask input
Section titled “The Mask input”Many nodes across most categories carry an optional Mask input. Where the mask is dark, the node’s effect is removed and the result falls back to the node’s primary input, or to a constant for nodes that have no input. This is the standard way to confine a filter or generator to part of a texture.
Data types
Section titled “Data types”- Texture: image data. Three variants exist: a generic type used by filters that preserve whatever they are given, a grayscale texture for single-channel data such as height, roughness and masks, and a color texture for three-channel data such as base color and normals. The three are freely interchangeable; the distinction drives wire and port color only.
- Value: a number or a 2-, 3- or 4-component vector. All value types interconnect.
- Boolean: an on/off value; connects only to boolean ports.
- Material: a whole map-set carried on a single wire. PBR Output, Trim Sheet and the Material node each output one; PBR Output and Trim Sheet also accept one as an input. The wire itself carries no texture: it names the node the maps come from, and the consumer resolves the channel it needs through that node when it renders or exports. Material ports connect only to other material ports.
- Custom: an unchecked type that connects to anything and bypasses type validation. The Reroute node uses it, and so do a Trim Sheet’s four strip slots, which take either a plain map or a whole material.
Textures and values are not interchangeable with each other.
Type mismatches
Section titled “Type mismatches”A mismatched connection is not blocked. Instead the wire is drawn in red to flag a type mismatch you should review. See Connections for how connections are made and removed.
File formats
Section titled “File formats”| Extension | What it is |
|---|---|
.surfacelabs | The project archive: all materials, subgraphs, embedded images, export settings and cached thumbnails in one portable file |
.surfacenode | A single node or subgraph packaged for sharing, with embedded media and a preview thumbnail |
.surfacetheme | An exported color theme |
.mcpb | A one-click Claude Desktop extension bundle exported by the MCP server settings page |
See File Formats for details on each.