TouchDesigner Starter Article 4

Node Families

The six colour-coded operator families in TouchDesigner — TOPs, CHOPs, SOPs, MATs, DATs, and COMPs — what they carry and when to use each one.

⏱ 12 min touchdesigner operators TOPs CHOPs SOPs node-families

Why Families Exist

TouchDesigner handles many different kinds of data: 2D images, 3D geometry, time-varying signals, structured text, materials. Trying to pass all of these over the same generic wire would create chaos — a brightness value and a video frame have nothing in common at the binary level. The solution is to divide all operators into six families, each carrying a specific data type. Operators within a family share a wire colour, can connect to one another, and understand the data that flows between them. Operators in different families use different wires and cannot be connected directly without a bridge operator.

Learning to recognise the colour codes is one of the most important habits in TouchDesigner. After a few hours of practice it becomes automatic.

TOPs — Texture Operators (Purple)

What they carry: 2D images stored as GPU textures. Every TOP output is essentially an RGBA image with a resolution (width × height in pixels) and a pixel format (8-bit, 16-bit float, 32-bit float, etc.).

Processing model: TOPs run entirely on the GPU. Operations like blending, blurring, distorting, and compositing happen in GLSL shaders. This makes them very fast — a chain of ten TOPs can comfortably run at 60 FPS at 1920×1080 even on a mid-range GPU.

Common TOPs:

  • Noise TOP — generates animated procedural noise textures. The Type parameter chooses between Perlin, Simplex, Alligator, and others.
  • Level TOP — adjusts brightness, contrast, gamma, and colour balance. The workhorse of image correction.
  • Composite TOP — blends multiple images together using blend modes (Add, Multiply, Screen, Over, etc.). Takes an unlimited number of inputs.
  • Blur TOP — Gaussian, Box, or Directional blur with GPU acceleration.
  • Feedback TOP — samples its own previous frame’s output, enabling trails and echo effects.
  • GLSL TOP — lets you write a custom GLSL fragment shader directly in TouchDesigner.
  • Movie File In TOP — reads video files from disk, or streams from a webcam or NDI source.
  • Render TOP — takes the output of a 3D camera and renders a scene of SOPs and MATs into a 2D texture.
  • Out TOP — marks the final output of a TOP network, used as the tile that a parent COMP displays.

CHOPs — Channel Operators (Green)

What they carry: Time-series numeric data, organised as named channels. A channel is a sequence of floating-point sample values — like a single row in a spreadsheet that updates every frame. CHOPs are the nervous system of TouchDesigner: they carry audio samples, sensor readings, LFO oscillations, physics simulations, MIDI signals, and control data.

Processing model: CHOPs run on the CPU (with some exceptions). They can output a single value (a “single-sample” CHOP at the current frame), a full time range of samples, or a continuous stream.

Common CHOPs:

  • Constant CHOP — outputs a fixed value or a set of fixed values on named channels. The simplest way to make a number available in the network.
  • LFO CHOP — Low Frequency Oscillator: generates sine, square, sawtooth, or triangle waves at a given frequency and amplitude.
  • Noise CHOP — generates band-limited random values over time, smoother than raw random.
  • Audio Device In CHOP — captures audio from a sound card input. The waveform appears as a channel you can pipe into a Spectrum CHOP or Beat CHOP.
  • Beat CHOP — detects BPM from an audio signal and outputs rhythmic pulse channels synced to the beat.
  • MIDI In CHOP — receives MIDI note and CC data from a connected MIDI device or virtual port.
  • Math CHOP — applies mathematical operations: multiply, add, remap range, combine channels.
  • Trail CHOP — stores a history of a channel’s values over time, producing a scope-like waveform.
  • Lag CHOP — adds smoothing and inertia to a channel, removing abrupt jumps.
  • Select CHOP — plucks specific named channels out of a multi-channel CHOP.

SOPs — Surface Operators (Blue)

What they carry: 3D geometry: points, edges, polygons, curves, and primitive attributes (normals, UVs, colour per point, etc.).

Processing model: SOPs run on the CPU, which makes them slower for large point counts than GPU-based approaches. For particle systems with millions of points, practitioners often move the heavy lifting into a GLSL MAT or a Geometry COMP with instancing.

