Release Notes

From TouchDesigner 099 Wiki

Build 2017.2820 - Feb 24, 2017

New Features

  • Delete CHOP - Added new 'Samples' parameter page to delete individual samples in specified ranges.

Bug Fixes and Improvements

  • Video Device In TOP - Fixed issue which prevented Blackmagic devices being used in some circumstances.
  • FBX importing fixed - needs more test cases.
    • Doesn't use default transforms anymore, it use the ones at time=0.
    • LclRotation doesn't get the pivot information (such as preRotation) baked into it anymore during ConvertAnimation in the 2017 SDK. In 2015 it did.
  • Fixed labeling of parameters on some MATs.

Build 2017.2620 - Feb 17, 2017

Bug Fixes and Improvements

  • BlackTrax CHOP - Now uses a Mapping Table to map the beacon indices coming from BlackTrax to TouchDesigner indices set by the user.
  • Noise CHOP - Fixed crash in timeslice mode when specifying duplicate channel names.
  • Movie File Out TOP - bug fixes
    • Fixed ALAC audio codec not working correctly.
    • Fixed issue with some codecs not having correct frame rates.
  • GLSL TOP - improvements.
    • Added TD_NUM_COLOR_BUFFERS define.
    • Fixed issues with Compute shaders and multiple color buffers.
  • CPlusPlus TOP - Fixed multiple color buffers not working correctly.
  • If you don't have a middle mouse button, you can press alt+RMB. This was a preference before, but now it is the default.
  • Joystick CHOP - Now working in macOS.
  • MIDI send messages bumped up to 1024 bytes for now.
  • SSAO TOP - Fixed this node being broken for the past few builds.
  • Stability and internal improvements.
  • Fixed TouchPlayer help links.

Build 2017.2300 - Feb 10, 2017

Bug Fixes and Improvements

  • Multi Touch In DAT - Fixed to handle dpi scaling. Use dpi scaled units based on setting for main window or panel window.
  • Video Device In TOP - Fixed some issues with Point Grey FlyCapture2 cameras.
  • Tablet CHOP - Fixed the issue where Wacom Tablets were not read.
  • GLSL MAT - Fixed issue setting index 0 for sampler arrays.
  • OpenVR TOP - Fixed bug that broke functionality in 2017.1900 build.
  • Par1 = par2, Par.copy(par2) now updates parameters and cloned parameters properly.
  • Fixed offline help for macOS.

Build 2017.1900 - Feb 03, 2017

New Features

  • Extrude SOP - Added the option to fuse points using Clamp Straight.

Bug Fixes and Improvements

  • NatNet In CHOP - Upgrade to NatNet SDK 2.10.0
  • OpenVR CHOP - Better behavior when working with trackers/controllers only.
  • Sync In CHOP - No longer accumulates channels as they change name or are reordered. Also fixed intermittent random flickering values, especially when Sync Out delayed.
  • GLSL MAT - Fixed Common page parameters not getting used correctly the first time the node cooks/compiles the shader.
  • Parameter COMP - Fixed crash when target operator deleted.
  • Movie File In TOP - Fixed crash that can occur when using 'High Performance Read'.
  • Ramp TOP - Fixed issue where ramp would not update after moving a tab/key.
  • Fixed startup errors in base.toe which is loaded with File -> New.
  • Fixed 'Update' indicator for experimental builds (any build number with year.xxxx format) and links to correct location now.

Build 2017.1360 - Jan 25, 2017

New Features

Bug Fixes and Improvements

  • Fixed camSchnappr being broken due to recent OpenCV update.
  • Fixed alt keystate for alternate characters not working in Field COMPs

Build 2017.1200 - Jan 20, 2017

New Features

  • OpenVR CHOP - Can now get controller and sensor information without an active OpenVR TOP. If the OpenVR TOP isn't present in the file, the file won't be throttled to the headsets refresh rate, allowing for sampling these devices are higher rates.
  • GLSL TOP - Added 'Matices' uniform page.

New Python

Palette

  • Updated Lister component in UI folder.

