Release Notes/2021.30000/next

From Derivative
Jump to navigation Jump to search

These are the release notes for our upcoming release. Welcome to the "insider club"!

Build 2021.35180 - Oct xx, 2021[edit]

New Features[edit]

  • Deltacast support has been added, TouchDesigner supports both Deltacast PCI-e video cards and the Deltacast FLEX product line.
  • 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 that also offers Search & Replace functionality. Available globally or per component.
  • Panel Rendering upgrade *** NOTE - fill this in! *** - Panels no longer rendered with fixed sized textures.
    • UI Text Rendering changed to use Slug Library and panel direct rendering.

New Python[edit]

  • Camera.frameBounds() - Now returns a frame width that can be used for the Ortho Width parameter of an orthographic camera.
  • 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 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.

Example:

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

New Palette[edit]

Bug Fixes and Improvements[edit]

  • 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.
  • Animation COMP - Preserve custom columns in keyframe DAT tables when editing keyframes.
  • List COMP - Improvements
    • Fractional font sizes are now allowed. Font sizes are no longer rounded down to the nearest integer. See Backward Compatibility below.
    • Text offset now supports fractional floating point numbers.
    • 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.
    • Callback DAT is now docked on the outside of the OP by default.
  • 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'.
  • Parameter COMP - 'Allow Expansion' parameter controls whether or not parameters can be expanded to reveal expression fields.
  • 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.
  • Ouster TOP / Ouster Select TOP - Output now reverts to a default black texture when the active flag is disabled.
  • Ouster TOP / Ouster Select TOP - Added option to not display incomplete frames.
  • Ouster TOP - Added support for signal multiplier. Requires firmware version 2.1 or greater.
  • Ouster TOP - Fixed missing and skipped packet numbers incrementing incorrectly when using a partial azimuth window.
  • 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.
  • Video Device Out TOP - Fixed Blackmagic 10-bit RGB 4:4:4 output not working correctly.
  • Video Device Out TOP - AJA 10-bit output now works when firmware that does not support color space conversion is loaded onto the device.
  • Video Device In TOP - Added support for capturing 10-bit input when using firmware that does not support color space conversions.
  • Video Device In TOP - Reduce stalls that occur when the input signal format into Blackmagic devices changes.
  • Video Device In TOP - New transfer modes for Vulkan implementation.
  • Joystick CHOP - Added active toggle.
  • MIDI In CHOP - Much smoother timesliced channels especially when dealing with high frequency input.
  • MIDI Out CHOP - Fixed issue with random values being generated when number of channels changed.
  • Panel CHOP - Fixed crash when target panel deleted.
  • Sync In CHOP - Warning when project still in Realtime mode.
  • Sync Out CHOP - Include client Realtime status in info.
  • 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 information about SDK version used by the operator. MMB on an operator or click "i" Info icon in the parameter dialog to view in the pop-up info.
  • TOP preference - 'Viewer Smoothness' and 'Fill Mode' can now be controlled by a preference.
  • Automatically created parameters will no longer be classified as 'custom parameters'. This applies to Parameter DAT filters, dialog options, and python access. Affects following operators: C++/Custom Operators / VST CHOP / Substance TOP / Notch TOP
  • 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.
  • Reconnecting audio devices better handled by Audio CHOPs.
  • Improvements to pop-up help performance and size for DATs
  • toecollapse/toeexpand now support duplicate operator names in which only case changes.

Backward Compatibility[edit]

  • 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.
  • BACKWARD COMPATIBILITY List COMP - Fractional font sizes are now allowed. Font sizes are no longer rounded down to the nearest integer. 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.