Release Notes/099/2018.20000

From TouchDesigner Documentation
Revision as of 14:32, 10 July 2018 by Ben (talk | contribs)
Jump to: navigation, search

See our Spring 2018 Official Announcement for an overview of new features.

For the latest Official build, jump to Build 2018.24330

Official Build 2018.22800 - May 11, 2018[edit]

New Features[edit]

Major New Additions[edit]

  • This version has substantial speed optimizations. Many of the speedups focus on using python expressions in parameters, and significant improvements to startup and project launch time have been made.
    • new Optimized Python Expressions will speed up commonly-used python expressions in parameters.
    • Caching expression results so they don’t need to recalculate. If a node needs to cook, only the parameters that *may* have changed will be re-evaluated.
    • Optimized the startup and launch process.
    • across-the-board speed improvement of TouchDesigner by between 10% and 25%.
    • Perform CHOP has new parameters to monitor how many expressions are optimizes and cached.
  • Dongle-based Component Privacy - Support for CodeMeter dongles to add Privacy to components and license their use.
    • Developers can now create CodeMeter dongles that will license the component to run (cook). These dongles do not give access to the networks inside, they just allow them to run on any licensed TouchDesigner or TouchPlayer.
    • A 'Developer Dongle' is used to make a component private and continues to give developer access to the networks inside the component.
    • Managing privacy with a Developer Dongle can be accessed through python or the Privacy Dialog (right-click on component and select 'Privacy...').
    • Setting up Developer Dongles is a service provided by CodeMeter and handled between the Developer and CodeMeter.
    • A Developer Dongle requires a TouchDesigner Pro license but no additional fees charged by Derivative.
    • Contact us for further details about Developer Dongles.
  • Dongle Floating Licenses - Multiple licenses can be loaded onto a dongle and then distributed to other computers on the network when TouchDesigner is launched.

COMPs - Components[edit]

3D Objects[edit]
  • Geometry COMP - Additions to GPU instancing.
    • Added option for SOPs to be used as the points input for instancing.
    • Added the ability to change the order of Rotate To Vector to be Post and Pre Rotation.
  • Light COMP - Added more texture controls for Projector Map, available in the ">>" menu options to the right of the parameter.
  • Environment Light COMP - New options to use pre-filter environment maps.
    • Automatic - Works as it did before and the Environment Light COMP automatically pre-filters the environment map.
    • From Pre-filter TOP - Uses the outputs from the new PreFilter Map TOP in the Pre-Filtered Diffuse Map and Pre-Filtered Specular Map parameters below. Both map types are calculated by the PreFilter Map TOP and specified here.
    • NOTE: Maps created with the PreFilter Map TOP can not be further processed before being used by the Light.
  • Panel Components - Any Panel COMP with 'Children' page of parameters now has options for scrollbars.
    • Separate options for horizontal and vertical scrollbars (Children page of parameters).
    • Scroll Overlay options (Panel page of parameters).
  • Panel COMP - Re-positioning of edges and centers improved to work with Anchors by adjusting Anchors or Offsets.
  • Panel COMP - New 'Anchor Drag' parameter (on Panel parameter page) allows updating of Anchor or Offset parameters by dragging the panel and its edges when the panel has Horizontal Mode or Vertical Mode set to Anchors.
  • Select COMP - Numerous improvements
    • New 'Match Size' parameter which when enabled uses the source's final layout size as its own size.
    • New 'Follow Selections' recursively evaluates select source (previous behavior).
  • Parameter COMP - Pages parameter now has a Scope menu for easier selection.
  • List COMP - Added rowIndent attribute which shifts an entire row of specified pixels. Can be used to more easily create hierarchical tree browsers.
  • Window COMP - Improvements for working with multiple monitors and DPI scales.
    • Fixed 'Read Current Settings' not working well with multiple monitor configurations and DPI scaling.
    • Added ability to shift a window to whatever monitor the mouse is located on when it is opened.
  • macOS 10.13 (High Sierra) can now span windows across multiple monitors, allowing Perform Mode and Window COMPs to be setup the same as on Windows OS configurations. To enable this in macOS, System Preferences > Mission Control > Displays have Separate Spaces must be turned Off.

TOPs - Image & Video[edit]

  • Movie File Out TOP - H.265 support
    • Added support for H.265 HEVC encoding via Nvidia's GPU hardware encoder. Requires Nvidia GPU and Windows OS.
    • Added Bit Rate Mode controls for H.264/H.265 on Advanced parameter page.
    • Added support for saving mipmap levels into .dds files.
    • Added support for regular HAP and HAP Alpha encoding.
    • Added functionality for outputting image sequences (can output file formats .tiff .jpeg .bmp .exr .png .dds).
  • Video Device In TOP, Video Device Out TOP - Add support for GPU Direct for Video for AJA devices. This greatly reduces latency, resulting a 1-2 frame latency on input and 1-2 frame latency on output.
    • Added bouncing feature for reflection.
    • Added a menu to allow point intersections to be reflected.
    • Upgraded to latest AJA SDK version, which should add support for newer devices such as the AJA Io 4k Plus.
  • Video Device In TOP - Added support for Ximea cameras.
  • RealSense TOP - Added support for Intel's new cross-platform librealsense API - This supports newer D400 series RealSense cameras on both Windows and macOS 10.13+
  • Layout TOP - New TOP that allows quick layout of input TOPs in row, column, or grid format.
  • Substance TOP - Added support for input images which allow swapping the material's Input Image if the Substance material author used them in Substance Designer.
  • Web Render TOP - Added option 'Use DAT' for specifying a DAT with text/html data scheme, enabling you to assemble HTML, SVG or other formats in a DAT and render them all within TouchDesigner.