Bug Fixes and Improvements

  • Render TOP - Fish-eye rendering mode now calculates it's depth values differently. The depth values are now based on distance to camera (instead of z-depth) and can be converted back to linear depth using the Depth TOP as well.
  • Camera COMP - Fog is now calculated based on distance from camera, not Z-depth. This gives better fog for cases such as fish-eye output.
  • ASIO Support for 16,24 bit formats, which include default settings on Dante Virtual Sound Cards.
  • After more testing and discussion we've decided not to deprecate int() and float() on a menu parameter objects. Behavior for menu's should now be the same as it was previously and in 088.
  • Fixed a number of errors and warnings from casting changes.
  • RealSense CHOP - Fixed face landmarks not working.
  • toeexpand, toecollapse now supports tox files.
  • toecollapse now uses compressed output for smaller output files.
  • Improvements to handle some extended ascii characters on macOS.

Build 2017.760 - Jan 13, 2017

New Features

  • New Panel COMP alignment parameters including anchors, offsets and pivots. Existing parameters also reorganized and renamed in some cases.
  • Blob Track TOP - Overhauled with upgraded openCV.
  • CPlusPlus TOP, CUDA - CUDA is now supported as part of the CPlusPlus TOP, the CUDA TOP should not be used anymore and will be removed soon.
  • BlackTrax CHOP (Pro only) - New CHOP supporting BlackTrax UDP messaging protocol, for both unicast and multicast.
  • Oculus Rift CHOP - Add support for Oculus Touch Controllers.

New Python

  • Converting Channel to str will include '.0' in future builds for integer values. Please explicitly cast to int() or float() to control if the decimal portion is always included instead. Feedback on this change is requested, we want to know if this change breaks a lot of existing files.
  • Numpy now included as part of TouchDesigner's Python installation again.
  • TOP Class .aspect (which is ratio of X/Y as single float).
  • New members and methods for Panel COMPs - panelCOMP.x .y .width .height .marginX .marginY .marginWidth .marginHeight .panelRoot .panelParent() .panelChildren
  • COMP.extensionsReady - True, unless extensions are compiling.
  • Par.menuIndex now supported for custom strMenu, as well as built-in dynamic menus (example Audio device menus).
  • Casting a menu parameter to an int or float (instead of using .menuIndex) will now result in a deprecated warning.
  • Casting a parameter to an int or float will now give deprecated warning if the parameter is a string that cannot be converted. Previously it would simply return numeric value 0. This is consistent with python behavior.

Bug Fixes and Improvements

  • Blend CHOP, Lag CHOP - Quaternion Blending no longer requires Commercial or Pro license.
  • List COMP - Fixed callbacks when dragging off cells. ( 'Off Cell Callbacks') option.
  • Fixed C++ operators failing to load when the custom cook method produced an error.
  • Phong MAT, PBR MAT - Fixed instance texture menus being incorrect.
  • New preference adds the option of using alt+right-click as an alternative for middle-click.
  • Render TOP - Fixed crash that can occur when trying to replace the Camera COMP specified in the Camera parameter when the Camera COMP has been deleted.
  • Render TOP - Disable Multi-Camera rendering on AMD for now, driver currently present.
  • Phong MAT - Fix bug that caused broken shader when using env mapping.
  • Movie File In TOP - Fixed recent bug that caused the entire movie file to be loaded into CPU memory when opening the file.
  • Touch Out CHOP - Now re-sends channel name each cook when using UDP formats to ensure names aren't ignored when new clients are connecting.
  • OP Viewer TOP - Fixed issues with updating viewer's output.
  • Listen/Tap now working in macOS version.
  • Fixed startup crash with clones and custom parameters.
  • Fixed refresh issue with PanelCOMP.layout* members.
  • Fixed recursion from simple panel parent layout expressions.
  • Fixed a crash that occurs when mouse-hovering over an export data link where the export source is missing.
  • Panels are always 'Fit Best' inside nodes viewers.
  • Upgraded 'Storage' features in Component Editor.
  • Support for OpenCV features now working again on Windows.
  • Some Palette components fixed and/or updated.

macOS Version Improvements

  • CPlusPlus TOP now works on macOS, updated OpenGL TOP example.
  • Moved the user Palette folder to ~/Library/Application Support

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY WARNING - Blob Track TOP - Due to upgrading OpenCV this node been overhauled. Lots of features have been removed, which were hard to use anyways, resulting in a much more straightforward blob tracking setup. Files that use the Blob Track TOP will likely need to have their node's parameters adjusted.
  • BACKWARDS COMPATIBILITY WARNING - Casting TD objects (channel, point, vertex, matrix, position) to strings will now always include a decimal portion (1.0 instead of 1). This is more consistent with how python does casting of floats to strings. This causes an error in this build, however in future builds we will reduce it to a warning for a while to ease transition.
  • BACKWARDS COMPATIBILITY WARNING - int(par) will not return the index of a menu parameter in the future (just warning right now). Use par.menuIndex

