Release Notes/099/2019.10000

From Derivative
Jump to navigation Jump to search

Current Build 2019.20140 - Download Here

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

For experimental release notes see 2019.30000 Experimental

Official Build - 2019.10000 Series[edit]

New Features[edit]

Major New Additions[edit]

Unicode Character Support

  • Unicode - TouchDesigner now supports unicode everywhere. This allows the use of characters beyond standard 128 ASCII characters and adds builtin text support for most of the world's languages.
    • Use unicode almost anywhere you can type a string
    • File names and file paths can now contain unicode characters
    • DATs can now accept unicode characters directly
    • Text TOP and Text SOP accept unicode characters directly
    • Parameters can now contain unicode characters
    • Python can use unicode characters where supported
    • Some parts of TouchDesigner must still use standard alphanumberic characters, such as Operator names, Channel names, Custom Parameters, Custom Attributes.

Rigid-Body Dynamics

  • Physics - A new group of Dynamics Components now support hard-body physics simulations using Bullet Physics Library. See Snippets for the Bullet Solver.
    • Bullet Solver COMP - Acts as the physics simulation solver.
    • Actor COMP - Holds geometry that is acted upon by the physics simulation.
    • Force COMP - Applies forces to Actor COMPs that specify them.
    • Impulse Force COMP - Applies impulse forces to Actor COMPs, which are forces that happen in an instant.
    • Constraint COMP - Constrains Actor COMPs together in 3 ways i) Point To Point ii) Hinge iii) Slider.
    • 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.

FBX and USD Support

  • FBX COMP - New Component that loads FBX files as a network.
    • Allows for non-destructive updating of FBX assets while keeping network customizations.
    • No longer converts to intermediate .tog geometry format.
    • Support for lights, cameras, groups, merging geometry
    • Supports Direct to GPU
    • Separate parameter page for embedded animation control
  • USD COMP - New Component that adds support for Pixar's USD file formats (.usd .usda .usdc .usdz). USD (Universal Scene Description) is a new interchange format for sharing 3D scenes and their assets between applications.
    • Allows for non-destructive updating of USD assets while keeping network customizations.
    • Imports scene materials using PBR
    • Supports Direct to GPU
    • Separate parameter page for embedded animation control
    • Other applications/platforms using USD currently include Houdini, Maya, Katana and iOS ARkit.
  • Both the FBX and USD COMPs include a callbacks DAT for customizing the import process and resulting network.
  • Both COMPs have the option to generate Actor COMPs instead of Geometry COMPs in the FBX/USD network for use with the Bullet Solver COMP.
  • Import Select TOP, Import Select CHOP, Import Select SOP - These new operators work inside FBX COMPs and USD COMPs to quickly extract textures, animation channels, or geometry meshes from the imported FBX/USD hierarchy into individual operators.

Custom Operators and C++

  • 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.
  • C++ DAT - The DAT family finally gets a C++ operator to create DAT Custom OPs as well.
  • 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 Container COMP, but additional features specific to Widget will be added.

Parameter Bi-direction Binding

Nvidia Flow Simulation

  • Flow - Now supporting Nvidia Flow - Requires Windows 10 with a Nvidia GPU.
  • 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.
  • Mirror TOP - New TOP for mirroring part of an image on top of itself.
  • ZED TOP / ZED CHOP / ZED SOP - Adds support for Stereolabs ZED cameras.
  • Lookup DAT - New DAT to lookup values between a DAT and a lookup table.
  • Parameter DAT - New DAT for getting parameter information from any OP. Especially useful for parameters whose values are strings.
  • Web Render TOP - Not technically new, but now supported on macOS!

Help and Documentation

  • Offline documentation is now included with the TouchDesigner installation. When there is no internet connection, TouchDesigner will automatically use offline help.
  • Rollover Help on every parameter, just hold down the 'alt' key (or 'option' on macOS) while you rollover a parameter's name to see its help!
  • Dozens of new Operator Snippets for you to explore.
  • To get you specific to Snippets faster, right-click on a node or the OP Create dialog and select OP Snippets for that node.

COMPs[edit]

  • 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.
  • Geometry Viewer - Homing now works for instanced geometry.
  • Field COMP - Added parameters for total digits, decimal digits and trailing zeroes to handle float and integer fields. Floating values will rounded to the number of decimal digits.

TOPs[edit]

  • 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.
  • Blob Track TOP - Overhauled and added background subtraction via a 2nd input. Using background subtraction speeds up performance massively.
  • RealSense TOP - Added support for RealSense D435i camera.
  • 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.
  • Movie File In TOP - Added 'num_decode_chunks' channel to Info CHOP to tell how many decode chunks a HAP movie is encoded with.
  • Movie File Out TOP - Added 'Stop-Frame Movie' output type.
  • Movie File Out TOP - Added support for outputting .gif files.
  • Video Device In TOP / Video Device Out TOP - Added support for GPU Direct for Blackmagic cards.
  • Video Device In TOP - Added support for AJA Kona HDMI.
  • Video Device Out TOP - Added support for external reference sync input for AJA devices.
  • Video Device Out TOP - Added support for using the failsafe on AJA Corvid 24 devices.
  • Render TOP - Added a rendering mode for UV unwrapping.
  • 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.
  • GLSL TOP, GLSL MAT - Added TD_VERTEX_SHADER, TD_GEOMETRY_SHADER, TD_PIXEL_SHADER. TD_COMPUTE_SHADER defines.
  • Substance TOP - Upgraded to most recent Substance Designer engine, now has support for 4k textures.
  • Web Render TOP - Now works using Non-Commercial licences and on macOS as well.
  • Leap Motion TOP - Added v4.0.0 Orion Leap Motion support (Windows only).
  • Text TOP - Added parameters to choose between text alignment using font metrics or the bounding box of the current string.

CHOPs[edit]

  • Speed CHOP / Spring CHOP / Slope CHOP - Added 'Per Sample' option, Shuffle CHOP no longer needed!
  • Shuffle CHOP - Added "Sequence All Samples Every Nth Channel" and "Sequence All Samples By Name" options.
  • Pattern CHOP - Added a new type called 'Step' and new 'Step per Cycle' and 'Phase Step per Channel' parameters.
  • Timer CHOP - Rewritten for optimization.
  • SOP to CHOP - Added toggles to SOP to CHOP for Position, Color, Normal and Texture attributes. Attributes in 'Custom' have autonamed channels.
  • OSC In CHOP - Added a non-timeslice mode that will only cook when receiving data.
  • OSC In CHOP - Added a local address parameter to only listen on a specific IP. Great for working with multiple network interface controllers (NICs).
  • OSC Out CHOP - New parameter to support multiple NICs (Network Interface Controllers).
  • Ableton Link CHOP - Upgraded to Link SDK 3.02 and enabled 'Start/Stop Sync' which addresses issues with Ableton 10 pauses. Also added missing Info CHOP channels for this CHOP.
  • Audio Device In CHOP / Audio Device Out CHOP - Added 'Buffer Length' units menu.
  • 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.
  • Leap Motion CHOP - Added v4.0.0 Orion Leap Motion support (Windows only).
  • DMX In CHOP - Improvements
    • Added 'Clear Output' parameter.
    • Added 'Keep Values on Save' toggle to keep values when saving and reloading a project. When off values will be set to 0 when project is reloaded.
  • Clock CHOP - Added second input for specifying a start date and new channel for 'days' elapsed.

SOPs[edit]

  • Text SOP - Added ability to extrude generated geometry.
  • Text SOP - New 'Closed Polygons (Filled Holes)' output type. Particularly useful for use with the Line MAT.
  • Convert SOP - Added 'Particles Per Point' and Vertex.
  • Particle SOP - Added new parameter 'Surface Attraction' to control the surface attraction force.
  • CPlusPlus SOP / Script SOP - Added support for point and primitive groups.


