Release Notes/2021.30000/next

Build 2021.32280 - Jul 08, 2021

New Features

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

New Python

  • 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: ui.panes[0].placeOPs(opType='waveCHOP') or ui.panes[0].placeOPs(opType=waveCHOP)
  • 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)

New Palette

  • 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

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