Build 2016.5580 - Dec 07, 2016

New Features

  • Render Pick DAT New features for multi-view picking
    • Now supports doing more picks in a single render pass on using Multi-Camera Rendering. Results in faster picking, especially for scenes with complex scene-graphs.
    • New optional column on the input DAT. The column is named 'camera', and can either specify an index or a path to a Camera COMP. This allows picking to be done from different camera viewpoints than the first camera listed in the Render TOP, as it was previously. If an index is specified it will select one of the cameras listed in the Render TOPs Camera(s) parameter. If a path is specified any Camera COMP can be selected.
    • Added 'Custom Pick Camera(s)' parameter which allows specifying multiple cameras to be used for picking that are different than the ones in specified in the Render TOP.
  • Render TOP - Can now create cubemaps in a single pass on Pascal/Polaris Nvidia/AMD GPUs.
  • Render TOP - Now supports Simultaneous Multi-Projection for Pascal Nvidia GPUs and recent AMD GPUs. This is more general than the Stereo Rendering mode which only works with an X offset for both transform/projection. The cameras can have completely arbitrary transforms and projections. Setting the 'Multi Camera Hint' to 'Automatic' will use this mode when appropriate.
  • Video Device In TOP - Added support for 4K capture on Bluefish444 cards
  • Video Device Out TOP - Added support for 4K playback on Bluefish444 cards.
  • Vertex SOP - Added 4 custom attributes which you can name and use downstream, like in the Render Pick DAT.

Bug Fixes and Improvements

  • GLSL MAT - Removed legacy functions when working with new World Space Lighting mode.
  • Phong MAT, PBR MAT - Fixed output shader not working for rim strength ramps.
  • Depth TOP - Fixed linear depth not working correctly.
  • Window COMP default for DPI Scaling parameter is now 'Use DPI Scale', not 'Native'.
  • Palette Component updates and modifications: probe (launching properly with Ctrl-p), sopRender (now with interactive arcBall tumbling), movieDemo.
  • Audio Movie CHOP - Fixed crash that can occur in some cases.
  • Movie File Out TOP - Fixed Animation codec not working properly.
  • Video Device In TOP, Video Device Out TOP - Upgrade to Blackmagic SDK version 10.8.3.
  • Video Device Out TOP - Fixed bug where Blackmagic wasn't able to find driver in all cases.
  • Render TOP - Will now give a warning if Normal Mapping is being used with a SOP that doesn't have tangents created for it.
  • Info CHOP - added 'children_cpu_cook_time' for components.
  • CHOP to SOP - optimizations, about 50% faster.
  • Fixed broken Point Sprite MAT.
  • OP Find DAT - Fixed crashes in when callbacks delete the OPs they are passed.
  • Update Point Grey Spinnaker SDK to 1.0.0.295
  • Some export optimizations when loading .toe file, and load progress now displayed in splash screen.
  • Geometry viewer settings bug fixed.
  • Fixed crash that occurs on startup on some AMD GPUs.
  • Splash screen shows loading progress.

macOS Version Improvements

  • CPlusPlus CHOP now working on macOS version
    • Enables loading of appropriately packaged bundles with extension .plugin
    • Added Xcode project for existing CPlusPlusCHOPExample

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY WARNING - Camera COMP - The 'Custom Projection GLSL DAT' feature has changed in a non-backwards compaitible way. The shader needs to be updated to work again, changes should be quick though. Check the help for the Camera COMP for more information on the way to do this.
  • BACKWARDS COMPATIBILITY WARNING - GLSL shaders exported from the PBR MAT may need to be updated to function correctly. PBR functions are not available in the GLSL TOP if the Lighting Space parameter is set to 'Camera Space'.

Build 2016.4500 - Nov 22, 2016

