Build 2021.32280 - Jul 08, 2021
- TouchDesigner's graphics API is now Vulkan, openGL has been retired. macOS uses MoltenVK, a portability project allowing Vulkan to be used on top of Apple's Metal framework.
- Python - Upgrade to 3.9.5.
- OpenCV - Upgrade to 4.5.2.
- Pre-multiply by Alpha overhaul - Largely re-worked how TOPs and MATs deal with alpha. They all now try to generate Pre-Multiplied Alpha when generating colors, and the MATs assume incoming textures and colors are Pre-Multiplied Alpha.
- New Search Dialog . Available globally or per component.
- Dependency Class callbacks method
- A modifiable list of functions. When the Dependency object is modified, it calls each function on the list.
- The function is called with a single argument which is a dictionary containing the following:
- 'dependency'- The Dependency that was modified.
- 'prevVal' - The previous value if available.
- 'callback' - This callback function, which can be removed the the Dependency callbacks if needed.
- WebclientDAT Class.connections - List of current HTTP connection identifiers.
- WebclientDAT Class.closeConnection(id) - Close the connection associated with the given identifier.
- WebclientDAT Class.request - Added timeout keyword.
- NetworkEditor.placeOPs method accepts opType for creating node. This argument can be either a string or a type. Example:
- tdu Module tryEval(expr, val) -> result - Evaluate the expression, if an exception is raised then return val instead.
Example: tdu.tryEval('1/me.par.w', 0)
- TDAbleton Components are now available individually in the palette.
Bug Fixes and Improvements
- Upgrade to CUDA 11.2, OpenCV 4.5.2
- Material Design Icons - Upgrade to 5.4.55. Include cheat-sheet in installer.
- List COMP - Improvements
- No longer wraps around negative indices when accessing cell attributes.
- str(ListCell) returns calculated text at that cell, or blank.
- Fixed dragging onto list components when their viewer has been resized/stretched.
- Fixed dropping to use python defined items.
- Text TOP - Added smart quotes support.
- Text TOP - Added support for floating point positions offsets for non-bitmap fonts.
- Panel CHOP - Fixed crash when target panel deleted.
- Examine DAT - Fixed missing entries with matching values but different keys.
- Parameter Execute DAT - Fixed failing to monitor changes when a parameter default is changed.
- Added support to assign a list of ops to a multi-op parameter in python.
- calling eval() on multi-op parameters will now return a single op if there is only 1 result, a list if there are more than 1, and none if there are no results.
- Added information about SDK version used by the operator.
- Fixed color picker dialog parameter UI when dealing with ranges other than 0-1.
- Added wildcard dependency to ops function search so new nodes will trigger a recook.
- Cooking optimizations, data dependency improvements, updating parameter value optimizations, extension initialization improvements.
- Fixed issue with self parameter dependency (me.X depending on me.Y) not getting updated when parameter Y is updated during cook.
- ctrl+c now interrupts Python scripts in macOS. Try it for hangs.
- Refactoring panel layout for more efficiency and better performance.
- BACKWARD COMPATIBILITY - PBR MAT - Removed 'Mult Alpha by Light Luminance' feature, as it didn't work with the more alpha-correct-behavior of the shader now.
- BACKWARD COMPATIBILITY - The python object type for the Nvidia Flow Emitter COMP has been renamed to flowemitterCOMP from flowEmitterCOMP to be consistent with naming conventions.
- BACKWARD COMPATIBILITY - Light COMP - Removed defunct 'Shadow Mapping Projection' view type from projection menu.
- BACKWARD COMPATIBILITY - SVG TOP - Has been removed for now because the OpenGL feature it was based on does not exist in Vulkan. Please use Palette:webSvg to load SVG files in TouchDesigner.
Notes to clarify:
- Disallow changing the contents of an operator unless it is locked, or when executing within the onCook callback of a Script Operator.
- BACKWARD COMPATIBILITY - Lock any operators that were accessing the script methods outside the onCook callback.