MATs[edit]

  • Phong MAT, PBR MAT - Added 'Displace Vertices' parameter that will displace vertex positions using a heightmap.
  • GLSL MAT - Added instanceID overloads for TDDeform*() functions.

DATs[edit]

  • OSC In DAT / UDP In DAT / EtherDream DAT - Added a local address parameter to only listen on a specific IP. Great for working with multiple network interface controllers (NICs).
  • OSC Out DAT TCP/IP DAT UDP Out DAT - New parameter added to support multiple NICs (Network Interface Controllers).
  • Keyboard In DAT - Tweaked for unicode support. A 'key' is defined as the best-match ASCII keyboard key pressed. While 'character' is the actual unicode character generated.
  • OP Find DAT additions.
    • Added option to show chosen filter values when combining 'any'.
    • Added new 'Incremental Update' option.
    • Added new 'Custom' combine option which allows an arbitary expression to combine filters.
    • Added new 'wirepath' column which provides a list of connected siblings to that object. Only supported for Object and Panel components.
    • Added new option 'Include Wire Hierarchy'.
  • Added .csv file format support for CHOPs and DATs.
  • Art-Net DAT - Added local address parameters that allow for specification of which network card the ArtPoll packet is sent from.
  • Folder DAT - Added callbacks parameter and attached DAT with 4 available callbacks: onInitGetColumnNames, onGetValues, onGetInclude, onFound
  • Added UTF-8 support to various callback parameters:
    • Art-NET DAT: short name, long name, node report
    • MQTT Client DAT: label, topic
    • Web Socket DAT: text
    • DAT.text member for Table DATs

Interface - UI[edit]

  • Performance Monitor improvements
    • Added line numbers to make filtering easier.
    • Improved reporting and descriptions of certain events.
    • Added 'Filter Count Trigger' - If value is above zero it will stop analyzing only when that many filtered lines are received. Useful for capturing specific event descriptions.

New Python[edit]

  • Search External Python Path Last added to Preference Dialog to control the order custom python module paths are searched, either before or after TouchDesigner's builtin modules.
  • OP Class OP.shortcutPath(OP) -> str
    • Returns an expression from this operator to the OP that is passed as the argument. See OP.relativePath for a version using relative path constants.
    • Keyword changed to toParName.
  • OP Class OP.getShorcut(OP, parName=None)
    • New keyword 'parName' to return expression to parameter instead.
  • OP Class.copyParameters - Added custom/builtin keywords that can disable copying of custom or builtin parameters.
  • OP Class.localCook moved to COMP.localCook, always True for OPs internally.
  • DAT Class - Added findCells and findCell python methods to search cells by value.
  • DAT Class.replaceRow / DAT Class.replaceCol - Replace a row / column in a table.
  • DAT Class functions for working with multiple rows/columns at once.
    • appendRows() - appends multiple rows to a Table DAT.
    • appendCols() - appends multiple columns to a Table DAT.
    • deleteRows() - deletes multiple rows in a Table DAT.
    • deleteCols() - deletes multiple columns in a Table DAT.
  • Color Class - Added new Color class to tdu.
  • Prim Class - Prim.direction returns a normalized vector pointing from the centroid of the SOP to the centroid of the primitive.
  • SOP Class - Added support for SOP.center.
  • Point SOP - me.inputPoint and me.inputPoint2 are now a InputPoint Class instead of a Point Class.
  • 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.
  • Wave CHOP - Added support for .chanIndex and .sampleIndex
  • OpviewerCOMP_Class - opviewerCOMP.isViewable(path) - Tests for potential recursion to find out if an OP is acceptable for viewing.
  • ListAttribute_Class.sizeInPoints to control text size units (default False). When True size is in points, when False it is in pixels.
  • Body Class - Represents a body in a Bullet Solver simulation.
  • ActorCOMP Class.bodies - Returns the bodies within this operator.
  • BulletsolverCOMP Class.actors - Returns the Actors within this operator.
  • UI Class - ui.copyOPs(listOfOPs) ui.pasteOPs(COMP, x=None, y=None)
  • Added tdu.match( pattern, list, caseSensitive=True) -> List which returns a subset of the input list where each element matches the pattern. Wildcards are supported.
    • Example:

tdu.match('foo*', ['foo', 'bar']) # return ['foo'] tdu.match('b??', ['foo', 'bar']) # return ['bar']

  • Page Class Page.appendPar(name, par=Par)
    • Create a custom parameter matching the specified parameter as closely as possible.
    • Following members are copied: size, style, label, default, defaultExpr, min, max, clampMin, clampMax, normMin, normMax, enable, readOnly, password, menuNames, menuLabels, menuSource
    • These are *not* copied: value, expression, binding, order, styleCloneImmune, startSection
    • Example:

p = op('geo1').par.tx ; op('base1').customPages[0].appendPar(p.tupletName, par=p)

  • Added Python custom parameters and ability to evaluate them as PyObjects. Futhermore;
    • Custom Operators - Added ability to create Python paramemters. appendPython()
    • Custom Operators - Added ability to evaluate a Python parameter directly into a PyObject for use with Python's C API. getParPython().
  • Par.exportSource - Returns the object exporting to this parameter. For example Cell, Channel, or None.
  • Par.bindMaster - The object to which this parameter is bound to, possibly None.
  • Par.bindReferences - The list of objects which bind to this parameter, possibly empty.
  • math.ceil() and math.floor() now return ints for optimized expressions.
  • run() methods (Cell, OP, td) now include 'asParameter' keyword (default False). When set to true, the command is executed as though it were at the same location as a fromOP parameter.

New Palette[edit]

SDK and API Updates[edit]

  • Updated to ffmpeg 4.0
  • Updated to CUDA 9.2
  • Updated to NDI SDK 3.8
  • Updated to AJA SDK 15.1.0.2
  • Updated to OpenEXR 2.3.0 for Movie File In TOP.
  • Updated to Alembic 1.7.9 for Alembic SOP.
  • Updated to FBX 2019.0 for FBX COMP.
  • Updated to Ableton Link SDK 3.02
  • Updated to Substance Designer SDK 6.2.0 - support for 4K textures
  • Updated to Oculus SDK 1.31.0 for Oculus Rift.
  • Updated ZED SDK to 2.5.1
  • 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.
  • Added v4.0.0 Orion Leap Motion support (Windows only).
  • Windows installer now includes the latest CodeMeter Runtime 6.81


Bug Fixes and Improvements[edit]

COMPs - Components[edit]

3D Objects[edit]
  • Fixed broken perspective view using RMB to select it in 3D viewers.
  • Fixed guide point and tangent displays in 3D viewers on macOS.
  • Improved homing of viewers in cases using GPU Direct geometry.
  • Geometry COMP - Fixed crash that can occur when turning off Instancing.
  • FBX COMP / USD COMP - Added 7 new channels when an Info CHOP is pointing to it; initializing, ready, done, running, timer_fraction, timer_seconds, running_time.