New Features

  • Render TOP - Add support for Nvidia Stereo View Rendering. This allows for more quickly rendering two cameras that only have an X offset between them. Enabled by specifying two cameras in the Render TOP and changing the 'Multi-Camera Hint' parameter. Requires Pascal GPU (Geforce 1000 series, Quadro P-series).
  • Point SOP - New custom attributes options.
    • Added ability to create integer custom attributes.
    • Added ability to create a few more custom attributes per node.
  • Render Pick CHOP - Added ability to pick custom attributes.
  • Render Pick DAT - New custom attributes options.
    • Added ability to pick custom attributes.
    • Callbacks now include 'custom', a dictionary of custom attribute values for that event.
  • Event CHOP updated funcitons
    • createEvent() - now returns id, optional index=0 keyword, optional hold=False keyword, optional samples=None keyword (list of floats)
    • releaaseEvent(id=None) - (releases an event created with hold=True)
  • In MAT and Out MAT added, following the same format as in/out operators in other operator families.

New Python

  • Preference Class added .defaults member (dictionary of default values).
  • ui.preferences provides access to the application preferences.
  • ui.preferences.defaults and ui.preferences.resetToDefaults(), added .save() .load() methods
  • panelCOMP.layoutX Y XMargin YMargin
  • panelCOMP.layoutWidth .layoutWidthMargin .layoutHeight .layoutHeightMargin
  • panelCOMP.layoutRoot .layoutChildren .layoutParent

Bug Fixes and Improvements

  • Fixed old crash when setting some internal values between floating and string formats (eg. preference for CHOP rgb color)
  • GLSL TOP - Fixed recent bug where shaders would not recompile on the first edit of the DAT.
  • GLSL TOP - Added example DAT for Compute Shaders.
  • CUDA re-enabled on Windows. Upgraded to 8.0.
  • Movie File Out TOP - Nvidia H264 encoding is working again.
  • Environment Light COMP - Fixed Env Map Rotate not working with Pre-filtered maps.
  • Flipped Substance textures on y-axis.

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY WARNING Render TOP - Linear Depth option has been removed. To obtain a linear depth map of your render instead use the Depth TOPs option to rerange the depth buffer to linear values.

Build 2016.3740 - Nov 8, 2016

New Features

  • Substance TOP - Loads Substance Designer's .sbsar files creating PBR material textures. The Input Values parameter page exposes all the parameters used in Substance Designer to create and modify the material. This TOP can be directly referenced in the PBR MAT to correctly assign all the textures to the appropriate material maps.
  • Substance Select TOP - Selects a single texture from the material loaded in the Substance TOP for further filtering and manipulation in TOPs.
  • PBR MAT - The PBR MAT has been upgraded to support Substance Designer .sbsar files through the Substance TOP as well as numerous other PBR rendering improvements.
    • Added Ambient Occlusion, Specular, and Height maps and Level parameters.
    • Environment lights are now split up into different arrays in GLSL from other lights.
  • Environment Light COMP - Added support for prefiltering Environment Maps which results in much faster rendering. However, using an animated Environemnt Map texture (if the input is cooking), is very slow now as a result.
  • Cube Map TOP - Added support for horizontal cross cube maps.
  • Projection TOP - Added Cube Map output and Equirectangular input.
  • GLSL MAT - TDLightingPBR() and TDEnvLightingPBR() parameters have been simplified. If you have a GLSL MAT using these functions you will need to adjust the calls. In particular, ambientOcclusion has been removed from TDLightingPBR(), and camSpaceVert, shadowColor and shadowStrength have been removed from TDEnvLightingPBR().
  • Panel Components now include horizontal/vertical stretch weights.
  • Backdrop displays (viewers in background of network editor) now placed in alphabetical order.

New Python

  • tdu.expandPath(path), tdu.collapsePath(path) functions to expand/collapse filenames with project.paths entries.

Bug Fixes and Improvements

  • OpenVR - Upgrade to version 1.0.3
  • OpenVR TOP - Workaround SteamVR bug that caused both eyes to show the same texture in some cases.
  • Environment Light COMP - Fixed crash when creating a new Environment Light COMP.
  • Serial DAT Serial CHOP - Fixed intermittent long delays when activating/de-activing connection.
  • Improvements to Point Grey Spinnaker SDK support to handle device exceptions.
  • Projection TOP - Fixed issue with Cube Map TOP resolution
  • Movie File In TOP - 'Audio Loop' parameter, removed Blend to Start and added Match Start to End which produces a much cleaner transition without pops.
  • Noise TOP - Fixed bug where switching between Random (GPU) and other GPU noise types resulted in a solid color as output.
  • When opening a file/folder parameter, properly jumps to resolved file location. (paths, variables, etc).
  • Selecting a file/folder parameter now collapses it using Project.paths entries

