About data types and port colors

The type of a value refers to the kind of data that it is, for example, an integer, a decimal number, a vector, and so on. There can also be arrays of each type, and arrays of arrays.

Types are indicated by the colors of connections and ports. Even if ports have different colors, it may still be possible to connect them:

Color Types
Decimal color Decimal values. These can be single (float) or double-precision (double) floating-point values.
Vector color 2D, 3D, or 4D vectors of float or double values.
Matrix color Matrices of float or double values.
Integer color Signed or unsigned integers of various widths.
String color Strings.
Boolean color Boolean values. This color is also used for enums, like rotation_order.
Object color Objects. Objects can be geometric objects like meshes, volumes, and points objects, or they can be custom data structures designed to be used with particular nodes.
Other types color Other types. These can be vectors and matrices of types other than float or double, function curves (fcurves), and so on. One particular type is any, which can be used as a wrapper to perform type-checking at run-time.
Unresolved auto color Auto (unresolved color). The type auto is a placeholder that must get resolved to another specific type before a graph can be compiled and executed. If it is unresolved, it is gray. Otherwise, it is the color of the resolved type.

About auto-type ports

Ports of type auto are special because they can adopt a new type based on an incoming connection. The type auto acts like a placeholder — a real, concrete type must be inferred from port connections or default values. Ports of type auto have a vertical "halo" and the color of the inferred type.

Auto port with halo

For example, a length node has an input port that resolves to a float3 and an output that resolves to float by default. Because these are auto ports, you can nevertheless connect a double2 as input, and the output becomes a double.

Although auto ports support multiple types, they might not support every type. The specific types that are supported depend on each node. For example, you cannot use a matrix as an input for length, because matrices don't have lengths.

You can set the type of an auto port on a referenced compound by right-clicking the port and selecting the type from the Value Types menu. See Set the type of a port