Panels[edit]
  • List COMP improvements and additions.
    • Added new attribute rowStretch. Allows for vertically stretchable rows.
    • Now updates panel values dragroll/u/v.
    • Now supports dropping of parameters, text, channels.
    • Fixed crash in initialize function.
    • Fixed .setKeyboardFocus() not working until cell had been clicked initially.
  • Perform Window now unconstrained if pointing to Panel COMP that is set to unconstrained.
  • Added Optimized Expression support for panelCOMP.panel.<value>.val
  • Panel Alignment 'Max Per Line' now takes into consideration the widths and heights of all the children to work better with Fill Mode.
  • Panel repositioning now takes into account Children Scale properly and any other parent scaling settings(Fit to Grid, etc), and fixed panel repositioning when using display scaling in Windows.
  • Parameter help now shown for disabled parameters (alt+rollover parameter label).
  • Fixed issue with Select COMPs causing unncessary cooking.
  • Fixed issue with panels not staying with mouse while dragging/repositioning.
  • PanelCOMP.clickChild(N) now clicks the Nth visible panel child, not simply the Nth panel child.

TOPs[edit]

  • Render TOP / Render Pass TOP - Re-organized parameters.
  • Render TOP - Added some warnings if alpha != 1.0 is detected but blending isn't enabled on the material.
  • Render TOP - Removed incorrect warning about blending and alpha when using a PBR MAT.
  • Texture 3D TOP - Fixed a crash that occurs when using R, RG or RGB pixel formats.
  • Movie File In TOP, Movie File Out TOP - Upgrade to Nvidia Video SDK 9.0.20. Driver 418.81 or higher is now required for hardware decoding and encoding
  • Movie File In TOP - Improved H.265 decoding performance.
  • Movie File In TOP - Fixed crash that can occur when failing to open a .exr file.
  • Movie File In TOP - Removed global CPU movie cache feature, it was generally not useful.
  • Movie File In TOP - Fixed pre-loading not working correctly.
  • Movie File Out TOP - Fixed audio output issues for ALAC and mp3.
  • Movie File Out TOP - Fixed some issues with incorrect frames being written when writing one frame at a time for images/sequences.
  • Movie File Out TOP - Fixed H264 and H265 movies saving out an extra frame.
  • Movie File Out TOP - Fixed 'Max Threads' not working correctly when trying to change it after a recording has been done.
  • Video Stream Out TOP - Applied hotfix to fix stack overflow vulnerability recently found in live555 library.
  • Video Device Out TOP - Added error if Blackmagic Driver 11.X is installed, which is incompatible with the SDK TouchDesigner currently uses. (Use latest 10.X drivers)
  • NDI In TOP - Switching to a fail-over source works better now.
  • NDI Out TOP / NDI Out TOP - Better audio behavior in general.
    • NDI Out TOP - Fixed audio not working when coming from some CHOP types. This previously gave a warning that the CHOP must be timesliced.
    • NDI Out TOP - Fixed a crash that can occur when sending audio in some cases.
    • NDI Out TOP - Better audio behavior when sending at low frame rates.
  • Text TOP - Adjust font spacing and layout to be more Unicode friendly.
  • Text TOP - Some tweaks to line breaking behavior for word-wrap.
  • Text TOP - Change 'Language' to 'Break Language' and make it a menu.
  • Text TOP - Fixed crash when referring to an outside Field Component.
  • Text TOP - Fixed unicode text sometimes being spaced incorrectly when using Polygon or Mipmapped Texture modes.
  • Text TOP - Fixed bug where text would not show up using Mipmapped Texture mode.
  • Text TOP - Fixed some vertical font alignment issues on macOS.
  • Text TOP - Added support for scalable fonts and mipmap texture fonts on macOS.
  • GLSL TOP - Renamed Compute Shader output from sTDComputeOutputs to mTDComputeOutputs. Old name continues to work for backwards compatibility.
  • GLSL TOP - Fixed bug where output would not be set to a 3D texture/2D Array if Depth was left as 'Input' but the input didn't have depth (or there wasn't an input).
  • GLSL TOP - Fixed bug where sometimes the uTD* uniforms wouldn't have correct values, uTDOutputInfo.res for example.
  • Web Render TOP - Fixed excessive CPU usage on macOS.
  • RealSense TOP - Fixed crash when using Windows SDK API.
  • TOP - Fixed Viewer Smoothness not working on non 2D Textures.

CHOPs - Channels[edit]

  • DAT to CHOP - Add default value parameter when values not specified in DAT.
  • SOP to CHOP / CHOP to SOP - Removed the 'Animated' method fom CHOP to SOP and SOP to CHOP.
  • TOP to CHOP - Fixed bug where connecting an input wouldn't always re-sample the image at the specified input UVs.
  • OSC In CHOP - Fixed delayed by one when non-queued and intermittent values sent.
  • OSC In CHOP - Now starts up with correct saved values when using non-queued mode.
  • OSC In CHOP - Fixed unwanted leading "/" in channel names.
  • DMX In CHOP / DMX Out CHOP - Removed restrictions from universes (prev. 0-15) to make it easer to work with external programs that only use a universe number.
  • Audio Stream Out CHOP - Fixed issue which caused audio loss after 35 minutes.
  • Expression CHOP - Added me.inputVal, me.chanIndex, me.sampleIndex to the Optimized Expression engine.
  • Noise CHOP - Added 'Offset' parameter to offset noise.
  • Timer CHOP - Fixed 'On Done' menu behaviour, as well as with cycling.
  • Timer CHOP's Cue and goTo() method now supported when 'Segment Method' is set to Parallel Timers.
  • Timer CHOP - Done pulse supports parallel mode. Fixed runningIndex in parallel mode with goTo().
  • Timer CHOP - Fixed locked to timeline output when speed is adjusted during playback.
  • Timer CHOP - Fixed missing ending when speed < 1.
  • Timer CHOP now responds to changes in the segment table (parallel or serial mode), by preserving total running index.
  • Sync In CHOP / Sync Out CHOP - Added local address parameter for using specific NIC.
  • Render Pick CHOP - Added queue parameters.
  • Parameter CHOP/Parameter DAT - Added drop-down menu for selecting the parameters.
  • Delete CHOP - Added 'Output Unique Samples' parameter to output only unique samples within a certain tolerance.
  • Beat CHOP no longer advances when timeline is paused (but 'power' is on and still cooking).
  • CHOP Export - Improvements made to avoid conflicts when copy and pasting.
  • Fixed .bchan files not loading correctly.

SOPs[edit]

  • Noise SOP - Added 'Offset' parameter to offset noise.
  • Point SOP - Added support for many commonly used Python terms to the Optimized Expression engine for this SOP.
  • Point SOP - Fixed crash that can occur if the 2nd input doesn't have the same attributes as the first input and is referenced using one of the pointSOP Class members.
  • Text SOP - Added support for outputting open polygons.
  • Text SOP - Added support for extruding on macOS.
  • Text SOP - Changed 'Language' to 'Break Language' and make it a menu.
  • Copy SOP - Reorganized 'Attribute' page with popup menus.
  • Copy SOP - Fixed error that occurs in some cases when trying to stamp.
  • Copy SOP - Fixed excessive cooking that could sometimes occur when fetching stamp parameters.
  • Fixed saving and reloading of locked SOPs containing groups.
  • CPlusPlus SOP - Can now have more than 1 input.

MATs[edit]

  • GLSL MAT - Fixed crash that occurs when using 3D textures as a map.

DATs[edit]

  • CHOP Execute DAT - Will now execute earlier in the frame, trying to do their operations before other nodes that rely on their scripts cook.
  • Render Pick DAT - Allow Render Pick DAT to work without a 'select' column.
  • 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.
  • OP Find DAT improvements
    • Fixed output for non-default-only, when other fields are default
    • Fixed 'Combine Filters = Any' logic.
  • OP Find DAT - Fixed overcooking when target OP select state changed.
  • OP Find DAT - Fixed very long incremental searches when starting from root.
  • OP Find DAT - Fixed parameter matching being OR'd instead of always AND'd with each other.
  • Text DAT - Fixed cases where extra random characters were added to DATs when saving from an external editor.
  • Folder DAT - Fixed double // in paths when looking at the root of a drive such as C:, F: etc.
  • Substitute DAT - Fixed issues when using wildcard or unicode in this DAT's parameters.
  • CPlusPlus DAT - Can now have more than 1 input.
  • XML DAT working again.
  • DAT - Fixed DATs to allow inserting or appending its own columns/rows.
  • Fixed a memory leak when parent cooking was disabled that effected Error DAT/MIDI In DAT/MIDI Event DAT/TCP/IP DAT/UDP In DAT/UDP Out DAT/Serial DAT

