Macro Input (Boundary)

Shipping
macro_in

Compound-node input boundary: surfaces one outer input port on a custom subsystem

Signature

Outputs

  • valueAnyRe-emits the value wired into the exposed outer port (or the typed `default` when unwired).

Parameters

KeyTypeDefaultNotes
nametextinThe outer port id this boundary exposes on the parent compound node (renaming re-exposes it).
port_typeenumone of: , Signal, Float, Integer, Boolean, String, Vector, Matrix, Color, Bundle, Image
orderint0Display order of the exposed port on the compound node.
requiredbooleantruetrue → a real input port that must be wired; false → an inline editable parameter (Blender Group-Input model) plus a connectable socket.
hold_policyenumlinearHow a wired time-varying signal is interpolated between samples when it drives this input as a forcing function.
defaultfloatValue emitted when the input is unwired, typed by port_type. An empty default on a required numeric/boolean port fails loudly rather than inventing a silent 0.
unit_modeenumfixedUnit handling for the boundary: none / fixed / dim / any.
unitunitUnit symbol or dimension source (used when unit_mode ≠ none).
uncertaintybooleanfalseWhen set, the parameter carries an editable ±σ that propagates through the compound.
sigmafloatDefault 1σ uncertainty of the parameter (when Allow ± error is on).
minfloatLower bound of the numeric parameter field (empty = none).
maxfloatUpper bound of the numeric parameter field (empty = none).
stepfloatDrag step of the numeric parameter field (optional).
optionstextEnum choices for a String parameter: `a,b,c` or `val|Label,…`.

Description

Macro Input is a compound node's input boundary bridge. Placed inside a custom (compound) node's internal graph, it surfaces one outer input port — named by its name param — and re-emits the value wired into that outer port on its value output. During a compound run the recursive executor seeds this node's slot with the outer port's value directly; the body only runs standalone (unwired outer port), where it emits the typed default.

The required flag chooses how the parent surfaces the boundary, following Blender's Group-Input model: required = true makes a real input port (a socket that must be wired), while required = false makes an inline parameter — the parent renders an editable field typed by port_type, bounded by min/max/step or chosen from options, plus a small connectable socket. Type-specific authoring fields (unit, ±σ, numeric bounds, enum options) are gated to the port type that actually uses them.

This is a structural subsystem-boundary port, not a signal-processing node; it is only used while authoring custom nodes.

Applications

  • Exposing a named, typed input on a custom (compound) node — as a required port or an inline editable parameter.
  • Giving a subsystem's inputs units, default values, ±σ uncertainty, numeric bounds, or enum options for its inspector UI.
  • Feeding a wired time-varying signal into a subsystem as a forcing function with a chosen interpolation (hold) policy.

Neat

One node covers both a required port and an inline parameter — the `required` flag alone flips it, matching Blender's Group-Input authoring model.

Authoring fields are condition-gated by port_type using the same algebra evaluated in both the Rust and Dart condition engines, so the inspector never shows float knobs on a String or σ on a Color.

An empty default on a required numeric/boolean port fails loudly instead of inventing a silent 0 — a scientific tool refusing to fabricate data.

See also

compoundsubsystemboundaryportstructural