TOPs: Texture Operators
Learn how GPU-accelerated Texture Operators generate, transform, and composite 2D imagery in real time.
Texture Operators — TOPs — are the backbone of visual work in TouchDesigner. Every 2D image you see in a network, every generated pattern, every composited layer, is processed by a TOP. Unlike CPU-based image processing tools you may have used before, TOPs run entirely on the GPU. This means you can stack dozens of operations together and still achieve real-time frame rates, even at high resolutions.
What TOPs Actually Do
A TOP holds a 2D grid of pixels — exactly like a texture in a game engine. Each TOP in your network takes zero, one, or more image inputs, performs some operation, and outputs a new image. The output can be wired into the next TOP, into a COMP for display, or into a material for 3D rendering. The data never leaves the GPU unless you explicitly pull it to the CPU (which you almost never need to do for visual work).
Resolution and Pixel Format
Two settings control the quality and memory cost of every TOP: resolution and pixel format.
Resolution determines how many pixels the image contains. You set it in the Common page of every TOP. By default, a TOP inherits the resolution of its first input — so if a Movie File In TOP outputs 1920×1080, any TOP connected after it will also be 1920×1080 unless you override it. You can override with the Resolution parameter, setting a fixed pixel width and height, or you can use fraction mode to make a TOP half the resolution of its input for cheaper processing.
Pixel Format determines how many bits are used per colour channel:
- 8-bit per channel (
rgba8): The default. Values run 0–255 per channel. Enough for most display work, but you lose precision when doing colour math — values clip at white and black. - 16-bit float per channel (
rgba16float): Each channel stores a floating-point number. Values can exceed 1.0 (overbright) and go below 0.0 without clipping. This is the standard for compositing work where you need headroom. - 32-bit float per channel (
rgba32float): Maximum precision. Useful for data textures, scientific visualisation, or situations where you need very fine gradient steps. Uses four times the VRAM of 8-bit.
For most generative visual work, starting at rgba8 is fine. Switch to rgba16float as soon as you start blending layers or doing colour correction in a chain.
Generator TOPs
Generator TOPs create images from nothing — they need no input.
Noise TOP generates procedural noise patterns using a selectable algorithm: Sparse (Perlin-like), Hermite, Harmonic Summation, or GPU Noise. The Period, Amplitude, and Offset parameters control the noise’s frequency and position over time. Wire an expression like absTime.seconds into the Translate parameter and the noise will animate continuously.
Ramp TOP generates linear or radial gradients between colours you define. Use it as a colour source, a mask, or a lookup table for colourising other images.
Circle TOP draws a filled or outlined circle with anti-aliasing. Radius, edge softness, and centre position are all animatable — straightforward, but invaluable for masks and UI elements.
Text TOP renders text using any font installed on your system. You can set size, alignment, colour, and kerning. For dynamic text driven by Python or DAT data, reference a Text DAT in the Text parameter.
Movie File In TOP loads still images or video files and outputs them as a texture stream. Set Loop to On and the video plays repeatedly. Speed is a multiplier — 0.5 plays at half speed, –1 reverses.
Effect TOPs
Effect TOPs take one or more inputs and transform them.
Blur TOP applies a Gaussian, Box, or Radial blur. The Filter Size parameter controls how many pixels wide the blur kernel is. Increase it for a heavy glow effect.
Level TOP is your brightness/contrast/gamma tool. It works like Levels in Photoshop: set input black/white points and output black/white points to remap the tonal range. The Opacity parameter is also here, making Level TOP act as a simple fade control.
HSV Adjust TOP converts your image into hue/saturation/value space, applies offsets and multipliers, then converts back. Shift Hue by 0.5 to invert all colours; reduce Saturation to desaturate; multiply Value to brighten. These are additive adjustments, so wiring an animated CHOP channel into Hue Rotate creates a continuously colour-cycling texture.
Edge TOP computes the gradient magnitude of the input image, highlighting areas of rapid brightness change. Think Sobel filter. The result is a glowing edge mask you can then composite back over the original.
Threshold TOP converts a greyscale image into a hard black-and-white mask based on a cutoff value. Pair it with a Blur TOP before thresholding for a soft, organic-looking shape.
Composite TOPs
Over TOP composites the second input over the first using alpha. Standard Porter-Duff compositing.
Add TOP adds pixel values together — great for creating bloom and glow by adding a blurred version of a bright image back onto itself.
Multiply TOP multiplies pixel values. Multiply any image by a black-and-white mask to cut out a shape.
Composite TOP is the most flexible: it accepts multiple inputs and lets you choose a blend mode per layer from a long list including Screen, Subtract, Difference, and Luminance.
The Transform TOP
The Transform TOP repositions, rotates, and scales an image within the frame. Translate, Rotate, and Scale parameters accept static values or CHOP channels, making it trivial to animate an image across the frame or spin a shape continuously. The Extend parameter controls what fills the area outside the image: hold (repeat the edge pixels), repeat (tile), mirror (mirror-tile), or zero (black).
Putting It Together
Here is a practical starting network. Place a Noise TOP and set its Period to 0.4 and Translate Y to absTime.seconds * 0.1. Connect it to a Blur TOP with Filter Size 10. Connect that to a Level TOP — set Input Black to 0.3 and Gamma to 1.4 to punch up the contrast. Connect Level TOP to an HSV Adjust TOP and set Hue Rotate to absTime.seconds * 0.08 so the colours shift slowly over time. Finally, add a Null TOP at the end and rename it OUT. Always terminate chains with a Null TOP — it acts as a clean output point you can reconnect later without breaking downstream wires.
Spend time exploring the Common page parameters shared by every TOP. The Cook parameter lets you freeze a TOP, stopping it from updating and freeing GPU cycles — useful for static backgrounds. The Viewer parameter lets you toggle whether the node displays its contents in the network view. Understanding these fundamentals will make every visual system you build faster and cleaner.