Miscellaneous[edit]

  • CrashAutoSave.toe is now suffixed with the project's filename.
  • 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.
  • CPlusPlus TOP / CPlusPlus CHOP / CPlusPlus SOP / CPlusPlus DAT - cookCount added as available data to the OP_*Input classes.
  • Bound parameters now respect their local ranges, even if bound to an out-of-range master value.
  • Binding - Pulse parameters can now be directly linked through Binding.
  • Faster file saving when saving with Dongle Privacy.
  • Private .toe file access expanded.
    • External Component inside private .toe can now be saved without the component becoming private.
    • Toe file can be saved by python script (privacy maintained).
  • OP Snippets updated. You can also right-click on an OP (in the network or in the OP Create Dialog) and get to its OP Snippet from the popup menu.
  • In/Out operators ordering from top to bottom on the outside of the component can now controlled by a parameter.
  • Allow multiple instances of TouchDesigner to run at the same time on macOS.
  • Allow dragging/dropping of string parameters onto each other.


  • Fixed a bug where fetched list attributes were not initializing until first render.
  • Fixed issue where Windows Drag-Drop broke outside TouchDesigner in some cases.
  • Fixed missing color picker grid in the popup color dialog.
  • Fixed Shift+Escape being lost in some cases resulting in getting stuck in Perform Mode.
  • Fixed case where first ASIO device on Windows 10 systems were being skipped.
  • Fixed intermittent crash when launching external editor on DAT.
  • Fixed some cases where op() expressions would evaluate to old results.
  • Fixed orphaned replicants when cutting and pasting replicators and changing size in the same frame.
  • Fixed loading issues with dynamic or custom menus that were evaluating expressions.
  • Fixed empty space color around panels viewed in a pane.
  • Fixed broken cube map transformation.
  • Fixed loading of .csv files ending with a sequence of commas.
  • Fixed crash when trying to load external .tox files.
  • Fixed issue where Custom OP parameter dialogs sometimes load empty or unresponsive.
  • Fixed a number of geometry file type associations on macOS.
  • Fixed bug with cached parameters when placing OPs.
  • Fixed read-only parameters updating in parameter dialog when set via python.
  • Fixed expressions referencing iop. or parent. shortcuts not updating properly.
  • Fixed setting of string parameters when multiple OPs selected.
  • Fixed perform window size when panel set to 'Size From Window'.
  • Fixed 'Reset Parameter' bug causing lost unused string expressions on save (ie. parameter was in Expr or Export mode).
  • Fixed TD*Noise() and TDRotate* not working in geometry shaders.
  • Fixed oversized 3D viewer axis characters.
  • Fixed cursor updating so you no longer have to leave the panel and re-enter for it to update.
  • Fixed GPU usage showing far higher usage than actually occuring.
  • Fixed common crash that occurs when changing SOPs and navigating around networks.
  • Fixed opening/closing/duplicating pane crash.
  • Fixed some cases of dragging windows loosing focus and not dragging on macOS.
  • Value ladders, rollover tips, menus now drawn properly in panels without distortion or duplicates.
  • Standardizing older parameter pages with sub-pages to not use sub-pages.
  • Improved behavior for floating dialogs so application shortcuts are not respected (undo, save, etc).
  • Improved handling of CHOP Exports when copy and pasting.
  • Improved handling of relative paths when using 'Collapse Selected' option to encapsulate OPs into a new component.
  • Fixed crashes during startup on macOS 10.11 versions. Please use 10.14.3 or higher if using 10.14 Mojave.


Palette Improvements[edit]

  • Palette:kantanMapper - Improvements
  • Palette:moviePlayer - Improvements
    • Added option to enable/disable roller wheel zoom and mouse left/middle click/drag pan/zoom controls.
    • Added 'Go Back to Previous Movie' pulse button parameter.
    • Added extension functions so you can open a movie at a specific time (seconds) or cue number, and optionally play/pause

GoToMovieFile(mvfilepath, time=None, play=-1) GoToMvSpec(mvspec, cue=None, time=None, play=-1, selectcue=-1)

    • Added function to get properties of movie secretly: GetMovieProperties(filepath)
    • movieEngine - Click/drag on image to scrub. Shift click/drag to scrub and pause. Middle click to pause/play.
    • 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.
  • Presets - Bug fixes and the folowing additions
    • Fixes:
      • Update pulse not working on Presets Component
      • Delete pulse not working on Presets Component
      • Controls list container delete preset button width stretched
      • Settings/bankParSettings initial rollover error from trying to access None type - caused by not yet stored previous values.
      • 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.

  • Palette:probe component enhancements.
    • Cook times of nodes that haven't cooked recently are better-reported.
    • Can use mouse wheel to zoom large networks (but not go between networks yet).
  • Palette:camSchnappr bug fixes and improvements.
    • Autoblend fixed.
    • Autoblend can now be shown in preview output whereas previously the mask was not applied to this output.
    • Added additional parameters for the Autoblend feature to control the blend curve via RGB gamma/luminance based on Paul Bourke's Edge Blending article from http://paulbourke.net/miscellaneous/edgeblend/

Backwards Compatibility[edit]

  • BACKWARDS COMPABITILITY WARNING - GLSL TOP, GLSL MAT - GLSL 1.20 has be deprecated on Windows (never been supported on macOS). Please upgrade GLSL shaders to 3.30 or later for compatibility with future release branches.
  • 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.
  • BACKWARDS COMPATIBILITY ISSUE - Lag CHOP now uses the correct units for acceleration clamping.
  • BACKWARDS COMPATIBILITY ISSUE - GLSL TOP binding/size parameters on the Atomic Counters page has been replaced with a uniform name parameter.
  • BACKWARDS COMPATIBILITY WARNING - Par.cloneImmune renamed to Par.styleCloneImmune, update any scripts that may have relied on this.
  • BACKWARDS COMPABITILITY WARNING - $TOUCH_START_COMMAND has been removed.
  • BACKWARDS COMPABITILITY WARNING - DATs named /start and /stream/start will not longer execute on file start. Use the Execute DAT instead.
  • BACKWARDS COMPATIBILITY WARNING - 'Use Startup File' .toe file preferences need to be reset.
  • BACKWARDS COMPATIBILITY WARNING - Line MAT removed "FOV Independant" and "Width Model" parameters. Instead added "Width Affected by FOV/OrthoWidth" toggle.


Build 2019.20700 - Mar 05, 2020[edit]