Build 2016.2720 - Oct 19, 2016

New Features

  • Movie File In TOP - Add support for luminance-only .exr files.
  • PBR MAT - The model used for PBR is getting more streamlined so the way some parameters interact with it has changed and may change more over the next couple of builds.
    • Rearrange parameters and major improvements to PBR shader.
    • Rename RGB menu to Channel Source, add Channel Source menu to Ambient Occlusion map.
  • Environment Light COMP - Add support for equirectangular and polar maps.

Bug Fixes and Improvements

  • Phong MAT - Fixed bug where environment maps in the scene would break Phong MATs in some cases.
  • Timer CHOP now runs about a third faster.
  • PBR MAT, Phong MAT - Fixed Advanced Color buffer outputs not working.
  • Noise TOP - Fixed monochrome Random (GPU) noise not working.
  • Fixed bad loading of sys components when initially un-licenced.
  • Environment Light COMP - Remove Environment Map Color, fix functionality of Dimmer and Light Color parameters.
  • Serial CHOP - Potential crashes when placing one down.
  • Analyze TOP - Fixed crash when placing one down (ie GPU Particles )
  • Oculus Audio CHOP - No longer errors if used with FPS set to 90.
  • SSAO TOP - Fixed bug that broke this node.

Backwards Compatibility Issues

Backward compatibility - Local variables TOUCHVERSION, TOUCHBUILD, TOUCHTIME no longer updated when found in local components. (caused slow load times and stability issues)


Build 2016.2100 - Oct 07, 2016

Here is a list of Known Issues for macOS version.

New Features

  • TOPs - Add support for rendering into an 8-bit sRGB encoded buffer. This stores more data for the darker color values so that data is around for future processing, it doesn't not actually brighten/darken the image.
  • Syphon Spout In TOP - Spout TOPs renamed to Syphon Spout TOPs. Now work with Syphon on OSX and Spout on Windows.
    • Added support for rectangle textures as an FBO attachment.
  • OpenColorIO TOP New TOP can be used to apply 3D lookup tables to textures (using the OpenColorIO SDK).
    • Added display, view, colorspace, colorspace transform menus.
    • Added menu option to lookup precision to automatically grab value in config file.
    • Added File and CDL submenus to support their respective OCIO transforms.
    • Status reports to Info DAT.
  • Video Device In TOP
    • Added support for BlueFish444 cards.
    • Added support for Point Grey Spinnaker API/SDK.
    • IDS color cameras now supported, format IS_COLORMODE_BAYER.
    • New channels reported in the Info CHOP - capture_fps, capture_total, frames_repeated, frames_dropped, connection_changes
      • capture_fps drops to zero when frames stop arriving.
      • frames_repeated continues to climb when camera unplugged.
      • connection_changes increments for each camera connected/disconnected. Only implemented for IDS cameras currently.
  • Video Device Out TOP
    • Added support for BlueFish444 cards.
  • Video Stream In TOP - New parameters to control network buffer and queue size, which allows for higher bandwidth H264 playback.
  • Touch Out TOP
    • Added support for sending HAP Q Alpha images.
    • Now supports connections to multiple Touch In TOPs at the same time.
  • Screen Grab TOP - new screen grab technique incredibly fast makes fullscreen screengrabs viable in real time on Windows.
  • Text TOP value formatting improved - Now the + (plus) flag is supported in addition to - (minus) flag. Example:  %+0.83f
  • Noise TOP - New 2nd input which allows for specifying custom noise coordinates on a per-pixel basis using an input texture.
  • Math TOP Added Multi-Add and Range submenus containing fields similar to the Math CHOP's OP submenu. Added an input and output mask to dictate what channels are used in the combine operation and in which channels the result is stored.
  • Cube Map TOP - Able to convert a Cube Map texture back to a 2D texture with a vertical cross of the cube map.
  • GLSL TOP - Now supports GLSL Compute shaders.
  • CPlusPlus TOP - To avoid GL state issues, the node owns it's own unique OpenGL context which is enabled using beginGLCommands() and endGLCommands() on the 'context' parameter passed into execute(). Older .dll should still work as-is.


  • DMX Out CHOP updates
    • sACN streaming DMX protocol now supported.
    • Added support for sACN multicast.
    • Art-Net and sACN now auto increment universe each channel when routing table is not specified.
    • Universe 0, 64000-65535 (except 64214) are reserved in sACN. Issue warning when they are being used.
    • Added toggle to use custom port for Artnet/sACN, otherwise use the defaults. sACN will start at universe 0 instead of 1 within TouchDesigner.
  • Splice CHOP - New CHOP for splicing samples into channels. Supports trimming and inserting of samples.
  • Reorder CHOP updates
    • Added additional methods to Method parameter and input order reference by index.
    • Update Switcher count in Reorder CHOP.
  • Sequencer CHOP bought back!


  • File In SOP - Now supports loading simple polygonal .obj files.
  • FBX Export from SOPs - Added FBX export support for mesh and NURBS from SOP Nodes.
  • FBX Import - Added multiple texture coordinate sets support for FBX mesh import.
  • Transform SOP - Added more translate options to the post page.


  • New PBR MAT for physically based rendering materials.
    • Added toggle to enable Parallax Mapping and added an associated Parallax Clamp parameter * Normal Map TOP.
    • Added an option to put the heightmap into the alpha channel.
  • Phong MAT, PBR MAT - Add support for rotating cube environment map.
  • GLSL MAT
    • New TDShadow() function which does shadowing based on the light's current setting.
    • Added uTDMat.cameraIndex member which is the index of the camera currently being rendered in multi-camera Render TOPs.


  • Render Pick DAT - Added 'Extend UV' toggle to allow u,v updates when cursor not directly over object.


  • Component Privacy - You can now add password protection to components to make them private (Pro feature).
  • Environment Light COMP - new light type for environmental lighting duties.
  • Replicator COMP - Added parameter 'Incremental Update' to stagger replication of nodes to avoid large frame drops when creating replicants.
  • Window COMP New parameter Size Context: to choose between Contents (Excluding Border) (default) and Window (Including Border)



  • GPU Affinity can now be specified using -gpuformonitor <monitorIndex> which is a more stable way of specifying GPU affinity since GPU indices can sometimes change.
  • Support for high DPI monitors
    • User Interface can be resize using Windows Display Settings by changing "Size of text, apps and other items" setting.
    • Window COMP has high DPI support through a new DPI Scaling parameter.
  • Preferences > General now has setting to move incremented save files to a Backup folder ( myFile.1.toe, myFile.2.toe, ... etc.)

