Jump to navigation Jump to search
Build 2021.33420 - Sep xx, 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.
- Text COMP
- Geo Text COMP
- Stype Out CHOP
- FreeD Out CHOP
- Deltacast support
- Ouster now requires version 2 firmware.
- 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.
- Panel Rendering Upgrade *** NOTE - fill this in! *** - Panels no longer rendered with fixed sized textures.
- 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 Class - Added tdu.forceCrash() to force a crash for debugging and crash recovery testing.
- tdu.tryExcept(func1, func2 or value) -> result - Second parameter can be another callable function or a direct value.
tdu.tryExcept(lambda: 1/me.par.w, 0.0) # second argument is simply 0.0 tdu.tryExcept(lambda: 1/me.par.w, me.GetDefaultValue) # Good: me.GetDefaultValue not called until needed. tdu.tryExcept(lambda: 1/me.par.w, me.GetDefaultValue()) # >> INCORRECT <<. Always calls second function even if not needed.
- TDAbleton Components are now available individually in the palette.
Bug Fixes and Improvements
- Upgrade to CUDA 11.2, OpenCV 4.5.2, Slug library 6.0
- 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.
- OP Viewer COMP - New 'Interactive' parameter controls interaction with mouse and keyboard.
- Panel COMPs - All Panel COMPs now have 'TOP Smoothness' parameter which controls background TOP's viewer smoothness settings. In previous builds of TouchDesigner, this was always 'Mipmap Pixels', so old files will load with this setting whereas the default for new Panel COMP's is 'Interpolate Pixels'.
- GLSL MAT - Point Sprites must now use TDPointCoord() instead of gl_PointCoord to obtain the texture coordinates for the sprite. See Backwards Compatibility section below.
- Level TOP - Added 'Pre-Multiply RGB by Alpha' parameter to Post page.
- Level TOP - No longer clamps floating point input values by default.
- Luma Level TOP - Fixed alpha being effected by options other than 'Opacity'.
- Null TOP / Out TOP - And other all other TOPs can now select their 'Viewer Smoothness' and 'Fill Mode'. Previously this was not available on 'instance-style' TOPs.
- Text TOP - Added smart quotes support.
- Text TOP - Added support for floating point positions offsets for non-bitmap fonts.
- Text TOP - Stroke rendering now looks a bit better, but still not as good as Scalable mode.
- 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.
- Using floating point values in integer parameters (either through expressions or exports) will now round the value, instead of truncate it. See Backwards Compatibility section below.
- 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.
- TOP - 'Viewer Smoothness' and 'Fill Mode' can now be controlled by a preference.
- Added drag-drop support for json file extensions
- 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.
- Fixed Bind expressions involving 'me.curPar'
- ctrl+c now interrupts Python scripts in macOS. Try it for hangs.
- Refactoring panel layout for more efficiency and better performance.
- SDK info for operators is now available in the pop-up info for the operator.
- BACKWARD COMPATIBILITY - Using floating point values in integer parameters (either through expressions or exports) will now round the value, instead of truncate it. This may cause different behavior for fractional values exported to menus or other integer parameters.
Example: Exporting 4.9 to an integer parameter will now be considered a value of 5, not 4.
- BACKWARD COMPATIBILITY - GLSL MAT - When working with Point Sprites, you must now use TDPointCoord() instead of gl_PointCoord to obtain the texture coordinates for the sprite.
- 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.
- BACKWARD COMPATIBILITY - The tscript command 'jpeg' has been removed. The 'quality' keyword in OP.save() can be used to control JPEG quality instead.
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.