TouchDesigner

TouchDesigner is a node-based visual programming language for real-time interactive multimedia content. Developed by the Toronto-based company "Derivative," it's often used by artists, programmers, creative coders, software designers, and performers to create performances, installations, and fixed media works.

.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}

Column 1Column 2
This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: "TouchDesigner" – news · newspapers · books · scholar · JSTOR (April 2021) (Learn how and when to remove this message)

.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent;color:inherit}.mw-parser-output .infobox-3cols-child{margin:-3px}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}

TouchDesigner
Derivative
2025.32280
/ January 20, 2026 (2026-01-20)
Windows, macOS
3D computer graphics
Proprietary
derivative.ca

TouchDesigner is a node-based visual programming language for real-time interactive multimedia content. Developed by the Toronto-based company "Derivative," it's often used by artists, programmers, creative coders, software designers, and performers to create performances, installations, and fixed media works.

Greg Hermanovic, Rob Bairos, and Jarrett Smith founded the Canadian company Derivative. In 2000, Hermanovic used Houdini 4.1 to help build TouchDesigner. From 2002 to 2007, TouchDesigner's release title adopted the trailing 007 to 017 digits to indicate its versioning. In 2008, Derivative released a beta version of the platform called TouchDesigner 077, a rewrite of its previous versions that incorporated a fully procedural OpenGL composing and effects pipeline.

TouchDesigner covers several major areas of 2D and 3D production, including:

  • Rendering and compositing
  • Workflow and scalable architecture
  • Video and audio in and out
  • Multi-display support
  • Video mapping
  • Animation and control channels
  • Custom control panels and application building
  • 3D engine and tools
  • Device and software interoperability
  • Scripting and programming

Operators are the building blocks of a TouchDesigner project. These objects are represented as Nodes in the user interface and are connected to create procedural effects and animation. Each operator is customized with a unique set of parameters and flags that control its operation and processing. Operators, often referred to as ops, come in six varieties:

  • COMP – Components represent 3D objects, panel components, and other various operators. These components can house the entire networks of other operators.
  • TOP – Texture operators handle all 2D image operations.
  • CHOP – Channel operators are used for motion, audio, animation, and control signals.
  • SOP – Surface operators are the native 3D objects of TouchDesigner responsible for 3D points, polygons, and other 3D "primitives".
  • POP – Point Operators run on the GPU accelerated graphics card or chips, and creates/modifies 3D data which is rendered by the Render TOP or passed to devices like DMX lighting, LED arrays, lasers or other external systems.
  • MAT – Materials are used for applying materials and shaders to the 3D rendering pipeline.
  • DAT – Data operators are for ASCII text as plain text, scripts, XML, and tables.

Component operators are unique compared to other operator families in that they contain their own networks. Component networks can contain operators and/or additional sub-networks (i.e. additional components).

Texture operators are image-based operations that are GPU-accelerated. Data in TOPs can be scaled to any resolution, limited only by the amount of RAM available on a system's graphics card.

Channel operators are the backbone of the control system in TouchDesigner. Used for processing motion data, audio, on-screen controls, MIDI data, and other input devices, these operators organize data as a series of channels. According to TouchDesigner's documentation, they were designed to "reduce the tedium of motion editing and to help build and manage more complex motion".

Surface operators are objects responsible for 3D operations and modeling in TouchDesigner. These objects are used to generate, import, modify, and combine 3D surfaces. Supported surface types are polygons, curves, NURBS surfaces, metaballs, and particles. This is perhaps the oldest part of TouchDesigner and has its roots directly in the Houdini 4.1 code base.

The P in POPs refers to “points” but co-incidentally it envelops other P’s - primitives, polygons, particle systems, point clouds and any form of data points for data visualizations. The data for POPs all starts as points with attributes, and from points they can be employed to work with particle systems, point clouds, polygons, lines, spline curves, and any 3D geometrical shape and form of data points. POPs are rendered by the Render TOP or can be passed to devices like DMX lighting systems, LED arrays, lasers or other external systems. Most simply, a POP is made of a points list, a vertex list, and a primitive list.

Materials are used as a part of the 3D rendering pipeline in TouchDesigner. Several standard material types exist, as well as materials that support importing custom vertex and pixel shaders.

Data operators are used to hold text, tables, text-encoded data (XML, JSON), and scripts primarily for Python programming or GLSL shaders. These operators are also sometimes used to store readme documents and other code comments in a given network.

TouchDesigner is used by a variety of artists working in the fields of generative art, audiovisual performances, and interactive media. Notable artists include:

  • Beeple

  • Bileam Tschepe

  • Lucio Arese

  • Nele Ober

.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}body.skin-vector-2022 .mw-parser-output .reflist-columns-2{column-width:27em}body.skin-vector-2022 .mw-parser-output .reflist-columns-3{column-width:22.5em}.mw-parser-output .references[data-mw-group=upper-alpha]{list-style-type:upper-alpha}.mw-parser-output .references[data-mw-group=upper-roman]{list-style-type:upper-roman}.mw-parser-output .references[data-mw-group=lower-alpha]{list-style-type:lower-alpha}.mw-parser-output .references[data-mw-group=lower-greek]{list-style-type:lower-greek}.mw-parser-output .references[data-mw-group=lower-roman]{list-style-type:lower-roman}.mw-parser-output div.reflist-liststyle-upper-alpha .references{list-style-type:upper-alpha}.mw-parser-output div.reflist-liststyle-upper-roman .references{list-style-type:upper-roman}.mw-parser-output div.reflist-liststyle-lower-alpha .references{list-style-type:lower-alpha}.mw-parser-output div.reflist-liststyle-lower-greek .references{list-style-type:lower-greek}.mw-parser-output div.reflist-liststyle-lower-roman .references{list-style-type:lower-roman}