Common SOPs:

  • Box SOP — generates a rectangular box geometry. Good for testing material setup.
  • Sphere SOP — generates a sphere. The Rows and Cols parameters control tessellation density.
  • Grid SOP — a flat grid of polygons. Frequently used as a deformable surface.
  • Noise SOP — displaces the points of an input geometry along their normals using a noise function.
  • Merge SOP — combines multiple geometry inputs into a single geometry.
  • Convert SOP — changes the primitive type (e.g., polygon to particles).
  • Copy SOP — stamps copies of geometry at the location of each point in a template geometry (the basis of instancing in SOPs).
  • CHOP to SOP — reads channels from a CHOP and uses them to position or deform geometry points.

MATs — Material Operators (Yellow)

What they carry: Shading information — how a SOP surface should appear when rendered. MATs are applied to Geometry COMPs and evaluated during the render pass inside a Render TOP.

Common MATs:

  • Phong MAT — a classic diffuse/specular/ambient shader. Good default choice.
  • PBR MAT — physically-based rendering with roughness and metallic parameters.
  • GLSL MAT — a fully custom vertex and fragment shader written in GLSL.
  • Wireframe MAT — renders geometry as a wireframe outline.
  • Constant MAT — applies a flat colour or texture with no lighting calculations.

DATs — Data Operators (Dark Green/Teal)

What they carry: Text and structured data — strings, tables (rows and columns), Python scripts, JSON, XML, OSC messages, serial port data, HTTP responses.

Common DATs:

  • Text DAT — stores and displays a block of text or a Python script.
  • Table DAT — a 2D grid of cells, like a spreadsheet. Can be edited manually or populated programmatically.
  • Script DAT — a Python script that runs in response to events (on cook, on table change, etc.).
  • CHOP Execute DAT — runs Python code whenever a CHOP channel changes value (useful for triggering events on beats or thresholds).
  • OSC In DAT — receives Open Sound Control messages from other applications or devices over UDP.
  • Web Client DAT — makes HTTP requests and returns the response as text or JSON.
  • Info DAT — displays diagnostic information about a connected operator (press I on any operator to add one automatically).

COMPs — Component Operators (Grey/Light Blue)

What they carry: Everything — a COMP is a container that holds an entire sub-network of operators from any family. COMPs are also the way you create the 3D scene hierarchy, UI elements, and reusable modules.

Key COMPs:

  • Base COMP — a generic container. Drag operators into it to organise your network. Think of it as a folder.
  • Geometry COMP — a 3D object in the scene. Connect a SOP to it as geometry and a MAT as its material. Placed inside a Object COMP hierarchy for scene layout.
  • Camera COMP — defines a 3D viewpoint. Connect to a Render TOP to produce a rendered image.
  • Light COMP — a light source in a 3D scene (point, directional, or spot).
  • Window COMP — creates an output window on a monitor. Used in performance situations to show the final output on a second screen or projector.
  • Panel COMP — a UI element such as a button, slider, or text field. Used to build custom control interfaces.

Wiring Rules and Bridge Operators

Operators in different families have different wire types and cannot be connected directly. Attempting to wire a TOP output into a CHOP input creates no connection — the output dot and input dot are just different shapes.

To move data between families you use bridge operators:

  • CHOP → TOP: Use the CHOPto TOP. It converts a CHOP channel’s current value into a solid-colour pixel or uses it to index into a lookup texture.
  • TOP → CHOP: Use the TOP to CHOP. It samples pixels from a TOP and turns their colour values into CHOP channels.
  • SOP → TOP: You cannot directly render a SOP into a TOP. The path is: SOP → Geometry COMP → apply a MAT → use a Camera COMP and a Render TOP. The Render TOP produces a 2D image of the 3D scene.
  • CHOP → SOP: Use the CHOP to SOP or pipe the CHOP values into a Null CHOP and reference them in a Script SOP or expressions.
  • DAT → CHOP: Use the DAT to CHOP, which reads values from a Table DAT’s cells and creates channels from them.

What “Cooking” Means

Every operator in TouchDesigner has a cook state. When an operator’s inputs change or it is forced to update, it cooks — it runs its processing logic and produces a new output. The cook propagates downstream: if operator A cooks, operator B (which reads A’s output) is marked dirty and will cook next frame if anything downstream of B needs its output.

This lazy-evaluation system means operators that nobody is looking at do not waste GPU or CPU time. A complex sub-network inside a COMP that has its viewer closed and no active connections to the output is essentially free. Understanding this lets you structure networks efficiently — disable or bypass branches you are not currently using rather than deleting them.

The green cook indicator dot on an operator’s tile shows whether that operator ran this frame. If you see an operator unexpectedly cooking every frame, it has an upstream source that changes every frame — often an absTime expression or an audio input.

With the six families clear in your mind, the next tutorial builds your first real network from a blank canvas.