GLSL TOPs[edit]
  • GLSL TOP / GLSL MAT - Added support for #include statements on GPUs/Drivers whose GLSL compiler support it. Node paths can be used directly, including relative paths.
  • GLSL TOP / GLSL Multi TOP - Added support for atomic counters.

CHOPs - Channels[edit]

  • S Curve CHOP - A new CHOP that generates S curves.
  • Hokuyo CHOP - New CHOP that supports serial Hokuyo devices/sensors.
  • PosiStageNet CHOP - New CHOP that supports decoding of the PosiStageNet protocol.
  • DMX In CHOP - Added 'Start Codes' parameter that will filter output based on the start codes of incoming sACN packets.
  • Analyze CHOP - Added Duplicates function. Counts how many times a value appears in a channel and the index of the sample with that value. Great for creating Histograms for example.
  • OpenVR CHOP - Added battery_level channel for devices.
  • Event CHOP - A Callback DAT has been added for onCreate() and onDestroy() callbacks.
  • Timer CHOP
    • Added the Active parameter to allow you to shut down cooking while the timer is not being used: When Active is off, the CHOP stops cooking and it holds the output channels at a constant value at frame 1 (i.e. it turns off Time Slicing).
    • Added max and countdown columns for each timer* and running row values for both serial and parallel timers.
  • Info CHOP - Now includes warnings and errors channels.
  • Render Pick CHOP - Added priority check to pick.

SOPs - 3D Surfaces[edit]

  • Alembic SOP - loads Alembic geometry.
  • CPlusPlus SOP - Can load a mesh with normal and color (currently for Point Attribute) and get input parameters from TOP, DAT, and CHOP. Can output to SOP to CHOP and SOP to DAT.
    • includes a SimpleShapes example C++ SOP project which can draw a triangle or a cube and resize the cube with CHOP input values.
  • Script SOP - Added Beziers - scriptSOP.appendBezier() .order .basis .segments .anchors .updateAnchor .appendAnchor deleteAnchor .tangents .updateTangent
  • modelSOP Class now has access to same geometry building methods as the scriptSOP Class.
  • Ray SOP - New additions

MATs - Materials[edit]

  • PBR MAT - Can now send specular/metallic/roughness/.. maps to any of the color buffers, on the Advanced parameter page.
  • PBR MAT - Added 'Final Specular Color' and 'Final Diffuse Color' as options for outputting to color buffers.
  • Phong MAT - Environment Map parameter can now accept a Equirectangular texture.
GLSL MATs[edit]
  • GLSL MAT - More build-in TD* functions are now available to the Geometry shader.
    • TDWorldToProj(vec3 p, int cameraIndex) to allow for projection transforms.
    • TDPerlinNoise() and TDSimplexNoise() functions as well.
  • GLSL MAT - 'Output Shader' feature can now optionally include a geometry shader to get started with.
  • GLSL MAT - Fish Eye and Dual Paraboloid rendering can now work with geometry shaders, if the geometry shader uses TDWorldToProj().
  • GLSL MAT - Added TDCreateTBNMatrix() function.
  • GLSL TOP / GLSL MAT - Added support for #include statements on GPUs/Drivers whose GLSL compiler support it. Node paths can be used directly, including relative paths.

DATs - Data[edit]

  • Execute DAT - Added new callbacks onProjectPreSave and onProjectPostSave to help with prepping content before saving and taking action after saving.
  • Render Pick DAT - Added priority check to pick.
  • TCP/IP DAT - Now supports multiple NICs (network adaptors, cards, etc.)

Interface - UI[edit]

  • Great new UI feature: On the path bar at the top of any network, Right-click on any of the parts of the path (e.g. /project/geo1/something) and you get the component menu for that level where you can get View… Parameters… , without having to navigate up and back.(slight alignment issue)
  • Now RMB-click on components in the address bar to open their context menu.
  • Parameters now have 'Read Only' option making them non-editable. Right-click on a parameter and select 'Enable Read Only' or 'Disable Read Only'.
  • Performance Monitor - Added option to log extension compilation time.
  • GPU performance monitoring
    • The amount of time an OP spends getting executed on the GPU can now be seen in the info popup (MMB on the node or info icon in parameter dialog).
    • Python members for GPU timing.
  • The gal gadget library in Palette/UI has a few improvements (see its release notes inside)
    • Lightweight versions of sliders and buttons.
    • Adapts to anchors and auto-sizing by using gadgetop.width, .height
    • MIDI mapping fixed.
    • Radios and menus, when specified by table, pass through to the output all columns for the selected element.
    • Optimized radios.

