Bullet Solver CHOP - Extracts information from a Bullet Solver COMP or Actor COMP as channels that can be manipulated in CHOPs and then fed back into the simulation using the Bullet Solver COMP's 'Feedback CHOP' parameter.

Custom OPs - Now C++ OPs you create have a new API allowing them to act like regular built-in operators. This includes giving them their own custom names and having them available in the OP Create Dialog under a new 'Custom' tab.

Non-Commercial licenses now work with CPlusPlus OPs and Custom OPs, they no longer require a Commercial or Pro license.

Widgets User Interface Toolkit

Widgets - A new set of UI components for building control panels, performance interfaces, applications and systems. Designed to be modular and updatable, this new architecture is fully customizable and extendible and will be TouchDesigner's primary UI toolkit going forward. Widgets use python under the hood and the old tscript-based TUIK has been removed and deprecated.

This first release of Basic Widgets can be found in the Palette under UI > Basic Widgets. In the future there will also be a more advanced widget set for system builders.

Widget COMP - A new Panel COMP that is base component for building Widget UI systems. At this point it is similar to the ContainerCOMP, but additional features specific to Widget will be added.

Flow is a volumetric fluid based simulation of a burning gas system. Control the 3 main factors of temperature, fuel, and smoke to create amazing fire and smoke simulations.

Nvidia Flow Emitter COMP - Sets up an emitter and material. Controls the amount of fuel injected into the system as well as the temperature and amount of smoke. Material settings for the various components in the simulation are provided.

Nvidia Flow TOP - Runs the simulation and renders the result. Controls for the simulation include damping and fading, vorticity, and burn control for each step of the simulation.

Brilliant New Operators

Line MAT - New material that provides constant shading of lines with 3D depth rolloff and color controls. Control over line widths, line end points, drawing points, drawing vectors and arrows, and more.

Audio NDI CHOP - New audio CHOP to receive audio input over NDI. There coincides a new parameter for NDI Out TOP to select an audio CHOP to send as output over NDI.

NDI DAT - New DAT to list all NDI sources found on the network. It also includes callbacks to trigger scripts on events.

Camera COMP - Added Quad Reprojection support. This allows an arbitrary section of a render, as defined by 4 points from a SOP, to be treated as the projection plane. The contents of the quad are reprojected to fill the final output view as part of the render, resulting in a full resolution render for that sub-region of the original render.

Light COMP - Added 'Projection Map Type' parameter that allows selecting a new 'Point (Equirectangular)' projection type. This will project an equirectangular texture out in all directions from the light's position.

TOPs - Added "Parent Panel Size" to the Output Resolution parameter menu; this will set the resolution to the width/height of the Parent Panel. If the immediate parent is not a panel, it will look up the hierarchy and use the width/height of the first parent panel found.

Movie File In TOP - Added support for hardware decoder on Nvidia GPUs. New Hardware Decode parameter on the 'Tune' page enables it. Will support 10 and 12-bit H264/H265s and YUV 444 files on supporting hardware.

Render TOP - Added parameters to only render a few faces for a cube map if desired.

Render TOP - Added support for Image Output. This gives an extra buffer of arbitrary type/size/format that can be written to using imageStore() in GLSL MATs. The results can be accessed using a Render Select TOP.

GLSL TOP, GLSL MAT - Added 'Preprocess Directives' DAT parameters. Specifies a DAT that contains code that will be added at the start of all the compiled shaders. This is where #extension directives should go, as well as common #define values to be set for all shader stages.

OpenVR CHOP - New Info DAT information which contains the serial numbers for controllers. This offers a reliable way to have the same controller be used for the same action regardless of when they become visible to the system.

GroupSOP_Class - Added a new class which outputs the groups of geometry as a dictionary. It’s possible to iterate through the group's dictionary and check if a Point or Primitive belongs to a group. The Script SOP and Model SOP allow for you to add/delete an element to/from the group, get the owner of the group, set or get a group name or thoroughly destroy a group.

Upgraded RealSense TOP / RealSense CHOP Windows API version to 11.0.27.1384 (2016 R3). This removes support for the R200 when using this API, but adds support for Hand Cursor as well as stability improvements.