Bug Fixes and Improvements[edit]

  • OpenVR CHOP/OpenVR TOP - Upgraded to OpenVR v1.9.16
  • Fixed startup crash that that was occuring on Intel GPUs with the newest drivers. (Often ones installed via Windows Update)
  • Window COMP macOS - Fixed issues where borderless perform windows wouldn't work properly on macOS 10.15 Catalina.
  • Render TOP - Fixed crash when using the last GLSL sampler parameter.
  • Notch TOP - Fixed crash when switching layer parameter to expression mode.
  • OpenColorIO TOP - Fixed a texture precision bug; remove precision parameter and set precision to 32-bit float.
  • CPlusPlus TOP - Fixed recent crash introduced in the last release when using older plugins.
  • FBX COMP - Added support for FloatVectorArray vertex cache channel types.
  • Leap Motion CHOP - Wrist and elbow positions are now output properly when 'API' set to Version 4 Orion.
  • PosiStageNet CHOP - Fixed bug with channel names appearing incorrectly and fixed a crash due to parsing error.
  • Timer CHOP - Force a ready pulse whenever 'Start' is re-pulsed.
  • Timer CHOP - Fixed auto start when onInitialize() callback returns a delayed initialize.
  • Par Class - Fixed precision loss when assigning a value to a parameter due to cast to a float.
  • Fixed crash when trying to remove a mapping from the MIDI Device Mapper Dialog.
  • Fixed crash using print statements in python threads.
  • Fixed slow memeory leak when using ipar expressions.
  • Fixed linking of tags when copying nodes.
  • toeexpand/toecollapse will now tolerate forward or backward slashes.


Build 2019.20140 - Nov 27, 2019[edit]

New Features[edit]

Bug Fixes and Improvements[edit]

  • Notch TOP - Fixed crash that could occur with blocks that that do not have any exposed layers.
  • Line MAT - Fixed flashing "width" attribute issue.
  • Line MAT - Fixed unexpected changes in points after changing the "Near" parameter in a Camera COMP.
  • CPlusPlus TOP, Custom Operators - Fixed GPU memory allocation that can slow down this node when selected pixel format is different from what getOutputFormat() is asking for.
  • CPlusPlus TOP, Custom Operators - TOP_OutputFormatSpecs.pixelFormat is now filled in for all modes.
  • File In DAT - Fixed .csv files sometimes dropping the last row.
  • Web DAT - Fixed a crash that can occur if content header is missing '=' characters in its entries.
  • Fixed 'Children Cook Times' not updating in the middle click pop-up info on COMPs.
  • Fixed a hang when applying a python reference to a bound parameter.
  • Fixed automatic relative paths to the project folder not being generated when selecting files in the file chooser.
  • Possible fix to startup crash occuring on some machines.


Build 2019.19930 - Nov 1, 2019[edit]

New Features[edit]

  • Kinect TOP - Improvements for Kinect V2.
    • Added Depth Space Point Cloud output.
    • 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.
  • DAT to CHOP - Added 'Duplicate Names' menu to keep first, last, or most recently changed values.
  • Custom Operators - New example for CPUMemoryTOP that shows threading along with utility class to help make that easier to do.

New Palette[edit]

  • TDAbleton - Version 1.22.0
    • Added Jump To Cuepoint features to abletonSong.
    • Added empty TDA Live Set to Samples.
    • Fixed Textport dump when adding TDA_Master.
    • Fixed bug when there is a device with no parameters present in the Live Set.
  • Palette:moviePlayer - Updated to v31.
    • More strict checks on pre-reading/loading files on network http:// and https:// naming.
    • Some internal cue components' disabled parameters changed to read-only to assure proper cooking.

New Python[edit]

  • Pane Class.enable - Get or Set mouse and keyboard interactivity on the pane.

Bug Fixes and Improvements[edit]

  • Notch TOP - Updated to SDK v0.9.22.
  • Bullet Solver COMP - Fixed onStart and onInit callbacks.
  • GLSL TOP - Fixed recent bug where more than 4 compute outputs could not be used.
  • NDI In TOP - Fixed a case where audio input would not work.
  • NDI In TOP - Avoid crash when changing audio buffer length to 0.
  • Composite TOP - Fixed crash that can occur when connecting too many inputs to this node (64 or so).
  • DMX In CHOP / DMX Out CHOP - Fixed the 'Serial Port' parameter menu so that it enumerates correctly on macOS.
  • Timer CHOP - Include timer_pulse even if segment is at least 1 frame long.
  • Feedback CHOP - Fixed cooking bug.
  • WebSocket DAT - Fixed sending binary/text for packets larger than 64k.
  • WebSocket DAT.sendBinary() now supports bytearray as well as bytes type.
  • Keyboard In DAT - Some improvements for macOS like better support for Cmd, Function, and Arrow keys.
  • OP Find DAT - Fixed double callback when pulsing 'Refresh'.
  • CPlusPlus DAT - Fixed issue with using incorrect string data from inputs.
  • Field COMP - Fixed issue where field content would not be updated before panel value changed, returning incorrect data from field in some cases. (Key Manager 'Login' button for example)
  • Fixed Offline Help in macOS, improved system updates documentation each build.
  • Fixed intermittent crash when accessing Preset parameter menus.
  • Fixed Geometry Viewer Pane so space/s keys etc will change geometry pane state when held down.


Build 2019.19160 - Sep 18, 2019[edit]

New Features[edit]

  • Notch TOP - Added 'Aspect Scale' parameter for each exposed camera, allowing output to be adjusted in multi-camera setups
  • Blend CHOP - Added 'Additive Blending' method. Additive blending is the same as Proportional but without the normalization of weights

New Palette[edit]

  • Palette:camSchnappr - Version 2.53 bug fixes and improvements
    • Multiple specified camSchnappr's Auto Blend feature is now properly referenced.
    • Point IDs no longer move away from point when zooming out of viewport.
    • Fixed problem where camSchnappr was not using referenced project's grid position.
    • New parameters added to control ArcBall mutipliers, helpful for dealing with geometry of various scales.
    • Added 'Alt Modifier Key Parameter' to control step size when moving points with alt+arrow key.
  • Palette:kantanMapper - Bug fixes and improvements
    • New shapes get an individual name.
    • Fixed alpha for freeform shapes.
    • Rectangles and freeform shapes now have Texture ID parameter exposed letting you specify the texture to use with kantanUVHelper.
    • Added ability to create a custom softedges with access to every corner point seperately.
  • Palette:searchReplace - Fixed bug where Table DAT's exact dimensions can be destroyed by replace.
  • Widgets updated.
    • autoUI.tox 0.4.7 now has better error messages when you don't have a widgets package in your project.
  • TDAbleton updated to 1.21.0
    • Value return parameters from Live now work with binding.
    • Cleaned up demo dependencies, stop textport spam, and remove 'tests' component.
    • Automatically pick MAX devices.
    • New "TDA Ignore" Max devices that make TouchDesigner ignore all following devices in chain (for speed)
    • 'Timeslice OSC' parameter on TDA components to eliminate constant cooking of inputs (replaces old selective cooking option ).
    • 'Send Only' parameter option on TDA components turns off all OSC CHOP inputs completely.
    • Ticks included in time data for song.

New Python[edit]

  • COMP Class.copyOPs now preserves wiring when source component is the same as the destination.
  • App Class - New windowColorBits member.

Bug Fixes and Improvements[edit]

  • Custom Operators - Fixed crash that can occur when a 2nd input is connected when no 1st input is connected.
  • NDI In TOP - Receiving interlaced sources should now work, they will automatically be deinterlaced.
  • NDI Out TOP - Fixed crash that can occur at certain resolutions, such as 960x540.
  • GLSL TOP - Fixed some issues with #include statements when referencing Select DATs.
  • RealSense TOP - Upgrade to libRealSense 2.26.0. Gived error when firmware is out of date.
  • Audio Movie CHOP / Audio File In CHOP - Fixed crash that can occur when files with more than 8 channels are used.
  • Logic CHOP - Fixed memory leak with duplicate names.
  • Reorder CHOP- Fixed an incorrect sorting with "Base Name Sort" option.
  • OSC In CHOP - Fixed stripping name segments.
  • OSC In DAT - Backward compatibility fix: 'Blank Lines for Non-Scoped Bundles'
  • Lookup DAT - Fix Row Values/Col Values menu options.
  • FBX COMP - Fixed cooking issue when it has a wired parent COMP.
  • FBX COMP / USD COMP - Fixed bug with 'Extend Right' Hold mode.
  • Light COMP - Fixed bug with incorrect shadows showing up when using soft shadowing.
  • Export Movie Dialog - Now allow for non-integer frame rates ie. 29.97 or 59.94.
  • Fixed Global OP Shortcuts sometimes resulting in long paths being created when using 'Paste Reference' or 'Paste Bind'.
  • Fixed a crash when comparing the Point/Prim/Vertex with invalid types.