New Python[edit]

  • Project.isPrivate .isPrivateKey now updates expressions.
  • Added maxResults to COMP.findChildren() args.
  • OP Class - Added relativePath() method.
  • OP Class.curPar returns the parameter currently being evaluated. Can be used in a parameter expression to reference itself.
  • OP.OPType now returns the name of the operator type;
      • Example 'waveCHOP'.
    • This isn't necessarily the same as OP.type +;
      • Example 'audiodeviceinCHOP' vs 'audiodevin' + 'CHOP'.
    • COMP.create() now takes a string OPType as a parameter, OR an operator type;
      • Examples
      • op('/project1').create('waveCHOP') #string
      • op('/project1').create(waveCHOP) #type
      • op('/project1').create(type('wave1')) #type of existing operator
  • TOP Class.curPass returns the current cooking pass iteration, beginning at 0. The total can be set with the 'Passes' parameter on the operator's common page.
  • DAT Class new members: .isText and .isTable to determine format
  • OSC Out DAT - sendOSC has two new keyword arguments.
    • useNonStandardTypes (defaults to True) - This can be set to False to force the command to only use the 4 standard types OSC supports: 32-bit int and float, string and blob.
    • use64BitPrecision (defaults to False) - This can be set to force sending both integers and floats as 64-bit values.
  • windowCOMP Class - Improvements for working with multiple monitors and DPI scales.
    • Added .contentX .contentY .contentWidth and .contentHeight members to get information about the location of the window's contents on the monitor.
    • Added 'scalingMonitorIndex' python member.
    • setForegound() activates the window and sets it to the foreground, sets focus and increases process priority. Can only be called by a foreground process or a child of a foreground process. Returns True if successful.
  • Monitor Class - Added scaled* members for width/height and bounds.
  • UI Class.openCOMPEditor(path) - Opens the Component Editor for the specified operator. 'path' - Specifies the path to the operator. An OP can be passed in as well. ui.openCOMPEditor(n)
  • App Class - app.launchTime is the total time required to launch and begin playing the toe file, measured in seconds.
  • App.desktopFolder points to current user desktop folder.
  • Project Class .stack() Formatted contents of current cook and parameter evaluation stack. (Formerly called project.evalStackInfo())
  • Par Class.readOnly member
  • There are two new types of custom parameters:
    • Page Class - appendPython() for Python-type parameters which are expression mode only. This can be used to more efficiently hold lists or dictionaries containing constant values.
    • Page Class - appendMomentary() method now produces a button parameter that is value 1 while selected and 0 when released. Par returns 'Momentary'.
  • Matrix Class
    • You can assign a list of 9 or 16 floats to the .vals member of the matrix to set its entries.
    • Matrix rows and columns can now accessed using rows and cols methods. They will be displayed as a list of lists.
    • The other way of accessing a column or a row is to use this format: a[:,1] for the second column and a[1,:] for the second row.
    • Matrices can now use the operator @ to do matrix multiplication specifically.
    • 3x3 matrices can now be constructed from passing in either 9 arguments, a list of 9 values, or 3 3-tuples.
    • A matrix can also be constructed from 4 lists of 4 numbers. This also works for both Vector and Position arguments.
    • Matrices can now be constructed from a 4x4 or 3x3 Table DAT of numbers, 9 channel or 16 channel CHOPs. For CHOPs the first value of each channel is taken.
    • Matrix data can be pushed to Table DATs using filltable method on a matrix object. The output will be of size 4x4.
  • Quaternion Class adds new methods for vector and matrix classes
    • Quaternion Class - New class to manipulate rotations using quaternions.
    • Matrix Class - Can now be constructed and rotated using quaternions.
    • Vector Class - Added new utility functions.
  • tdu.collapsePaths(path, asExpression=False) - Added asExpression flag to allow expressions involving app folders. Collapse order is now:
  1. project.paths
  2. project.folder
  3. app.binFolder
  4. app.configFolder
  5. app.samplesFolder
  6. app.preferenceFolder
  7. app.userPaletteFolder
  8. app.installFolder
  • tdu.clamp(inputVal, min, max) -> val - Returns the input value clamped between min and max values. Supports any types that can be compared (int, float, string, etc).
  • tdu.remap(inputVal, fromMin, fromMax, toMin, toMax) -> double - Returns the input value remapped from the first range (fromMin/Max) to the second range (toMin/Max).
  • tdu.printErrors() has been removed, and replaced with op.errors(recurse=True)
  • tdu.printStack() is replaced with new print(project.pythonStack())
  • ext.parentshortcut is deprecated: Do not use this form any more. Use parent.parentshortcut.
  • tdu.split() added - Returns a list from a space separated string, allowing quote delimiters.

string: any Python object... will be evaluated as str(string), so parameters will work. eval: if True, convert any valid Python literal structures: strings, numbers, tuples, lists, dicts, booleans, and None.


  split('1 2.3 None fred "one '2'" "[1,2]"')

yields ['1', '2.3', 'None', 'fred', "one '2'", '[1, 2]']

  split('1 2.3 None fred "one '2'" "[1,2]"', True)

yields [1, 2.3, None, 'fred', "one '2'", [1, 2]]

New Palette[edit]

  • TDAbleton 1.9 - The latest version of the Ableton Live - TouchDesigner environment is now included in the Palette. Using Ableton Link to sync the applications, TDAbleton exposes all the parts of your Ableton Live session in TouchDesigner and lets you control them bidirectionally.
    • Added Audio Level data transmitter from Ableton to TouchDesigner, including spectrum analysis rack. Also includes related TD Component for receiving this data.
    • Rack devices and related TD Component for easy control of TouchDesigner from Ableton.
    • Cleanup and modularization of M4L devices.
  • Updated Tools > probe - Aside from now reporting GPU times, which provides great insight, there are more controls exposed on the probe component. You basically copy it from the palette, go into perform mode and press ctrl-p.
  • Updated Tools > moviePlayer - faster, more robust, minimal impact when switching movies. A pulse button will spit out movieEngine, a UI-less version that runs faster and can be embedded in other tools. External control has been revamped to allow a specific CHOP and channel to drive its timer, and allow for the channel to be expressed in seconds, frame or fraction.
  • Updated Tools > multiMix - Fixed bug with shader compilation on macOS.
  • Updated Tools > webBrowser - Fix to allow selecting, copying, and pasting text.
  • cornerPinSOP added to the Tools folder.
  • KantanMapper improvements - Bezier softedge, invert mask for freeform, shape ID is now written into UV map.
  • particlesGpu now has control over birth rate. This is Windows OS only as it requires glsl 4.2 and atomic counter support.