New Python

  • Upgrade to Python 3.5
  • Par Class - Par.evalOps() - Evaluates the parameter as series of operators. This is useful for any parameter that specifies a list of operator paths for example.
  • Project.saveOsName .saveOsVersion .saveBuild .saveVersion are renamed members to clarify their use.
  • COMP.isPrivacyActive = True when privacy is active and the component's networks are private. False when privacy is inactive and the contents can be temporarily viewed and edited.
  • tdu.Dependency() notifies its targets when deleted.
  • Added tdu.ArcBall.setTransform to set the current transform of the arcball.
  • Par.defaultExpr to get/set custom parameter default expressions.
  • Par.val now matches Par.eval() when casting values to integers.
  • Project.osname .osversion .build .version added.
  • Movie File In TOP - Added 'trueNumImages' member.
  • Video Device In TOP - isConnected member/info channel now set to 0 when IDS Camera lost.
  • OP.showCustomOnly will only display custom parameters on dialogs.
  • Added App.osName, App.osVersion
  • Project Class members: .version .build returns the version, build of the currently loaded toe file.
  • Empty python callback functions are no longer called, speeding up some situations.


Palette

  • Fixed startup errors when drag-dropping components with global shortcuts, causing conflicts.
  • Updated camSchnappr, geoPanel, and gal components to address various issues.