Build 2019.18580 - Aug 23, 2019[edit]

New Features[edit]

  • NDI In TOP / NDI Out TOP - Added support for sending and receiving frame metadata. Metadata can also be used in text format.
    • NDI Out TOP - Metadata can be send out in table DAT format or valid XML in text DAT format using the 'Metadata DAT' parameter.
    • NDI In TOP - Metadata can be received by attacheding an Info DAT to the TOP.
  • Text DAT - New 'Sync to File' toggle will sync DAT to external file on load and continously monitor changes to file and update the DAT. Edits to the DAT will be saved to the external file right away.
    • A file must be specified for the option to be enabled.
    • 'Edit Contents...' will bring up the external file instead of a temporary file.
    • If the file does not exist (or is missing), it will be created when 'Edit Contents...' is triggered.
    • Updated external file monitoring to use system events instead of polling for file modification updates.
  • Camera Blend COMP - Now can blend background colors of inputs (via toggles on Blend page) and its own background color parameters (using Weight parameter on Settings page).
  • Camera Blend COMP - Now can blend fog of inputs (via toggles on Blend page) and its own fog parameters (using Weight parameter on Settings page).

New Palette[edit]

  • OP Snippets - 6 new ones - 1 Boolean SOP, 2 Group SOPs, 1 Render TOP, 2 Projection TOPs. Thanks to James Hunter for contributing. OP snippets welcome at snippets@derivative.ca, especially examples for operators that we dont cover yet.
  • Palette:moviePlayer improvements
    • Fixed issue with error under python 3.7 if file is moved to 2019.30000 experimental builds.
    • New Range gadget allows focus into a small time range of the movie.
    • Improvements to Cues, including UI -> Cue Edit Area -> Cue List.
    • Improvement to UI of External Control.
  • Updated basic widgets and autoUI.

New Python[edit]

  • tdu Module expansion method: tdu.expand('A[1-3] B[xyz]') # return ['A1', 'A2', 'A3', 'Bx', 'By', 'Bz']
  • Page Class - methods and members will now also work for built-in pages.
  • Par Class.page member can now return a built-in page.
  • Par Class - Added Par.subLabel member.
  • Par Class - Added collapser/collapsable boolean members, these are for collapsable parameters like those found on MATs for texture map's Texture Sampling Parameters.
  • OP Class.pages() method returns a list of the node's built-in pages.

Bug Fixes and Improvements[edit]

  • 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.
  • Blob Track TOP - Added a default docked Info DAT for blob info.
  • GLSL TOP - More tweaks to how multi-pass compute shaders work. The texture created from the first output is now fed back into the first texture input once again.
  • Text TOP - Fixed a bug where %-replace would skip over channels when the string didn't end with a % expression.
  • Text DAT / Table DAT - Fixed offsets that would sometimes occur with cursor positioning. Improved unicode cursor positioning.
  • OSC In DAT - Various fixes
    • Fixed missing last column for table input.
    • Fixed stuck disabled parameters when disconnecting input.
    • Fixed scope for bundled messages.
    • Added 'Include Blank Messages' option for empty timestamps/errors/etc.
  • Serial DAT / Serial CHOP - In Windows version now includes a list of all valid ports in menu, not simply COM1-COM8.
  • OSC In CHOP - Fixed recent bug adding invalid messages on non-scoped messages, this could cause problems connecting with TDAbleton.
  • Timer CHOP - Fixed onSegmentEnter/onSegmentExit callbacks in parallel mode.
  • Laser CHOP - Some optimizations to blanking and performance.
  • Trigger CHOP - Changed Ease In and Ease Out curves so there is no popping when attacking or releasing.
  • Phong MAT / Light COMP - Added tweak to help avoid seams when using equirectangular maps for environment mapping and projection mapping.
  • Light COMP - The light's rotation now affects equirectangular projection maps.
  • 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 Window COMP. Proper warnings and size menu selection when resolving to a blank Base COMP.
  • List COMP - Fixed extra onRollover callbacks triggering when onHover event.
  • List COMP - Include onHover() callbacks when exiting list area completely.
  • Field COMP - Fixed possible recursion warning.
  • Added warnings when invalid global, parent, or internal shortcut names are used.
  • Fixed channel name labels jumping away from cursor in some CHOP viewers.
  • Fixed bug where renaming nodes did not trigger node dependencies to update.
  • Fixed error and exception when comparing to None in Point, Prim, and Vertex Classes
  • Fixed sticky origin (gizmo) axis rotation.
  • Fixed degenerate SOPs conversions, for example, zero radius tubes would not convert.
  • Export Movie Dialog improvements
    • Fixed filenames not being displayed correctly.
    • Fixed missing frames from end of recorded movie.
  • Component Editor Dialog improvments
    • Dragging into Component Editor now has highlights.
    • Can use expand strings to create parameters in Component Editor (e.g. Button[1-12])
  • Fixed issue were saving work in an external text editor deleted temporary file requiring re-opening content in external editor.
  • Ignore ctrl+s / saving shortcuts when in privacy mode.

Backward Compatibility[edit]

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


Build 2019.17550 - Jul 24, 2019[edit]

New Features[edit]

  • Syphon Spout Out TOP - Added support for sharing many more pixel formats all the way up to 32-bit RGBA.
  • TCP/IP DAT - Added new callback members: onConnect(dat, peer) and onClose(dat, peer)

New Palette[edit]

  • TDAbleton 1.20.0 major update
    • TDA_Master M4L device now has options to broadcast OSC to all computers on the network
    • The tdAbleton comp's parameters are now mirrored on the package component
    • Time data is now sent from Max through the TDA_Master device, instead of from the Python MIDI remote script
    • TDA_MIDI M4L device now sends floating point values (e.g. pitch blend) properly
    • cuepoint channels now reflect the row number of the info in the cuepoint output table
    • Added a cuepoint name output for abletonSong
    • Time channels for "sixteenths" are now called "sub-divisions" to match Live's terminology
    • Bug fixes for clip selection/deletion/movement
  • Palette:searchReplace - the searchReplace component under Tools in the Palette lets you search and (optionally) replace text in an operator or network.

