Bug fixes and improvements
Release Notes 

Dec 14, 2022

New Features

  • Table DAT - New features that let you conveniently create and/or fill rows and columns of a table. On the new Fill page, the Fill menu adds 3 options: Fill by Column, and Fill by Row, and Set Size and Contents.
    • Fill page to generate multiple rows/columns with specific headings using space-separated names or an expression, plus expressions to fill the cells.
    • Sequential parameters lets you generate multiple sets of new cols or rows.
    • new expressions me.subRow, me.subCol (for sub-section being filled). See popup menu on Cell Expression parameter.
  • Insert DAT - Similar new features to fill new columns/rows or replace existing columns/rows using expressions:
    • Replace existing columns/rows by toggling 'Replace if Duplicate Name'.
  • Web Server DAT - Added a 'Verify Client' toggle that when enabled will send out a certificate request to the connecting client for verification purposes.


New Python

  • Python on macOS: PYTHONPATH environment variable is respected for loading custom packages
  • .round() support added to * Par Class, PanelValue Class, Cell Class, and Channel Class for rounding floating point numbers to integers.
  • TOP Class - Fixed save() not working asynchronously for .exr files.
  • TDFunctions.parMenu is now available for use in custom menu pars' menuSource without needing import via tdu.ParMenu


New Palette

  • TDAbleton - 2.0.1 - Fixed a bug when renaming cue points in Live.
  • Palette:audioAnalysis - v6.0.3 - Active toggles on Kick, Snare and Rhythm were not working.
  • Palette:depthProjection - New component in PointClouds to project a depth image into a point cloud using the given camera intrinsics.
  • Palette:cameraViewport - v0.38.0 - Added options to draw axes and pivot.
  • Palette:particlesGpu - Reworked Particle Source parameter disable in case of input is supplied, also removed some unnecessary operators.
  • Palette:probe - v22.0.4 - Interactions with all data type viewers (CPU/GPU time/memory) working again. Switched to font that is on macOS, and cosmetic improvements.
  • Palette:signalingServer - v1.0.4 - New toggle to disable verification of clients certificate on the Web Server DAT is toggle off by default.
  • Widgets - v2.1.49 - Scale when too large feature fixed for a few widget types.


Bug Fixes and Improvements

  • TouchEngine - Numerous bug fixes and updates under the hood.
  • Engine COMP / TouchEngine - Fixed Execute DAT play-state changes being ignored.
  • Engine COMP - Additional improvements and bug fixes.
    • Fixed onInitialize() callback timing, added onReady() callback. See BACKWARD COMPATIBILITY section below.
    • Fixed lost $PYTHONPATH environment variable.
    • Fixed stuttering when using time-sliced CHOPs with auto-buffering.
  • FBX COMP - For some FBX files fixed capture attributes in meshes on TouchDesigner load when cache is not present.
  • Geo Text COMP - Fixed some issues with Render Pick CHOP, Render Pick DAT and this operator.
  • List COMP - Fixed conflict in drag/drop callbacks, now new drag/drop callbacks get priority over old internal callbacks if both exist.
  • Panel COMP - 'Floating Viewer Aspect' parameter removed, as its defined by 'Size from Window' and 'Fixed Aspect' parameters.
  • Text COMP - Fixed a crash when the node is deleted while editing.
  • Text COMP / Text TOP - Try to avoid cases where multiple fonts within the same family were listed with the same name.
  • Text COMP / Geo Text COMP - Updates to color formatting.
    • Color values in formatting directives are now assumed to be linear rather sRGB.
    • Alpha values from formatting directives, parameters and the specification DAT/CHOP are now combined rather than replaced.
    • Alpha values in formatting directives are automatically pre-multiplied now for proper blending.
  • Window COMP - Re-enabled 'Hardware Frame-Lock' support on Nvidia GPUs.
  • Edge TOP - Added 'Pre-multiply RGB By alpha' parameter.
  • GLSL TOP / Depth TOP - Fixed cases where 3D textures and Cube textures would not work properly on Nvidia Pascal series GPUs.
  • GLSL TOP - Fixed crash when switching from Texture Buffer to Uniform Array mode in the 'Arrays' page.
  • Kinect Azure TOP - Changed the token format used by the 'Sensor' menu to match other device nodes. Cameras will now match by index number when a matching serial number is not found.
  • Text TOP - Fixed some 'Stroke' text rendering issues.
  • Video Device In TOP - Fixed 10-bit input for [[DeltaCast] devices.
  • Video Stream In TOP - Fixed srt:// URLs not working on macOS.
  • Video Stream Out TOP - Better error messages when GPU encoding resources are exhausted.
  • Video Stream Out TOP - Avoid hang when RTMP receiver isn't processing packets properly.
  • Delay CHOP - Fixed temporary random output when delay parameter increased. Also fixed glitchy output that could sometimes occur.
  • Timer CHOP - Numerous bug fixes and improvements.
    • Scrubbing with .goTo() no longer affects the running count values. See BACKWARD COMPATIBILITY section below.
    • Playing count timers and cumulative timers no longer jump during .goTo() scrubbing.
    • When goTo results in restarting of the timers, reset cumulative/playing/running counters.
    • Fixed inaccurate .goTo(segment=x)
    • New members to access cumulative time: .cumulativeFrame .cumulativeSample .cumulativeSeconds .cumulativeTimecode
    • New members to access playing time: .playingFrame .playingSample .playingSeconds .playingTimecode
    • Methods renamed to plural to match output channels, and are all zero-based. Old callbacks will still work but new Timer CHOPs will have this updated naming. .masterFrames .runningFrames .playingFrames .cumulativeFrames and .masterSamples .runningSamples .playingSamples .cumulativeSamples
  • Sprinkle SOP - 'Surface Attributes' generate Color/Normals and other attributes from input.
  • Execute DAT - Crash fix.
  • Monitors DAT - 'Description' column now tries to give the monitor name, not the GPU name.
  • Monitors DAT - Added 'serial_number' column. See an implementation of it in the OP Snippets for the Window COMP.
  • Parameter Execute DAT - Fixed crash in some cases.
  • Text DAT - Python syntax highlighting now recognizes functions that start with underscores and colors built-in functions like __init__ as keywords.
  • XML DAT - Fixed cases where individual quotes were included in text elements. Example: John's job.
  • RenderStream - Save out the JSON for the schema for the project, so it can be read even when TouchDesigner is not running.
  • Animation Editor - Fixed shortcuts for spacebar, left/right arrow, copy/paste/delete.
  • Animation Editor - Fixed various odd behaviors with selection of keys and segments, general improvements.
  • Greatly improved saving/loading cloned components to disk.
  • Fixed inaccurate 'me' python symbol when tscript scripts executed between python scripts.
  • Fixed jittery behavior when dragging nodes to edge of editor.
  • Fixed OP Create Dialog behind floating network editors.
  • Fixed transform issues when rendering large numbers of geos.
  • Fixed extensions and other objects failing to be deleted when printed with debug() function.
  • Fixed momentary delay entering Geo COMPs with their display turned off yet containing several children.
  • Fixed memory leak involving promoted extensions.


Operator Snippets


Backward Compatibility

BACKWARD COMPATIBILITY ISSUE - Engine COMP - Fixed onInitialize() callback timing and added new onReady() callback. onInitialize() was erroneously being called when initialization completed. If you relied on this behavior, use the new onReady() callback instead. onInitialize() is now called when initialization begins.