SOP to DAT - Added 'group' column that shows what groups (or points or primitives) a SOP is part of. The DAT to SOP can conversly now search for a 'group' column and properly assign groups to its geometry.

Changed default preference for filename increment to be "On and Save to Backup Folder".

Root component is now a Base COMP, previously a Null COMP.

TUIK has been removed from the Palette. RIP TUIK, thank you for your service.

Custom Operators - Adding a /Plugins directory next to the .toe file that will also be searched for custom operators. This allows projects to move more easily between machines that do not have the custom OPs installed, and helps manage project-based custom OPs more easily for deployment.

Initialize CUDA for any C++/Custom OP, just in case it ends up using it internally.

You can zoom into the movie image using (like in the network editor) the roller wheel, and left and middle buttons to pan/zoom. Zooming up-close, the pixels become discrete squares, and their values are displayed at the bottom right. Roller wheel zoom is off by default.

Control Panel Always On - on by default now.

Contents can adapt to any compoennt size.

Specify height of each control strip.

Movie can be behind or above controls.

Can now output mvspec.tox for later use with a moviePlayer in another process.

Blend enabled for Presetblendtime par in parent in init when PresetsComp reinitialized after previously being initialized (these pars should be filtered so not to appear in the settings list)

'Updates:

Pulse parameters disabled by default

Created internal preset values DAT inspector.

Added functionality for updating all presets in all banks when a parameter is added, removed or renamed on the target component. A confirm update dialog is created when a change is recognized. Also a pulse button has been added to the Setup page to manually update all presets with new or changed parameters. This is useful if a default value (other than the TD default value for the parameter type) for the new parameter for all the updated presets is wanted to be set. The workflow is as follows:

Added new parameter(s)

When confirm dialog opens and asks to update all presets, press cancel

Set the value of the parameter

Press Update All Presets button on Setup page and confirm.

Now all previously stored presets will have the desired value(s) set in the new parameters.

disable both recall and blend of parameters with expressions by default on store of preset with expression in parameter
filter target components "presets parameters" in settings list so they are not viewable or editable.

BACKWARDS COMPATIBILITY WARNING - For CPlusPlus nodes, matrices are now returned in column major (vector on the right) convention to be more consistent with other code such as GLSL and tdu.Matrix classes.

BACKWARDS COMPAITIBLITY WARNING - Evaluate DAT - The behavior of 'Convert Backslash Characters' has been streamlined, and only affects \\ \t \n and \r sequences. Furthermore, it will not strip quotes as it did previously.

Added ability to remap color to depth space. This is useful to create a cleaner (but lower resolution) point cloud along with 'Depth Space Point Cloud' than the one that is in color space, as it has less points that have unknown positions.

Critical Bug Fix from 2019.18360 - Files loaded and then saved in 2019.18360 with Unicode strings (including Icons for Widgets) were corrupting those Unicode strings. This build fixes the issue, as well as attempts to recover the corrupted strings. Please check any unicode data you have in your file to ensure it loaded up properly, and re-save your file using this build.

Replicator COMP - Fixed a crash when Template DAT recreates all during cook. Also addressed some undercooking/overcooking issues.

Window COMP - If 'Window Operator set to a Base COMP, it now properly handles various viewer types. If Base COMP's 'Operator Viewer' parameter is set to a Panel COMP or TOP, 'Opening Size' can be used by the WindowCOMP. Proper warnings and size menu selection when resolving to a blank Base COMP.

BACKWARDS COMPATIBILITY WARNING - GLSL MAT - Geometry shaders that are using lines primitives as input must use 'lines_adjacency' as their input type, not 'lines'. This change occured in 2019.10000 branch but was not documented yet.

Line MAT - The following fixes will result in previous settings rendering differently. See BACKWARD COMPATIBILITY below.