Bug Fixes and Improvements

  • Added support for GLSL 4.40 and 4.50
  • Upgrade to GL3.3+
  • Convert all shaders from 1.2 GLSL to 3.3
  • Fixed crash when panel click command received bad arguments.
  • OP Execute DAT - flagChange callback, now includes flag label.
  • Fix uninitialized sRGB state that caused displays to seem washed out in some cases.
  • Window COMP - 'Open in Separate Window' now resizes, moves, and lays out contents properly each time it is pulsed.
  • FBX importing handles layered textures better.
  • Audio File In CHOP - File is now be properly unloaded when File parameter is cleared.
  • Panels - Layer parameter now supports float values.
  • Key Manager dialog updated to show user all licenses and allow the selection of a particular license to create key with.
  • Clock CHOP - Fixed several inaccuracies when outputting fractional values.
  • Clock CHOP - Fixed issue where entering sleep mode could lag the output values.
  • Movie File In TOP - New 'has_decode_errors' Info CHOP channel and hasDecodeErrors Python member. Only functional with Hap codec files currently.
  • Fix off-by-one error in Movie File In TOP.
  • CPlusPlus TOP, CPlusPlus CHOP - Add the ability to get the texture data from a TOP in CPU memory.
  • Movie File In TOP - .png files will now automatically multiply their RGB by Alpha.
  • Support for Nvidia SDI solutions has been removed.
  • Video Device In TOP - Fixed flickering that can occur when Sync Groups are used and the capture is performing poorly.
  • Movie File In TOP
    • Fixed issue where non-cycle extend modes would not show the final frame.
    • Tiled .exr files that are missing tiles will now open instead of erroring.
  • Movie File Out TOP - Possible fix for hangs that can occur when recording multiple movies one after another.
  • Movie File Out TOP, Video Stream Out TOP - Upgrade to NvEnc 6.0. Requires Nvidia driver 358.00 or later.
  • Circle TOP, Rectangle TOP - Fixed issues where the resolution is getting artificially limited by Non-Commercial license and aspect fraction units were used, resulting in incorrect results.
  • RealSense TOP, RealSense CHOP - Upgraded SDK version to 2016 R1, also called R6.
  • Video Device In TOP - Upgrade to Blackmagic SDK 10.5.2. Will require Blackmagic Desktop Video 10.5.2 or later to be installed.
  • Transform TOP - Behavior of tiling for Zero and Hold extend modes has been made more consistent.


  • CHOP export conflict resolution improved
    • Conflicts automatically resolved by disabling specific row in the Export DAT Table (no more confusing dialog, re-introduced the 'enable' column in DATs to control specific rows). Previously it simply turned off an export flag.
    • Automatically disabling the last export row will turn off export flag
    • Toggling export flag back on will enable all rows, if they are all off.
    • Cutting & pasting node keeps original node export, not pasted node.
    • Fixed cases where export connections lost when using 'DAT Table by Name' and channel names changed during bypass/error etc.
    • Fixed export conflict behaviour by deleting row from CHOP table again, instead of turning off export flag.
    • Fixed issues with automatically re-creating missing export tables when dragging-dropping CHOP channels.
  • Timer CHOP - Fixed off-by-one error in running total values.
  • Beat CHOP - Playmode now defaults to 'Local Sequential' to avoid frame 1 skips.
  • Fixed flickering CHOP viewer horizontal axis labels.
  • Fix off-by-one error with sACN, zero out unused bytes for both ArtNet and sACN
  • Added an active parameter which sets output to 0 or black, when deactivated for Leap Motion CHOP RealSense CHOP Kinect CHOP Leap Motion TOP RealSense TOP Kinect TOP
  • Modified the behaviour of LeapMotion CHOP so that it outputs 0 values in channels when not tracking.
  • Parameter CHOP now outputs single framed pulses when pulse-type parameters are fetched, not their constant evaluation value.
  • Upgraded to FTDI Driver version 2.12.16 (Used in DMX In/Out CHOPs).
  • In CHOP no longer cooks its default input when component input attached.
  • LFO CHOP - Fixed it becoming stuck with bad output when input octave control too high (-127 to 127).
  • Oculus Audio CHOP - Upgrade to SDK version 1.0.1.
  • OpenVR CHOP - Add ability to output debug channels.
  • RealSense CHOP - Will now always output selected feature channels, even if no device is present.


  • Polyloft SOP - Fixed crash when wrapping u/v without specifying groups.
  • Group SOP fixed crash when renaming non-existent group.


  • PBR MAT - Updated default values for metalness, roughness, reflectance parameters.
  • Phong MAT - Fixed Diffuse/Specular Map color buffer output not working if diffuse/specular color is 0.



  • Replicator COMP setting 'Maximum Opertors' to 0 now results in 0 replicants, not 1.
  • Window COMP - Changed Cursor Visible to have states: Never, When Moving, and Always. Internal window changed to support all 3, with panel and viewers opening defaulting to When Moving (currently can't be set), and all other windows to default to Always visible.
  • COMP operators now include list of clones in popup info.
  • 'Enable Cloning' now used at the master level to control if cloned objects stay in sync or not.
  • Fixed case where custom parameters were not being updated properly in cloned components, inside of clones.
  • List Component - Fixed unresponsive UI after clicking list with zero rows.


  • MIDI devices now recognized when plugged in *after* starting TouchDesigner. If device is unplugged and replugged, tscript 'midi -r' will reconnect all devices.
  • MIDI OPs receive data when devices, unplugged, replugged.
  • MIDI OPs now reconnect, after unplugging, replugging automatically.


  • Cutting & pasting OPs or panes no longer affects interior digits in their name. 'a3D' becomes 'a3D1', 'a3D2'.., not 'a4D', 'a5D'..
  • New sample movies in application installation folder /Map/Nature.
  • Fixed bug where mesh specific Geometric Offset/Transforms were not imported correctly in .fbx files.
  • Setting a menu parameter to a float now supported. No longer need to explicitly cast to int.
  • Crash fix when parameters are rebuilt in some cases.
  • Fixed cooking dependencies for OP.pars() expression.
  • Extended ascii dash characters are now accepted for command line startup options such as -gpuformonitor.
  • PythonExamples.toe updated to new syntax.
  • Fixed error in which copying an operator in script would cause its storage items to be shared by both operators, instead of unique references, as happens when cutting & pasting or loading from file.
  • Fixed 'NoneType' has no attribute errors, when accessing OPs with broken extensions.
  • Popup warning when user sets $TEMP to an invalid folder path.
  • Renaming a parent of an operator will now cause nodes looking at that operator to recook.
  • Fixed connection issue with external tox's to multi-input operators.
  • Pressing 'h' (Home All) over a SOP or Geometry viewer will keep the scene automatically homed, until manually re-positioned with the mouse. Likewise 'f' (Frame All) will keep it framed. Rotating a homed object will continue keeping it in frame.
  • Fixed TUIK Color picker knob values not being restored.
  • Crash fixed for 3D Geometry Viewer panes when nodes deleted.


Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY WARNING - GLSL TOP - Due to upgrading OpenGL version, alpha-only textures behave differently. Shaders must now call TDOutputSwizzle() on their output vec4 to place the color channels in the correct spots for the particular internal texture format that is being used.
  • BACKWARDS COMPATIBILITY WARNING - Modern GL/macOS does not support the implicit GL Alpha Test ('Discard Pixels Based on Alpha' in the MATs). GLSL 3.30+ shaders need to have the new line TDAlphaTest(<yourAlphaValue>); in their shader to support this feature now. Alpha test will not be functional if this line is missing from GLSL shaders.
  • BACKWARDS COMPATIBILITY WARNING - Text TOP - Now handles aspect ratios that differ from the resolution's aspect ratio better. Text TOP behavior may have changed for nodes that were already in this state.
  • BACKWARDS COMPATIBILITY WARNING - Resample CHOP - Fixed output range when method set to 'New Rate, Same Time Range'. When total number of samples decreases, don't use cubic, use linear. Output range may be slightly different in this mode.
  • BACKWARDS COMPATIBILITY WARNING - Better unique IDS menu name/label formats. Possibility that Audio Video In menus may need to be reset in systems with multiple IDS cameras.
  • BACKWARDS COMPATIBILITY WARNING - Fixed jumping animation output on segment edges that depended on overall length. Animation Component Output may give slightly different output curves.
  • BACKWARDS COMPATIBILITY WARNING - project.paths is now an ordered dictionary, doing a full substitution on each file parameter prefix. project.paths now requires full uri syntax for each key. Example 'MOVIES://' instead of 'MOVIES'
  • BACKWARDS COMPATIBILITY WARNING - Select CHOP - Fixed some issues where duplicate channels names could be created with this node by specifying the same channels multiple times in the 'Channel Names' parameter.
  • BACKWARDS COMPATIBILITY WARNING - The -gpu startup option has been removed. Use -gpuformonitor instead, which takes a monitor index instead of GPU index.
  • BACKWARDS COMPATIBILITY WARNING - Monitors are now ordered from left to right, bottom to top in the Monitors DAT and for usage in the Window COMP, instead of left to right, top to bottom as they were previously.