Bug Fixes and Improvements[edit]

  • 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).
    • exposed the Triangle Width parameter for End Caps.
    • Fixed point size in ortho camera.
  • OpenVR updated to v1.4.18
  • OpenVR CHOP - Update to OpenVR's new input system, see BACKWARD COMPATIBILITY below.
  • Helios DAC CHOP - Fixed crash when no device selected.
  • Laser CHOP - Fixed bug in Every Frame update method where fewer input points caused long tails.
  • Laser CHOP - Blanking bug fixes.
  • Audio Device In CHOP - Fixed crash when unplugging/replugging audio devices.
  • Bullet Solver CHOP - Fixed inaccurate collision values.
  • Movie File In TOP - Fixed sequences of .tga files not loading correctly.
  • GLSL TOP - Using multiple passes now works better with compute shaders when not clearing the output.
  • GLSL Multi TOP - compileResults member is now available.
  • Ramp TOP - Fixed some artifacts that can occur on the edge pixels in some cases.
  • Touch In TOP - Fixed crash when there is a mismatch between the data and data type, width, height, source format, etc.
  • Touch Out TOP - Fixed crash in uncompressed mode when input TOP data type changes.
  • Video Stream In TOP - Fixed a crash that can occur when input resolution changes.
  • Web Render TOP - Properly loads files using project relative paths.
  • Text TOP - Fixed a crash that can occur when using the .textHeight Python member.
  • Text TOP - Fixed rendering error that can occur when only rendering a whitespace character.
  • Convert SOP - Remove vertex attributes when using "Particles Per Point".
  • UDP Out DAT / TCP/IP DAT - Allow sending of any unicode data, not just latin characters.
  • UDP In DAT / TCP/IP DAT / OSC In DAT - Unicode now supported.
  • Lookup DAT - Fixed crash when lookup table input has no rows/columns.
  • TUIO In DAT - Fixed cases where events sometimes generated move or end without initial start.
  • Keyboard In DAT - Fixed missing character information on macOS.
  • FBX COMP / USD COMP - Move Build Network pulse right after the File parameter.
  • Field COMP - Improved handling of arrow keys input.
  • Replicator COMP - Fixed multiple calls to onReplicate during replication.
  • macOS - Fixed issue where moving a window between monitors with different DPIs would result in incorrect rendering of the contents.
  • Preferences Dialog - New preference for 'Tumbling Pivot Visible' to globally enable/disable the pivot icon in 3D viewers.
  • Fixed Geometry Viewer pane's view (space bar) and select (s key) keyboard shortcuts.
  • Operator Info popup dialog now includes more readable averaged cpu / gpu cook times.
  • Reset parameter pulse monitoring after allow cook changes.

Backward Compatibility[edit]

  • 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.
    • Changed FOV calculationand now with bigger FOV the line gets thinner.
    • Change to Line Width thickness formula.
    • Inverse the ortho camera width.


Build 2019.16600 - Jun 21, 2019[edit]

New Features[edit]

  • 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.
  • LTC In CHOP - Added option to upsample frame data to match the component rate.
  • LTC In CHOP - Added new option for LTC In to display the 'Total Frames'.
  • NatNet In CHOP - Added support for both Labeled and Unlabeled Markers.

New Palette[edit]

  • Widgets - autoUI.tox version 0.4.3
    • Popup warning when you don't have the Basic Widgets Package loaded in the project.
  • Palette:camSchnappr updated to version 2.5
    • Major overhaul of camSchnappr.
    • Uses a Camera COMP to save calibration settings making it unnecessary to keep camSchnappr around
    • Added ability to specify output monitor on multi output canvases.
    • Added control for camSchnappr from TouchOSC or other external controllers.
    • Parameter clamping is now transfered properly.
  • Palette:kantanMapper - Along with fixes to kantanMapper, a new kantanUVHelper.tox uses the uv map output from kantanMapper.tox and let's you assign textures to each shape via a GLSL Multi TOP.
  • TDAbleton updated to 1.18.3 which fixes problems with Rack Initialization and intermittent timing issues when initializing.

Bug Fixes and Improvements[edit]

  • NatNet In CHOP - Upgrade to NatNet SDK 3.1.
  • Movie File In TOP - Fixed .tga file loading not working correctly.
  • NDI In TOP / NDI DAT - Fixed some crashes that can occur with when the NDI DAT is used in a project.
  • Text TOP - Stroke width now works correctly (Windows only).
  • Text TOP - Position Units can now be changed when using a Table DAT to set text positions.
  • Phong MAT - Fixed vertex displacement not working when only a normal map is provided.
  • Light COMP, Phong MAT - Displaced vertices now work correctly with shadows.
  • Bullet Solver COMP - Fixrd issue with simulation speed significantly affecting the result of the simulation.
  • Actor COMP - Fixed instancing transform bug.
  • Beat CHOP - Globally defined Beat CHOP in /local now updates.
  • OSC In CHOP - Fixed memory corruption that can occur when deleting this node.
  • OSC In CHOP - Fixed loading of non-queued values.
  • MIDI In CHOP - No longer cooks when devices are plugged/unplugged if it is reading from a MIDI file.
  • Info CHOP - Fixed cooking issue after scoping channels with the 'Scope' parameter.
  • Point SOP- Fixed a crash when turning on 'Add Texture'.
  • ZED SOP - Refinement of parameters. Remove "Generate Surface" and instead auto-generate once sampling is complete.
  • MQTT Client DAT - Fixed a crash when connecting.
  • Parameter Execute DAT - Stop executing functions when DAT is deleted, this could cause crashes. * OP Find DAT - Fixed overcooking issues and optimizatized calling of default DAT callbacks.
  • USD COMP - Fixed a homing issue in the viewer.
  • USD COMP- Changed Speed default range to 0 to 2.
  • USD COMP / FBX COMP - Changed Hold extend behavior.
  • Animation Editor - Fixed delete key not working for deleting keys.
  • Fixed cases where text characters in DATs would look slightly cut-off at certain zoom levels (garbled).
  • Import File dialog now properly supports FBX, USD, and Alembic files.
  • Preference Dialog added "Reset All" parameters option, removed offline docs preferences, and fixed errors displayed in the textport.
  • Adpative homing - zoom in much more slowly than zooming out to avoid some oscillatory artifacts while objects spin.
  • Fixed a crash in Model Geometry editor when switching between select points and primitives.
  • Fixed Panels and Textport to support unicode input on macOS.


Build 2019.15840 - May 31, 2019[edit]

New Features[edit]

  • GLSL MAT / GLSL TOP - Add TDRotateX(), TDRotateY(), TDRotateZ(), TDScale() and TDTranslate() functions.
  • Component Editor - You can now drag parameter/pages from Component Editor into networks to create Parameter OPs.
  • Import Select TOP / Import Select SOP / Import Select CHOP - Added 'Import Parent' parameter that allows selecting imported assets without the node being inside an FBX/USD COMP (ie. location can be anywhere). Also added a 'Reload File' parameter to trigger a reloading of the FBX/USD asset file.
  • Timer CHOP - New fraction member. Get the current segment time index in fractional form, safe to use during Timer callbacks.
  • Line MAT- Added two multiplier parameters to control the End Cap's width and height with respect to the Start Cap.

New Palette[edit]

  • Widgets - Updated Lister Widget and new Widget Cache System.
  • Palette:moviePlayer - Improvements
    • Info page on Movie Parameters now shows file metadata - length, resolution, images-per-second.
    • Better crossfade loops.

Bug Fixes and Improvements[edit]

  • Object Component - All Object COMPs (Geometry, Null etc.) now correctly support locking, which stores their transform through save/load an copy/paste actions.
  • Material SOP - Fixed crash that can occur when Material SOPs are deleted that are being used in a Render TOP.
  • CPlusPlus SOP - Custom attributes of Input SOP can now have different values per point (of a geometry).
  • Alembic SOP- Change Linear Interpolation to Smooth Interpolation in the 'Interpolation' parameter menu.
  • Timer CHOP - Adding parallel segments during playback causes those segments to start running in the correct state.
  • Timer CHOP - Better handling of .goTo() method inside onSegmentEnter/onSegmentExit callbacks.
  • DMX Out CHOP - Fixed sACN freeze.
  • Leap Motion CHOP / Leap Motion TOP - Renamed API menu option "Version 3" to "Version 2 Tracking" and for macOS changed the default to Version 2 Tracking and added a warning for Version 4.
  • CHOP Execute DAT - Fixed failure to execute whileOn/whileOff callbacks if source CHOP was non-timesliced or not cooking.
  • Touch In DAT / Touch Out DAT - Fixed intermittent transmission errors.
  • Phong MAT - Fixed issue when using environment map and height mapping that caused shader to compile incorrectly.
  • Line MAT - Added a drop-down menu to the "Attribute" parameter. Renamed parameter 'Arrow Head' to 'Arrow height'.
  • Palette:kantanMapper - Fixed a crash due to parameters changing after custom parameters are added.
  • Merge DAT - Fixed issue where cells would have old values at times.
  • Notch TOP - Fixed cooking dependency bug with input TOPs.
  • Added dependency for nodeX, nodeY, nodeWidth, nodeHeight so they cook properly in expressions.
  • Fixed Undo issue when changing bind reference values.
  • Fix to adaptive homing to make it more accurate for grids.
  • Added humanoid.fbx to FBX samples.
  • TouchDesigner build number in titlebar of main window.
  • Fixed a number of crashes.