The design for line width was such that a line width of 1 means 1/1000 of the width of the rendered image ((i.e. it is resolution-independent). Since a few builds back, it was half the expected width.

By default, the line width is independent of the Camera's Perspective field-of-view viewing angle or the Orthographic Ortho Width. The toggle "Width Affected by FOV/Ortho Width", which affects the line width based on viewing angle or ortho width, was fixed: When the viewing angle is 90 degrees, the line width is the same as if the toggle was off, and when On and the viewing angle decreases, the line width goes up. The same thing happens when the Ortho Width is 1 and below 1.

the Line Width Near default now 4 (vs 1) and the Line Width Far default to 2 (vs .1).

BACKWARD COMPATIBILITY - OpenVR CHOP - The update to OpenVR's new input system means projects using the old input system will need to be updated to the use the new action based system now used in v1.4.18

BACKWARD COMPATIBILITY - Line MAT - The following fixes will result in previous settings rendering differently. We apologize for the changes.

Changed Width Near/Far defaults.

In Perspective Camera FOV is 90 degrees the "Width Affected by FOV/OrthoWidth" toggle being ON is the same as being OFF.

Laser CHOP - Successor to the Scan CHOP. Adds extra blanking controls and new functionality for controlling lasers more accurately.

LTC In CHOP / LTC Out CHOP - LTC CHOPS now work for higher frame rates. LTC In will now adjust the frame value based on the value in the User 1 channel. User 1 channel is now automatically used for frame rates over 30.

Palette:moviePlayer - The Movie Spec components now hold persistent movie metadata (as read-only parameters) that is normally only available if you open the movie files ie. images per second, lengths, resolution, aspect.

GroupSOP_Class - Added a new class which outputs the groups of geometry as a dictionary. It’s possible to iterate through the group's dictionary and check if a Point or Primitive belongs to a group. The Script SOP and Model SOP allow for you to add/delete an element to/from the group, get the owner of the group, set or get a group name or thoroughly destroy a group.

Fixed some cases of dragging windows loosing focus and not dragging on macOS.

List COMP - Fixed .setKeyboardFocus() not working until cell had been clicked initially.

SOP to DAT - Added 'group' column that shows what groups (or points or primitives) a SOP is part of. The DAT to SOP can conversly now search for a 'group' column and properly assign groups to its geometry.

An Operator Family that creates, composites and modifies images, and reads/writes images and movies to/from files and the network. TOPs run on the graphics card's GPU.

An Operator Family that reads, creates and modifies 3D polygons, curves, NURBS surfaces, spheres, meatballs and other 3D surface data.

Information associated with SOP geometry. Points and primitives (polygons, NURBS, etc.) can have any number of attributes - position (P) is standard, and optional are normals (N), texture coordinates (uv), color (Cd), etc.

OP Snippets is a set of numerous examples of TouchDesigner operators, which you access via the Help menu. These can be copied/pasted into your projects.

Each SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.

The Graphics Processing Unit. This is the high-speed, many-core processor of the graphics card/chip that takes geometry, images and data from the CPU and creates images and processed data.

An Operator Family that manipulates text strings: multi-line text or tables. Multi-line text is often a command Script, but can be any multi-line text. Tables are rows and columns of cells, each containing a text string.

The Container component type is a Panel Component that holds and displays any number of Panel Components (also known as Gadgets) in Panel.

Binding is a Parameter Mode that ties two or more parameters together, where changing the value of any one of the bound parameters changes value of all the bound parameters. The actual value is stored in one of bound parameters, called the bind master parameter.

An Operator Family that associates a shader with a SOP or Geometry Object for rendering textured and lit objects.

Any of the procedural data operators. OPs do all the work in TouchDesigner. They "cook" and output data to other OPs, which ultimately result in new images, data and audio being generated. See Node.

The width and height of an image in pixels. Most TOPs, like the Movie File In TOP can set the image resolution. See Aspect Ratio for the width/height ratio of an image, taking into account non-square pixels.

A custom interactive control panel built within TouchDesigner. Panels are created using Panel Components whose look is created entirely with TOPs.

A CHOP outputs one or more channels, where a channel is simply a sequence of numbers, representing motion, audio, etc. Channels are passed between CHOPs in TouchDesigner networks. See also Export.

Unlike a Wire that connects nodes in the same Operator Family, a Link is the dashed lines between nodes that represent other data flowing between nodes, like CHOP Exports, node paths in parameters, and expressions in parameters referencing CHOP channels, DAT tables and other nodes.

The component types that are used to render 3D scenes: Geometry Component contain the 3D shapes to render, plus Camera, Light, Ambient Light, Null, Bone, Handle and other component types.

The connection of an output of one node to the input of another node in a network. In contrast, see Link.

Operators that have 1 or more input, like a Math CHOP, are called filters. See Generator.

The location of an operator within the TouchDesigner environment, for example, /geo1/torus1, a node called torus1 in a component called geo1. The path / is called Root. To refer instead to a filesystem folder, directory, disk file or http: address, see Folder.

A form of DATs (Data Operators) that is structured as rows and columns of text strings.

A surface type in SOPs including polygon, curve (NURBS and Bezier), patch (NURBS and Bezier) and other shapes like sphere, tube, and metaball. Points and Primitives are part of the Geometry Detail, which is a part of a SOP.

A built-in panel in TouchDesigner that contains a library of components and media that can be dragged-dropped into a TouchDesigner network.

TouchDesigner Component file, the file type used to save a Component from TouchDesigner.

Strictly refers to a window in Microsoft Windows. User-created windows are made with Panels inside Window Components, aside from the TouchDesigner editor window and its dialogs.

A text string that contains data (string, float, list, boolean, etc.) and operators (+ * < etc) that are evaluated by the node's language (python or Tscript) and returns a string, float list or boolean, etc. Expressions are used in parameters, DATs and in scripts.

An Operator Family that associates a shader with a SOP or Geometry Object for rendering textured and lit objects.

The OpenGL code that creates a rendered image from polygons and textures. Shaders can be made of up to three parts: Vertex Shader, Geometry Shader and/or Pixel Shader, which are either embedded inside Materials, or placed in Text DATs and referenced to a GLSL Material.

TOuch Environment file, the file type used by TouchDesigner to save your project.

The operating system's holder of files and other folders (directories). It does not refer to operators within TouchDesigner. See Network Path.

TouchDesigner is a hierarchy of components. "root" is the top-most network in the hierarchy. The Path is simply /. A typical path is /project1/moviein1.

To pulse a parameter is to send it a signal from a CHOP or python or a mouse click that causes a new action to occur immediately. A pulse via python is via the .pulse() function on a pulse-type parameter, such as Reset in a Speed CHOP. A pulse from a CHOP is typically a 0 to 1 to 0 signal in a channel.

Parameters in TouchDesigner are an operator's settings (numbers, menus, flags, strings, paths) which the user can alter. Parameters for any operator can be opened by right-clicking on the operator and selecting "Parameters..." A currently selected operator's parameters can be viewed in a Network Editor by pressing the keyboard shortcut 'p'.

Exporting is the connection of CHOP channels to parameters of operators. The output of each exporting CHOP is one or more channels, active only while the CHOP Viewer is on. The current value of a channel can be exported to a parameter of any operator, overriding that parameter's value. See Parameter.

A custom interactive control panel built within TouchDesigner. Panels are created using Panel Components whose look is created entirely with TOPs.

To re-compute the output data of the Operators. An operator cooks when (1) its inputs change, (2) its Parameters change, (3) when the timeline moves forward in some cases, or (4) Scripting commands are run on the node. When the operator is a Gadget, it also cooks when a user interacts with it. When an operator cooks, it usually causes operators connected to its output to re-cook. When TouchDesigner draws the screen, it re-cooks all the necessary operators in all Networks, contributing to a frame's total "cook time".

A dialog box in which commands and scripts can entered manually. Script errors and python print() messages are also output to the textport.

A 3D viewport for viewing and manipulating 3D scenes or objects interactively. A geometry viewer can be found in Panes (alt+3 in any pane) or the Node Viewers of all Geometry Object components.

The viewer of a node can be (1) the interior of a node (the Node Viewer), (2) a floating window (RMB->View... on node), or (3) a Pane that graphically shows the results of an operator.

A parameter in most CHOPs that restricts which channels of that CHOP will be affected. Normally all channels of a CHOP are affected by the operator.

There are 2 kinds of parenting. The "parent component" is the component in which a node resides. The metaphor is extended to include grand parents, grand-grand parents, etc. The root / is the ultimate parent to all nodes. See also 3D Parenting and panel Parenting.

The 3D data held in SOPs and passed for rendering by the Geometry COMP.

The 3D data held in SOPs and passed for rendering by the Geometry COMP.