Bug Fixes and Improvements[edit]

COMPs - Components[edit]

3D Objects[edit]
  • Light COMP - Fixed an issue where projection maps would also be projected out behind the light.
  • Environment Light COMP - Fixed cases of over calculating when cooking. New bug that was introduced in the previous build.
  • Fixed 'Display Options' in 3D Object COMP's RMB menu incorrectly opening parameters.
  • Panel Components
    • Now display by drawing a scaled texture instead of always rendering at native resolution. This improves behavior for scaling panels to different sizes. NON-BACKWARD COMPATIBLE
    • Now handle differently sized/stretched children when laying out left/right or top/bottom.
    • 'Size From Window' is no longer upated when the panel is resized inside a network pane.
    • Now include x, y, w, h info in popup help.
    • Fixed sides not showing background color when background TOPs not set to stretch.
  • Select COMP
    • Fixed recursion hang.
    • Fixed reported .width .height when size matched to source.
    • Fixed update issue when changing between Parameter COMPs in some cases.
  • List COMP
    • Fixed text spilling outside cells.
    • Fixed cell border offset bug.
    • Fixed rollover panel values.
    • Fixed prevRow, prevCol values for onHover, onDrop callbacks.
    • Fixed dragging off cells, off window, not using callbacks.
  • Parameter COMP
    • The minimum width the parameter can be drawn at before scaling can now be read using .minWidth
    • Option to hide/show 'Input OP' list when looking at parameters for a multi-input OP.
  • OP Viewer COMP - Fixed display of geometry nodes having bad/missing depth artifacts.
  • Window COMP - Reorganized and cleaned up parameters.
    • Removed unused Ignore Task Bar.
    • Removed Keep Window Aspect as it can be grabbed from the operator size.
    • Renamed Read Current Settings and fixed to work with native, dpi and also offsets.
    • Added warning for vsync on macOS.
  • Window COMP - Bug fixes.
    • Fixed crash due to monitor not found.
    • 'Update Settings from Window' un-doable.
    • Fixed Perform Mode starting up or switching to 'Automatic from COMP/TOP' setting even when set to use 'Custom Size' or 'Fill'.
    • Fixed issue where entering/exiting perform mode would sometimes display parts of the UI at the wrong size.
    • Fixed macOS Fill Location for All Monitors to go full screen no menu bars.
  • Replicator COMP
    • Fixed overcooking on time dependent masters and fixed replicants that reload with external .tox files.
    • Replicator scripts now track replicants better when they self-replace (ie: external tox's).
    • Replicants are now laid out in the network in template table order, *not* alphabetically as previously.
  • Cloning Improvements
    • Object.clones now includes clones that are currently disabled.
    • Fixed issue where pulsing disabled master clone the first time didn't update children.
    • Fixed crash when re-cloning the current node with custom parameters.

TOPs - Image & Video[edit]

  • Movie File In TOP
    • Fixed a crash that can occur when changing the 'Max Decode CPUs' parameter.
    • Fixed crash when reading 16-bit TIFF images.
    • Will now try to re-use memory automatically when the movie is changed (using preload() or not). This avoids the need to call unload(cacheMemory=True) on a Movie File In TOP before changing its target to avoid re-allocating new texture memory for the new movie file.
    • Fixed issues with playing back audio that has more than 8 channels.
  • Movie File Out TOP
    • Fixed a crash that can occur if the number of audio channels is reduced during a recording.
    • Fixed first frame missing in output movie/image sequence.
  • Video Device In TOP
    • Fixed some issues with GPU Direct and YUV color space images.
    • Updated Point Grey Spinnaker version to
  • NDI TOPs
    • Added support for faster formats and YUV to RGB. Improved enumeration of streams in NDI In TOP.
    • NDI In TOP - Added num_source to Info CHOP, reports number of NDI sources found on the network.
    • Upgrade SDK to (previously3.0.0.11).
  • Composite TOP
    • Fixed 'Preview Grid' mode not working correctly on some GPUs.
    • Fixed a bug where the same node being connected twice the Composite TOP can result in incorrect extend conditions.
  • Texture 3D TOP
    • Allow 'Replace Single' to work when 'Pre Fill' has also been used.
    • If Pre-Fill is On, will pre-fill again when un-bypassed or cooking is turned back on for the node.
  • Select TOP
    • Fixed this TOP not working with 3D Textures.
    • Can now resize the texture it's selecting.
    • Fixed some cases where the uTD*Info arrays had incorrect data.
    • Added GLSL 4.60 support (Windows only).
  • Tile TOP - Fixed a crash that can occur in some cases.
  • Transform TOP - If Extend is Zero, the background is now visible outside the bounds of the rectangle.
  • Text TOP - Fixed some line formatting issues with unicode text on macOS.
  • RealSense TOP - On macOS disabled librealsense2 (D400 series cameras) because of crash bug in the library - waiting for library fix to reenable.
  • Threshold TOP - Removed lower limit on threshold value.
  • Screen Grab TOP - Fixed crash and broken functionality that started to occur with Windows 10 Creators Update edition. (from Official Branch 2017.15980+)
  • CPlusPlus TOP / CPlusPlus CHOP / CPlusPlus SOP - Added embedded file support VFS.
  • TOP - Fixed crash that occured when using 'Save Image...' from the right click menu on TOPs.
  • Fixed crash on startup for some cases where TOPs required initialization.

CHOPs - Channels[edit]

  • DMX Out CHOP - Lots of improvements and bug fixes.
    • sACN, Art-Net. Removed restriction that net, subnet, universe must be unique since different IPs can be used.
    • Fixed multicast broadcasting bug on macOS.
    • Fixed general issue with multicast for sACN.
    • Cleaned up labels and parameter names.
    • Fixed bug with sACN where channel numbers weren't updating properly.
  • TOP to CHOP
    • Even when Download type set to 'Next Frame', load immediately on startup to avoid initialization errors dependent on the output.
    • Improved performance by only downloading the required section of the image instead of the whole image.
  • LTC In CHOP improvements
    • Break 50Hz, 60Hz frame values into two fields and add new option to put field value into 'User Data 1' value.
    • User values now full 4-bit values instead of clamped 0..9
    • Improved min/max ranges for parameters.
  • Render Pick CHOP
    • Now works correctly when doing fish-eye rendering.
    • Fixed incorrect picking/triggering channel values when 'Search Size' > 1.
    • 'Queued' parameter to turn off queuing and just take most-recent values.
    • Fixed a crash when bypass/unbypass state changed.
    • Speed dramatically improved for large numbers of channels.
  • File In CHOP - Fixed a crash if a movie file with no audio is opened with this CHOP.
  • Filter CHOP - Added chanIndex (ie. me.chanIndex) so you can have a different filter width per-channel.
  • Trigger CHOP - Don't trigger when adding channels, only on proper value changes.
  • Logic CHOP - Fixed a memory leak when scoping channels.
  • Keyboard In CHOP - Channel values should always start at 0 when a file loads, not the value they were saved at.
  • Speed CHOP - Added 'Reset on Start' option (default on) which resets the Speed CHOP output to zero on file startup to avoid possible accumulation precision errors.
  • Mouse In CHOP - Possible fix for some systems where it would not work.
  • Audio Device In CHOP
    • Fixed crash that can occur if DataPath driver is selected, but no DataPath driver is installed.
    • ASIO Input reworked to avoid hangs and sluggish responses when selecting drivers or changing channel input scopes.
  • Audio Device In CHOP, Audio Device Out CHOP
    • Fixed up Driver parameter so these nodes moves between Windows and macOS machines more cleanly bu adding the concept of default driver for each operating system.
  • Audio File In CHOP - Fixed issues with playing back audio that has more than 8 channels.
  • Audio Render CHOP
    • Added distance_attenuation channel to Info CHOP that points to an Audio Render CHOP.
    • Normalize listener up/ahead vectors to prevent large channel values in AmbiX format.

SOPs - 3D Surfaces[edit]

  • CPlusPlus SOP - Fixed load/unload crash.
  • Alembic SOP - Fixed issues with Transformion parameters and completed some performance optimizations.
  • Trail SOP - Fixed crash when turning off bypass flag and other crashes.
  • Sort SOP - Fixed the behavior of 'Sort by Neighbor' where it was causing crashes and removing points.

MATs - Materials[edit]

DATs - Data[edit]

  • Folder DAT
    • Added 'Project Extensions' parameter to monitor .toe files.
    • Added 'Tox' extensions option.
    • Fixed date columns not updated when first enabled. (from Official Branch 2017.15980+)
    • Fixed issue updating on macOS.
  • OSC In CHOP / OSC In DAT - Fixed a bug where re-activation would sometimes cause previous events to be reprocessed.
  • TCP/IP DAT added 'connections' to Info CHOP. In the case of clients the value is 1 when connected to a server. In the case of servers it reflects the total number of clients.
  • OP Find DAT - Added Include Component, Maximum Operators parameters.
  • OP Execute DAT - Fixed crash on extension change, when node goes missing.
  • Render Pick DAT - Now works correctly when doing fish-eye rendering.
  • DATs info popup (middle-mouse button on the node)
    • Now displays first few classes/methods (if they exist) under section called 'Classes:' otherwise displays first few lines under 'Content:' as before.
    • Module summary included in extension pop-up info,
  • Add Info DATs by default for GLSL OPs.
  • Escape key ends keyboard focus for Text DATs, consistent with Tables. (from Official Branch 2017.15980+)


  • Fixed bug where re-initing cloned network dropped connected comp outputs to multi-input OPs.
  • Fixed recently introduced crash that can occur when using UDP Multicast.
  • Fixed single value parameters not working with parameter evaluation optimizations.
  • Fixed issue with macOS TouchPlayer where file specifying non-existent Perform Mode monitior would hang.
  • Fixed macOS crash when closing that would spawn an empty crash dialog.
  • Helios DAC CHOP - Fixed crash.
  • OP Snippets now launches faster (in same process). Also, if you select an OP in your network and then go Dialogs -> Operator Snippets, it will open the snippets for the current operator, if one is available.
  • Improvements to OP Snippets.
    • works better on macOS
    • new Rand button gives you a random snippet, for those who like to learn this way.
    • new Newest button gives you the recently-added or changed snippets.
    • some new snippets.
  • Opening any window (viewer, menu choice, etc) will now be always on top if launched from a window that is always on top. (unless otherwise specified)
  • Panel Viewers and Perform Mode .width .height are now affected by parent post-scaling options (children scale, align grid, fit, etc).
  • Floating panes can now be further split through existing UI or python.
  • Fixed creation of orphaned cloned replicants.
  • Fixed issue where drag drop does not work on macOS fullscreen windows.
  • Updated probe.tox and fixes to multiMix.tox in the Palette.
  • Updated OP Snippets examples.
  • Improvements to component Privacy.
  • Improvements to panel calculations for .inside and .width/.height.
  • Fixed intermittent flicker caused by random panel layering.
  • Fixed issue with Component Editor Dialog when editing multiple components.
  • Fixed a crash in Kantan Mapper when dragging shapes.
  • Fixed an issue with read-only parameters clearing their parameter mode settings.
  • Global OP Shortcut - Now should register even when cooking disabled. Also fixed update issue when parameters cached.
  • Fixed crashes caused by per frame callbacks launching modal dialogs causing re-executing per frame callbacks.
  • Reworked Global OP Shortcuts to avoid hangs, extra cooks and missing conflict warnings.
  • Fixed OP.childrenGPUCookTime not updating when called in Python.
  • Some tweaks to the new scroll bars in Panel Components.
  • Fixed slowdown in macOS which sometimes occurred when a window was closed.
  • Fixed broken .menuNames, .menuLabels when items were dynamic or changing.
  • Fixed incorrect drag drop coordinates when dragging from a panel.
  • Fixed UI tracking of nodes when they are renamed (caused invisible CHOP viewers at times).
  • File Import Dialog now creates operators set to Python language mode. (from Official Branch 2017.15980+)
  • TouchPlayer - Fixed not loading preferences correctly.
  • Fix for .inside panel member which was affecting rollover states.
  • Fixed a number of crashes (Replicator COMP, Drag Drop)
  • Fixed ui.viewFile() not opening in macOS.
  • Fixed some wiring issues with COMP inputs/outputs.
  • Removed MAT page from Preferences Dialog.
  • FBX importing - Fixed import directory location for drag and drop of FBX files.
  • Fixed several cases where mouse would go invisible and/or stay invisible incorrectly.
  • Fixed drag-n-dropping onto stretched panels ie. tiles, resized window, etc
  • Installer checks for additional required Windows updates before proceeding.
  • Adjustments and improvements to the Python parser, string caching, cooking issues, etc. which are part of the Experimental branch's optimization efforts.
  • Fixed TouchPlayer incorrectly launching in Designer mode.
  • Par Class .menuNames, .menuLabels now cached for faster expressions.
  • Fixed parameter not updating on storage change.
  • Fixed a number of parameter and expression cooking issues discovered.
  • Fixed some initialization and startup issues.
  • Fixed many parameter, expression, dependancy, and cooking issues introduced in this branch's optimization package.
  • Private Components can now save any children, without protection, since they are visible to the private components and their scripts.
  • OP shortcuts are now always globally visible even if the component itself has cooking flag disabled.
  • Support system wide DPI awareness on windows 7 and fixed calculation of DPU / UI layout on Windows 7.
  • Updated FBX SDK to 2017.1
  • Updated Oculus SDK to 1.16.0
  • OpenVR - Upgraded to SDK version 1.0.14.
  • RealSense TOP - Upgrade to libRealSense SDK 2.11.0.

Backwards Compatibility[edit]

  • BACKWARDS COMPABITIBILITY WARNING - The UDT protocol on network DATs and CHOPs has been deprecated and will be removed in future builds. The protocol has been abandoned by it's creators and seems to crash on Windows 10, as such we are removing support for it. Currently it will just create a warning when nodes use it.
  • BACKWARDS COMPABITIBILITY WARNING - Default for Python-type custom parameter is now None instead of empty string.
  • BACKWARDS COMPABITIBILITY WARNING - Now Python None object to string casts to empty string instead of 'None' within parameter evaluation for operator parameters only. Will work with list objects as well.
  • BACKWARDS COMPABITIBILITY WARNING - Fixed Text TOP and Text SOP evaluation to be consistent with other string parameters which convert lists objects to space separated text.
  • BACKWARDS COMPABITIBILITY WARNING - The Window COMPs .width and .height members gave inconsistent results when borders were enabled but borders aren't included in the size. They now always give the size of the window, including borders.
  • BACKWARDS COMPATIBILITY WARNING - Parent Shortcuts - ext.parentshortcut is deprecated: Do not use this form. Instead use parent.parentshortcut. A warning is issued now.
  • BACKWARDS COMPATIBILITY WARNING - The seed for the Sort DAT is now floating point vs integers. You can use integers but the random ordering for 2. is different now vs 2 before, for example.

Official Build 2018.24410 - Jul 10, 2018[edit]

New Palette[edit]

  • Fixed help for those components that have help pages in this documentation. These components will now have a Help button and Version number at the top of their custom parameters.

Bug Fixes and Improvements[edit]

  • Fixed issue with 2018.24330 that would cause slowdowns after file running for some time.
  • Blackmagic Design - Upgraded to SDK version 10.11
  • TUIO In DAT - Improvments
    • Added profile column, and now can add more columns optionally.
    • Fixed an issue where a message from a different profile would clear active objects from other profiles. E.g a 2Dcur message would clear all active 2Dobj objects.
  • Fixed VFS getting lost in clone, replicator, drag-n-drop etc. Now the chromaKey palette component has its test movie back.
  • Movie File In TOP - Fixed frame interpolation issue that can occur when running at very low frame rates.
  • Movie File In TOP - Fixed issue where some .mpg files wouldn't play correctly.
  • Movie File Out TOP - Improvments
    • Fixed 'Add Frame' not working in conjunction with 'Pause' parameter to intermittently add frames to a movie.
    • 'Add Frame' pulse can now be used to write out single image files. Record parameter should not be turned On.
  • GLSL TOP - Added 6 more sampler parameters.
  • Text TOP - Fixed some word wrap issues with trailing spaces in the text on macOS.
  • Multi Touch In DAT - Fixed overwriting to wrong row.
  • Parameter Execute DAT onValueChange(val, prev) is now onValue(prev) where prev = True or False for toggle values not 'on' or 'off'. (Backward compatible)
  • TOP to CHOP - Fixed startup errors when loading with Download Type = Next Frame (Fast).
  • Audio Render CHOP - Fixed 'Listener' rotation not working.
  • Light COMP - Fixed texture allocation issue with Non-Commercial licenses and shadow maps greater than 1280x1280. Non-Commercial licenses can now create shadow maps larger than 1280x1280.
  • Fixed Camera COMP auto-homing on load which changed camera's transform parameter values.
  • Fixed tumbling and adaptive home setting getting stuck when multiple views were open on the same operator.
  • Parameter COMP - Fixed parameter menu crash when source parameters were customized.
  • OP.closeViewer(topMost) now works on internally opened dialogs as well.
  • Fixed TouchPlayer sometimes hanging on startup when using Non-Commercial licenses.
  • Fixed copySOP Class.copyTotal not updating.
  • More accurate CPU and GPU Children Cook Times on COMPs, but they are reported from the previous frame (i.e. one time slice later).
  • Fixed some odd behavior in File Import dialog sometimes not closing after importing a FBX file.
  • Fixed a case where the 'Collapse Selected' action would disconnect some inputs incorrectly with multi-input/unordered operators.
  • Crash fix when displaying geometry with more than 16 custom attributes.
  • Fixed bug where certain extended ASCII characters wouldn't function properly in expressions.
  • Fixed bug that broke OP_Input::getTOPDataInCPUMemory() for older C++ plugins loaded into the 2018.20000 series, see Backwards Compatibility section below.
  • Fixed hang when loading a .tox file created in newer build than the current TouchDesigner build being used.
  • Fixed private .toe files not loading properly.
  • some minor improvements/fixes to Palette components compareComp, probe, multiTouch, moviePlayer and opBrowser.

Backwards Compatibility Issue[edit]

  • BACKWARDS COMPATIBILITY ISSUE - C++ plugins that have been compiled using the headers from the 2018.20000 series of builds should be recompiled with the headers from this build to be forwards compatible with future builds. A bug in the previous header in the 2018.20000 introduced broken behavior in the OP_Inputs class.

Official Build 2018.23760 - Jun 18, 2018[edit]

New Features[edit]

  • NDI In TOP, NDI Out TOP - Upgraded to NDI SDK 3.5.
  • GLSL TOP - Added parameter to clear output texture when using Compute Shaders.
  • Hokuyo CHOP - Added support for ethernet Hokuyo laser scanners like UST-10/20LX.

New Palette[edit]

  • New compareCOMP compares 2 components and displays the differences found between them.
  • Added TDVR section in the Palette to hold the TouchDesigner VR Development Environment.
  • Updated TDAbleton, the envrionment for working with TouchDesigner and Ableton Live.
  • Updated opBrowser component, now in the Tools folder.

Bug Fixes and Improvements[edit]

  • Group SOP - Fixed a crash when deleting a group.
  • Join CHOP - Fixed a crash when inserting region overlaps with boundaries.
  • Multi Touch In DAT - Fixed data writing over row 0 when not using a panel for the Mutli Touch In DAT.
  • Alembic SOP - Fixed texture coordinates not working in GPU Direct mode.
  • Alembic SOP - Changed default for Transform parameter to Dynamic so more files with animation present work without the need to change parameters.
  • Fixed the creation and manipulation of Beziers when default points are not added.
  • Fixed issue where GPU performance would be worse after middle clicking on a node. This was caused by continously measuring GPU timing afterwards.
  • Fixed cases where ui.chooseFile() and ui.chooseFolder() would intermittently fail when launched from a closing popup menu window.
  • Fixed fetching a relative path to root component leading to crash in opBrowser.
  • Renamed DMX CHOPs' parameter pages.

Official Build 2018.23470 - Jun 05, 2018[edit]

New Features[edit]

Bug Fixes and Improvements[edit]

  • Fix for 2018.23440 - Exhaustive list of select/state default changes. NOTE: Files saved in 2018.23440 could have the wrong parameter defaults saved into the .toe file. Check that Panel Execute DATs using select/state are properly set.
  • FBX Importer - Fixed a bug where a Torus SOP was being created when drag and dropping a FBX file into the project.
  • Audio Render CHOP - Fixed crackling bug when attenuation flag enabled.
  • Fixed relative id not working for Multi Touch In DAT.
  • Fixed u,v range for multitouch in panels not positioned at 0,0.
  • Alembic SOP improvements
    • Reduced cook time by up to 50% in some cases when streaming alembic geometry.
    • Fixed a crash that sometimes occured when copy & pasting an Alembic SOP during streaming playback on macOS.
  • Window COMP bug fixes
    • Fixed a missing window issue when 'Draw Window' is off. Draw at least once to setup a visible window.
    • Fixed perform window not opening when 'Perform' parameter pulsed in startup script.
  • Fixed hang in some cases when closing the application with active ASIO devices.
  • Fixed some cases where crash would occur when closing project on macOS.
  • Fixed recognition of Allied Vision Camera where unique ID is not the IP address.
  • Fixed minimum depth blanking out results in OP Find DAT.
  • Fixed me.rate (CHOP Class .rate) not updating downstream.
  • Fixed SOP Class .numPoints and .numPrims not updating.
  • Fixed reported bug in TDJSON files.

Official Build 2018.23120 - May 23, 2018[edit]

New Features[edit]

  • CPlusPlus TOP - Add getDC() method to TOP_Context class to get the 'device context' used to create rendering contexts in this instance of TouchDesigner.

Bug Fixes and Improvements[edit]

  • Cross TOP - Fixed a crash introduced in 2018.23080 that can occur when using this TOP.

Official Build 2018.23080 - May 19, 2018[edit]

Bug Fixes and Improvements[edit]

  • Substance TOP / CPlusPlus SOP / Alembic SOP - Fixed crash when laying down operator, and potentially other operators that modify their own custom parameters during a cook.
  • Video Device In TOP - Fixed cases with BlackMagic cards where very high latency was occuring with some signal formats.
  • Cross TOP - Fixed transform parameters not being used when Cross is 1.0.
  • RealSense TOP - Fixed D-series cameras not being found in 'Sensor' menu.
  • Wireframe MAT - Fixed Topology wireframe mode not working correctly.
  • Multi Touch In DAT - Fixed offset that occured when Windows Display Scaling was not 100%.
  • Alembic SOP - Added multiple object selection.
  • Alembic SOP - Fixed crash that occured when correcting parameter syntax errors.
  • OpenVR CHOP - Increase Max allowed controllers/trackers to 64.
  • Fixed parameter update problem that make it seem CHOP exports needed to be done twice to be set properly.
  • Fixed large serial messages getting truncated on macOS, possibly other hardware.
  • Fixed corruption in CHOP export mapping tables in some drag drop operations; For example, particlesGPU from Palette not working.
  • Parameter Help can now also be found inthe parameter's right-click menu.

Official Build 2018.22800 - May 11, 2018[edit]

New Features[edit]

  • PBR MAT - Added 'Final Specular Color' and 'Final Diffuse Color' as options for outputting to color buffers.
  • Web Render TOP - Added option 'Use DAT' for specifying a DAT with text/html data scheme.

Bug Fixes and Improvements[edit]

  • Audio File In CHOP / Movie File In TOP - Fixed issues with playing back audio that has more than 8 channels.
  • Fixed bug where re-initing cloned network dropped connected comp outputs to multi-input OPs.
  • Panel Viewers and Perform Mode .width .height are now affected by parent post-scaling options (children scale, align grid, fit, etc).
  • TDAbleton 1.9
    • Level data transmitter from Ableton to TouchDesigner, including spectrum analysis rack. Also includes related TD Component for receiving this data.
    • Rack devices and related TD Component for easy control of TouchDesigner from Ableton.
    • Cleanup and modularization of M4L devices.
  • OpenVR - Upgraded to SDK version 1.0.14.
  • RealSense TOP - Upgrade to libRealSense SDK 2.11.0.

Experimental Builds 2018.20000 / 2017.30000 - April 20, 2018[edit]

For earlier release note in this branch reset to Experimental 2018.20000 / 2017.30000 Release Notes

Official Builds 2017.17040 and earlier - May 11, 2018[edit]

For earlier release notes refer to Official 2017.10000 Release Notes

Privacy of Components or .toe files is the protection of networks to enable using them but not accessing them internally.

Any floating window that is not a Pane or Viewer.

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 contains its own Network inside. There are twelve 3D Object Component and eight 2D Panel Component types. See also Network Path.

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.

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.

Mode where the network editing window is not open, your performance interface window(s) is open and you are running your application as fast as possible. See Designer Mode.

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.

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.

An Operator Family which operate on Channels (a series of numbers) which are used for animation, audio, mathematics, simulation, logic, UI construction, and many other applications.

Some operators have a DAT docked to them that contains some python functions. These functions, called "callbacks", get called when something in the operator changes.

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.

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

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.

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

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.

An Operator Family that contains its own Network inside. There are twelve 3D Object Component and eight 2D Panel Component types. See also Network Path.

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

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.

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

Creates a new component for every line in a table. Unlike Clone, it automatically creates copies of a master component.

The term "Frame" is used (1) in the Timeline, (2) as a time-unit in CHOPs, (3) as a time-unit in TOPs, and (4) with movies images which are read and created with TOPs.

Any component can be extended with its own Python classes which contain python functions and data.

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

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.

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

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".