BACKWARD COMPATIBILITY[edit]

BACKWARD COMPATIBILITY - USD COMP / FBX COMP relocating Play page parameters.


Build 2019.15230 - May 15, 2019[edit]

New Features[edit]

New Palette[edit]

  • Widgets updated
    • A new OP Pages gives access to important sub components.
    • List widget has general stability improvements.
  • 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.

Bug Fixes and Improvements[edit]

  • Fixed crash when reloading external .tox files.
  • DMX In CHOP/ DMX Out CHOP and others - Fixed device menus being stuck on 2nd entry.
  • Movie File In TOP - Fixed a hang that can occur when certain movies loop.
  • Text TOP - Fixed alignment to bounding box not working on macOS.
  • Texture 3D TOP - Fixed a bug where memory usage was reported as negative.
  • Luma Level TOP - Better performance when parameters are changing and better color precision for operations, even at 8-bit.
  • ZED TOP - Upgraded to SDK version 2.7.1. This should fix some issues with ZED cameras that were occuring.
  • Parameter DAT - Added bind column.
  • Parameter COMP- Fixed expanded parameters label text overlapping in some cases.
  • Panels that 'fill' or use 'max per row' now properly take into account spacing.
  • FBX COMP / USD COMP - Fixed a bug where animation playback speed was slowed down when dropping frames.
  • Bullet Solver COMP - Added Info CHOP channels for running time, playing time, index, etc.
  • CPlusPlus CHOP - Fixed info popup dialog always saying 'Timesliced'.
  • Tablet CHOP - Fixed swapped channel names issue.
  • Stype CHOP - Added a warning message when only invalid packets are received to help diagnose problems. Updated info channels to add more debug information.
  • CHOP Execute DAT - Fixed more cases of under/over callback executes.
  • Fixed broken parameter RMB menu entry "Jump to Export" or "Jump to Bind".
  • Fixed saving out files with unicode characters in the path/filename on macOS.
  • Fixed OP Create Dialog not opening a second time when power is off ie. project not cooking.
  • Fixed Shift + LMB box selection in Network Editor.
  • Palette:lister - Fixed a few bugs and added parameter to directly accept Table DAT to as input for the list.
  • Timer CHOP - Fixed a few reported bugs.


Official Build 2019.14650 - May 06, 2019[edit]

New Features[edit]

  • Blob Track TOP - Overhauled and added background subtraction via a 2nd input. Using background subtraction speeds up performance massively.
  • Movie File In TOP - Hardware decode now supports 10 and 12-bit H264/H265s on supporting hardware.
  • Movie File In TOP - Hardware decoding now supports YUV 444 files.
  • CPlusPlus SOP / Script SOP - Added support for point and primitive groups.

New Palette[edit]

  • Widgets - Updated.
  • Palette:bloom - Added to the ImageFilters folder.
  • Palette:moviePlayer - Version 23
    • Added extension functions so you can open a movie at a specific time (seconds) or cue number, and optionally play/pause

GoToMovieFile(mvfilepath, time=None, play=-1) GoToMvSpec(mvspec, cue=None, time=None, play=-1, selectcue=-1)

    • Added function to get properties of movie secretly: GetMovieProperties(filepath)
    • Roller wheel zoom is off by default. (updated zoomImage to version 5)
    • This also changes behaviour how movies are loaded into TouchPlayer.

New Python[edit]

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

Bug Fixes and Improvements[edit]

  • Text rendering artifacts in DAT viewers should be resolved.
  • Nvidia Flow TOP - A more useful alpha channel is created for the output.
  • Movie File In TOP - DPX image support works again.
  • Movie File In TOP, Movie File Out TOP - Upgrade to Nvidia Video SDK 9.0.20. Driver 418.81 or higher is now required for hardware decoding and encoding
  • Video Stream Out TOP - Fixed this node not working in recent builds.
  • Video Device Out TOP - Added error if Blackmagic Driver 11.X is installed, which is incompatible with the SDK TouchDesigner currently uses. (Use latest 10.X drivers)
  • Timer CHOP - Done pulse supports parallel mode. Fixed runningIndex in parallel mode with goTo().
  • Timer CHOP - Fixed locked to timeline output when speed is adjusted during playback.
  • Timer CHOP - Fixed missing ending when speed < 1.
  • Timer CHOP now responds to changes in the segment table (parallel or serial mode), by preserving total running index.
  • FBX COMP / USD COMP - Added 7 new channels when an Info CHOP is pointing to it; initializing, ready, done, running, timer_fraction, timer_seconds, running_time.
  • Custom Operators - New OP_TimeInfo is now available from the OP_Inputs which gives you information about the node's cook timing, rate etc.
  • Custom Operators - Give a better error if a .dll fails to load due to missing dependencies.
  • CPlusPlus DAT / CPlusPlus SOP - Can now have more than 1 input.
  • Sync In CHOP / Sync Out CHOP - Added local address parameter for using specific NIC.
  • CHOP Execute DAT - Avoid same frame execution so it doesn't cook on the same data, except when timeline is paused.
  • Panel repositioning now takes into account Children Scale properly and any other parent scaling settings(Fit to Grid, etc), and fixed panel repositioning when using display scaling in Windows.
  • Value ladders, rollover tips, menus now drawn properly in panels without distortion or duplicates.
  • 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.
  • OP Find DAT - Fixed parameter matching being OR'd instead of always AND'd with each other.
  • Parameter DAT - Add 'label' column.
  • Line MAT Improvements
    • Added 'Width Model' menu to specify width relative to World or relative to Ortho Width.
    • Now has picking support via Render Pick OPs.
    • Fixed the point size being small and fixed point width in orthographic camera.
  • Improvement to text rendering in DAT viewers, attempt to fix chunky text.
  • Line MAT - Fixed macOS shader compile issues.
  • Fixed data dependancies when using old Tscript local Variables, in cases where used by python var() expressions as well.
  • Nvidia Flow TOP - Reworked Reset parameter to be Initialize/Start pulses instead.
  • FBX COMP / USD COMP - Added Initialize/Start buttons.
  • Import Select SOP - Added Initialize/Start buttons.
  • Windows installer now includes the latest CodeMeter Runtime 6.81

Backward Compatibility[edit]

BACKWARD COMPATIBILITY - Line MAT removed "FOV Independant" and "Width Model" parameters. Instead added "Width Affected by FOV/OrthoWidth" toggle.


Experimental Builds 2019.10000 / 2018.40000 - April 09, 2019[edit]

For experimental release notes in this branch refer to Experimental 2019.10000 / 2018.40000 Release Notes


Official Builds 2018.28120 and earlier - May 06, 2019[edit]

For earlier Official Build release notes refer to Official 2018.20000 Release Notes