Release Notes/099/Experimental

From Derivative
Jump to: navigation, search

Build 2018.22270 - Apr 20, 2018

New Features

Movie File Out TOP - H.265 support

    • Added support for H.265 HEVC encoding via Nvidia's GPU hardware encoder. Requires Nvidia GPU and Windows OS.
    • Added Bit Rate Mode controls for H.264/H.265 on Advanced parameter page.
  • Video Device In TOP, Video Device Out TOP - Upgrade to latest AJA SDK version, which should add support for newer devices such as the AJA Io 4k Plus.

New Python

  • OP Class - Added relativePath() method.
  • OSC Out DAT - sendOSC has two new keyword arguments.
    • useNonStandardTypes (defaults to True) - This can be set to False to force the command to only use the 4 standard types OSC supports: 32-bit int and float, string and blob.
    • use64BitPrecision (defaults to False) - This can be set to force sending both integers and floats as 64-bit values.

Bug Fixes and Improvements

  • TOP to CHOP - Even when Download type set to 'Next Frame', load immediately on startup to avoid initialization errors dependent on the output.
  • Audio Device In CHOP - Fixed crash that can occur if DataPath driver is selected, but no DataPath driver is installed.
  • Audio Device In CHOP, Audio Device Out CHOP - Fixed up Driver parameter so these nodes moves between Windows and macOS machines more cleanly bu adding the concept of default driver for each operating system.
  • Logic CHOP - Fixed a memory leak when scoping channels.
  • Render Pick CHOP - Fixed incorrect picking/triggering channel values when 'Search Size' > 1.
  • OSC In CHOP / OSC In DAT - Fixed a bug where re-activation would sometimes cause previous events to be reprocessed.
  • Fixed recently introduced crash that can occur when using UDP Multicast.
  • Fixed single value parameters not working with parameter evaluation optimizations.
  • Fixed issue with macOS TouchPlayer where file specifying non-existent Perform Mode monitior would hang.
  • Fixed macOS crash when closing that would spawn an empty crash dialog.
  • OP Snippets now launches faster (in same process). Also, if you select an OP in your network and then go Dialogs -> Operator Snippets, it will open the snippets for the current operator, if one is available.

Build 2018.21670 - Apr 09, 2018

Bug Fixes and Improvements

  • Movie File In TOP - Fixed a crash that can occur when changing the 'Max Decode CPUs' parameter.
  • Movie File Out TOP - Fixed a crash that can occur if the number of audio channels is reduced during a recording.
  • Composite TOP - Fixed 'Preview Grid' mode not working correctly on some GPUs.
  • Texture 3D TOP - Allow 'Replace Single' to work when 'Pre Fill' has also been used.
  • Tile TOP - Fixed a crash that can occur in some cases.
  • Audio Device In CHOP - ASIO Input reworked to avoid hangs and sluggish responses when selecting drivers or changing channel input scopes.
  • Environment Light COMP - Fixed cases of over calculating when cooking. New bug that was introduced in the previous build.
  • Light COMP - Fixed an issue where projection maps would also be projected out behind the light.
  • File In CHOP - Fixed a crash if a movie file with no audio is opened with this CHOP.
  • Trigger CHOP - Don't trigger when adding channels, only on proper value changes.
  • OSC In CHOP - Fixed a crash when bypass/unbypass state changed.
  • Panel components now handle differently sized/stretched children when laying out left/right or top/bottom.
  • Parameter COMP - The minimum width the parameter can be drawn at before scaling can now be read using .minWidth
  • Opening any window (viewer, menu choice, etc) will now be always on top if launched from a window that is always on top. (unless otherwise specified)
  • Floating panes can now be further split through existing UI or python.
  • Fixed creation of orphaned cloned replicants.
  • Fixed issue where drag drop does not work on macOS fullscreen windows.
  • Fixed crash on startup for some cases where TOPs required initialization.

Backwards Compatibility

  • BACKWARDS COMPABITIBILITY WARNING - The UDT protocol on network DATs and CHOPs has been deprecated and will be removed in future builds. The protocol has been abandoned by it's creators and seems to crash on Windows 10, as such we are removing support for it. Currently it will just create a warning when nodes use it.

Build 2018.21150 - Mar 21, 2018

New Features

  • Component Privacy - Support for CodeMeter dongles to add Privacy to components and license their use.
    • Developers can now create CodeMeter dongles that will license the component to run (cook). These dongles do not give access to the networks inside, they just allow them to run on any licensed TouchDesigner or TouchPlayer.
    • A 'Developer Dongle' is used to make a component private and continues to give developer access to the networks inside the component.
    • Managing privacy with a Developer Dongle can be accessed through python or the Privacy Dialog (right-click on component and select 'Privacy...').
    • Setting up Developer Dongles is a service provided by CodeMeter and handled between the Developer and CodeMeter.
    • A Developer Dongle requires a Pro license but no additional fees charged by Derivative.
    • Contact us for further details about Developer Dongles.
  • Environment Light COMP - New options to pre-filter environment maps.
    • Automatic - Works as it did before and the Environment Light COMP automatically pre-filters the environment map.
    • From Pre-filter TOP - Uses the outputs from the new PreFilter Map TOP in the parameters below. Both Pre-Filtered Diffuse Map and Pre-Filtered Specular Map calculated in the PreFilter Map TOP and specified here.
    • Maps created with the PreFilter Map TOP can not have further processing done to them before being used by the Light.
  • Movie File Out TOP - Added support for saving mipmap levels into .dds files.
  • Execute DAT - Added new callbacks onProjectPreSave and onProjectPostSave to help with prepping content before saving and taking action after saving.
  • Panel COMP - Re-positioning of edges and centers improved to work with Anchors by adjusting Anchors or Offsets.
  • Panel COMP - New 'Anchor Drag' parameter (on Panel parameter page) allows updating of Anchor or Offset parameters by dragging the panel and its edges when the panel has Horizontal Mode or Vertical Mode set to Anchors.

Bug Fixes and Improvements

  • Replicator COMP - Fixed overcooking on time dependent masters and fixed replicants that reload with external .tox files.
  • Transform TOP - If Extend is Zero, the background is now visible outside the bounds of the rectangle.
  • Filter CHOP - Added chanIndex (ie. me.chanIndex) so you can have a different filter width per-channel.
  • Updated probe.tox and fixes to multiMix.tox in the Palette.
  • Updated OP Snippets examples.

Build 2018.20700 - Mar 12, 2018

New Features

  • GLSL MAT - More build-in TD* functions are now available to the Geometry shader.
    • TDWorldToProj(vec3 p, int cameraIndex) to allow for projection transforms.
    • TDPerlinNoise() and TDSimplexNoise() functions as well.
  • GLSL MAT - 'Output Shader' feature can now optionally include a geometry shader to get started with.
  • GLSL MAT - Fish Eye and Dual Paraboloid rendering can now work with geometry shaders, if the geometry shader uses TDWorldToProj().

New Python

  • Project.isPrivate .isPrivateKey now updates expressions.

Bug Fixes and Improvements

  • Text TOP - Fixed some line formatting issues with unicode text on macOS.
  • Texture 3D TOP - If Pre-Fill is On, will pre-fill again when un-bypassed or cooking is turned back on for the node.
  • Select TOP - Fixed this TOP not working with 3D Textures.
  • RealSense TOP - On macOS disabled librealsense2 (D400 series cameras) because of crash bug in the library - waiting for library fix to reenable.
  • LTC CHOP improvements
    • Break 50Hz, 60Hz frame values into two fields and add new option to put field value into 'User Data 1' value.
    • User values now full 4-bit values instead of clamped 0..9
    • Improved min/max ranges for parameters.
  • Parameter COMP - Option to hide/show 'Input OP' list when looking at parameters for a multi-input OP.
  • Improvements to OP Snippets.
    • works better on macOS
    • new Rand button gives you a random snippet, for those who like to learn this way.
    • new Newest button gives you the recently-added or changed snippets.
    • some new snippets.
  • Improvements to component Privacy.
  • Improvements to panel calculations for .inside and .width/.height.
  • Possible fix for some system where Mouse In CHOP would not work.
  • Fixed intermittent flicker caused by random panel layering.
  • Fixed issue with Component Editor Dialog when editing multiple components.
  • Fixed a crash in Kantan Mapper when dragging shapes.
  • Fixed an issue with read-only parameters clearing their parameter mode settings.

Build 2018.20310 - Mar 02, 2018

New Features

  • RealSense TOP - Added support for Intel's new cross-platform librealsense API - This supports newer D400 series RealSense cameras on both Windows and macOS 10.13+
  • DMX In CHOP - Added 'Start Codes' parameter that will filter output based on the start codes of incoming sACN packets.

New Palette

  • Updated Tools > probe - Aside from now reporting GPU times, which provides great insight, there are more controls exposed on the probe component. You basically copy it from the palette, go into perform mode and press ctrl-p.
  • Updated Tools > moviePlayer - faster, more robust, minimal impact when switching movies. A pulse button will spit out movieEngine, a UI-less version that runs faster and can be embedded in other tools. External control has been revamped to allow a specific CHOP and channel to drive its timer, and allow for the channel to be expressed in seconds, frame or fraction.
  • Updated Tools > multiMix - Fixed bug with shader compilation on macOS.
  • Updated Tools > webBrowser - Fix to allow selecting, copying, and pasting text.

Bug Fixes and Improvements

  • DMX Out CHOP - Lots of improvements and bug fixes.
    • Fixed multicast broadcasting bug on macOS.
    • Fixed general issue with multicast for sACN.
    • Cleaned up labels and parameter names.
    • Fixed bug with sACN where channel numbers weren't updating properly.
  • Folder DAT - Added 'Project Extensions' parameter to monitor .toe files.
  • Audio Render CHOP - Added distance_attenuation channel to Info CHOP that points to an Audio Render CHOP.
  • Global OP Shortcut - Now should register even when cooking disabled. Also fixed update issue when parameters cached.
  • Fixed recursion hang in Select COMP.
  • Fixed crashes caused by per frame callbacks launching modal dialogs causing re-executing per frame callbacks.

Backwards Compatibility

  • BACKWARDS COMPABITIBILITY WARNING - Default for Python-type custom parameter is now None instead of empty string.

Build 2018.20100 - Feb 23, 2018

Note that the build numbers for this branch changed from 2017.30000 series to 2018.20000 series.

New Features

  • Hokuyo CHOP - New CHOP that supports serial Hokuyo devices/sensors.
  • GLSL TOP / GLSL MAT - Added support for #include statements on GPUs/Drivers whose GLSL compiler support it. Node paths can be used directly, including relative paths.
  • Palette:Probe now reports GPU time as well as CPU time.
  • Palette:MoviePlayer has been improved, including better external controls.

New Python

  • tdError and tdAttributeError exposed so they can be used in try/except clauses.
  • Added maxResults to COMP.findChildren() args.

Bug Fixes and Improvements

  • TCP/IP DAT added 'connections' to Info CHOP. In the case of clients the value is 1 when connected to a server. In the case of servers it reflects the total number of clients.
  • OP Find DAT - Added Include Component, Maximum Operators parameters.
  • Folder DAT - * Added 'Tox' extensions option.
  • Select TOP - Can now resize the texture it's selecting.
  • Threshold TOP - Removed lower limit on threshold value.
  • Trail SOP - Further crash fixes.
  • S Curve CHOP - Bias before Linearize.
  • CPlusPlus SOP / CPlusPlus TOP / CPlusPlus CHOP - Added embedded file support VFS.
  • Select COMP - Fixed reported .width .height when size matched to source.
  • Window COMP - Fixed crash due to monitor not found.
  • Window COMP - 'Update Settings from Window' un-doable.
  • List COMP - Fixed text spilling outside cells.
  • List COMP - Fixed cell border offset bug.
  • Reworked Global OP Shortcuts to avoid hangs, extra cooks and missing conflict warnings.
  • Fixed OP.childrenGPUCookTime not updating when called in Python.
  • Add Info DATs by default for GLSL OPs.
  • Some tweaks to the new scroll bars in Panel Components.
  • Fixed slowdown in macOS which sometimes occurred when a window was closed.
  • Fixed broken .menuNames, .menuLabels when items were dynamic or changing.
  • Fixed incorrect drag drop coordinates when dragging from a panel.
  • Fixed UI tracking of nodes when they are renamed (caused invisible CHOP viewers at times).

Backwards Compatibility

  • BACKWARDS COMPABITIBILITY WARNING - Now Python None object to string casts to empty string instead of 'None' within parameter evaluation for operator parameters only. Will work with list objects as well.
  • BACKWARDS COMPABITIBILITY WARNING - Fixed Text TOP and Text SOP evaluation to be consistent with other string parameters which convert lists objects to space separated text.

Build 2017.37900 - Jan 19, 2018

New Features

  • Panel Components - Any Panel COMP with 'Children' page of parameters now has options for scrollbars.
    • Separate options for horizontal and vertical scrollbars (Children page of parameters).
    • Scroll Overlay options (Panel page of parameters).
  • Movie File Out TOP - Added support for regular Hap and Hap Alpha encoding.
  • Window COMP - Improvements for working with multiple monitors and DPI scales.
    • Fixed 'Read Current Settings' not working well with multiple monitor configurations and DPI scaling.
    • Added ability to shift a window to whatever monitor the mouse is located on when it is opened.
  • Video Device In TOP - Added support for Ximea cameras.
  • Performance Monitor - Added option to log extension compilation time.

New Python

  • Window COMP - Improvements for working with multiple monitors and DPI scales.
    • Added .contentX .contentY .contentWidth and .contentHeight members to get information about the location of the window's contents on the monitor.
    • Added 'scalingMonitorIndex' python member.
  • Monitor Class - Added scaled* members for width/height and bounds.
  • UI Class.openCOMPEditor(path) - Opens the Component Editor for the specified operator. 'path' - Specifies the path to the operator. An OP can be passed in as well. ui.openCOMPEditor(n)
  • tdu.split() added

Return a list from a space separated string, allowing quote delimiters.

string: any Python object... will be evaluated as str(string), so parameters will work. eval: if True, convert any valid Python literal structures: strings, numbers, tuples, lists, dicts, booleans, and None.

Examples:

  split('1 2.3 None fred "one '2'" "[1,2]"')

yields ['1', '2.3', 'None', 'fred', "one '2'", '[1, 2]']

  split('1 2.3 None fred "one '2'" "[1,2]"', True)

yields [1, 2.3, None, 'fred', "one '2'", [1, 2]]

  • OP.OPType now returns the name of the operator type;
      • Example 'waveCHOP'.
    • This isn't necessarily the same as OP.type + OP.family;
      • Example 'audiodeviceinCHOP' vs 'audiodevin' + 'CHOP'.
    • COMP.create() now takes a string OPType as a parameter, OR an operator type;
      • Examples
      • op('/project1').create('waveCHOP') #string
      • op('/project1').create(waveCHOP) #type
      • op('/project1').create(type('wave1')) #type of existing operator

New Palette

Bug Fixes and Improvements

  • Escape key ends keyboard focus for Text DATs, consistent with Tables. (from Official Branch 2017.15980+)
  • File Import Dialog now creates operators set to Python language mode. (from Official Branch 2017.15980+)
  • Screen Grab TOP - Fixed crash and broken functionality that started to occur with Windows 10 Creators Update edition. (from Official Branch 2017.15980+)
  • Folder DAT - Fixed date columns not updated when first enabled. (from Official Branch 2017.15980+)
  • Trail SOP - Fixed crash when unbypassing. (from Official Branch 2017.15980+)
  • TouchPlayer - Fixed not loading preferences correctly.
  • Render Pick CHOP and Render Pick DAT - Now work correctly when doing fish-eye rendering.
  • Audio Render CHOP - Normalize listener up/ahead vectors to prevent large channel values in AmbiX format.
  • OSC In CHOP - Speed dramatically improved for large numbers of channels.
  • Keyboard In CHOP - Channel values should always start at 0 when a file loads, not the value they were saved at.
  • Trail SOP - Fixed crash when turning off bypass flag.
  • Folder DAT - Fixed issue updating on macOS.
  • List COMP - Fixed rollover panel values.
  • Fix for .inside panel member which was affecting rollover states.
  • Fixed a number of crashes (Replicator COMP, Drag Drop)
  • Fixed ui.viewFile() not opening in macOS.
  • Fixed some wiring issues with COMP inputs/outputs.
  • Removed MAT page from Preferences Dialog.
  • Movie File Out TOP - Fixed first frame missing in output movie/image sequence.
  • GLSL TOP and GLSL MAT - Added GLSL 4.60 support (Windows only).

Backwards Compatibility

  • BACKWARDS COMPABITIBILITY WARNING - The Window COMPs .width and .height members gave inconsistent results when borders were enabled but borders aren't included in the size. They now always give the size of the window, including borders.

Build 2017.35560- Dec 15, 2017

New Features

  • Great new UI feature: On the path bar at the top of any network, Right-click on any of the parts of the path (e.g. /project/geo1/something) and you get the component menu for that level where you can get View… Parameters… , without having to navigate up and back.(slight alignment issue)
  • Movie File Out TOP - Added functionality for outputting image sequences (can output file formats .tiff .jpeg .bmp .exr .png).
  • Analyze CHOP - Added Duplicates function. Counts how many times a value appears in a channel and the index of the sample with that value. Great for creating Histograms for example.
  • Audio Render CHOP - New audio CHOP that uses the Steam Audio API to spatialize audio.
  • Script SOP - Added Beziers - scriptSOP.appendBezier() .order .basis .segments .anchors .updateAnchor .appendAnchor deleteAnchor .tangents .updateTangent
  • Phong MAT - Environment Map parameter can now accept a Equirectangular texture.
  • TCP/IP DAT - Now supports multiple NICs (network adaptors, cards, etc.)
  • Parameters now have 'Read Only' option making them non-editable. Right-click on a parameter and select 'Enable Read Only' or 'Disable Read Only'.

New Python

New Palette

  • cornerPinSOP added to the Tools folder.
  • KantanMapper improvements - Bezier softedge, invert mask for freeform, shape ID is now written into UV map.
  • moviePlayer improved and some bugs fixed.

Bug Fixes and Improvements

  • FBX importing - Fixed import directory location for drag and drop of FBX files.
  • NDI operators - Added support for faster formats and YUV to RGB. Improved enumeration of streams in NDI In TOP.
  • S Curve CHOP - Added 'Index Range' parameter.
  • Speed CHOP - Added 'Reset on Start' option (default on) which resets the Speed CHOP output to zero on file startup to avoid possible accumulation precision errors.
  • TOP - Fixed recent crash that occured when using 'Save Image...' from the right click menu on TOPs.
  • GLSL TOP - Fixed some cases where the uTD*Info arrays had incorrect data.
  • Movie File In TOP - Fixed crash when reading 16-bit TIFF images.
  • OP Viewer COMP - Fixed display of geometry nodes having bad/missing depth artifacts.
  • Alembic SOP optimizations.
  • CPlusPlus SOP - Fixed load/unload crash.
  • Panel Components - 'Size From Window' is no longer upated when the panel is resized inside a network pane.
  • Select COMP - Fixed update issue when changing beteween Parameter COMPs in some cases.
  • List COMP - Fixed dragging off cells, off window, not using callbacks.
  • Replicator COMP - Replicator scripts now track replicants better when they self-replace (ie: external tox's).
  • Fixed several cases where mouse would go invisible and/or stay invisible incorrectly.
  • Fixed drag-n-dropping onto stretched panels ie. tiles, resized window, etc
  • Fixed 'Display Options' in 3D Object COMP's RMB menu incorrectly opening parameters.
  • Fixed a recent crash when initializing ASIO audio device when 'Specify' turned off.
  • Installer checks for additional required Windows updates before proceeding.
  • Adjustments and improvements to the Python parser, string caching, cooking issues, etc. which are part of the Experimental branch's optimization efforts.

Build 2017.31700- Oct 27, 2017

New Features

  • S Curve CHOP - A new CHOP that generates S curves.
  • Parameter COMP - Pages parameter now has a Scope menu for easier selection.
  • macOS 10.13 (High Sierra) can now span windows across multiple monitors, allowing Perform Mode and Window COMPs to be setup the same as on Windows OS configurations. To enable this in macOS, System Preferences > Mission Control > Displays have Separate Spaces must be turned Off.
  • Audio Device Out CHOP / Audio Device In CHOP / Audio Play CHOP - New options 'Specify Device' and 'Error if Missing' to avoid changing device parameters when moving your project between systems with different audio devices connected.
  • Now RMB-click on components in the address bar to open their context menu.

New Python

  • tdu.collapsePaths(path, asExpression=False) - Added asExpression flag to allow expressions involving app folders. Collapse order is now:
  1. project.paths
  2. project.folder
  3. app.binFolder
  4. app.configFolder
  5. app.installFolder
  6. app.samplesFolder
  7. app.preferenceFolder
  8. app.userPaletteFolder
  • tdu.clamp(inputVal, min, max) -> val - Returns the input value clamped between min and max values. Supports any types that can be compared (int, float, string, etc).
  • tdu.remap(inputVal, fromMin, fromMax, toMin, toMax) -> double - Returns the input value remapped from the first range (fromMin/Max) to the second range (toMin/Max).

New Palette

  • particlesGpu now has control over birth rate. This is Windows OS only as it requires glsl 4.2 and atomic counter support.

Bug Fixes and Improvements

  • Video Device In TOP - Fixed some issues with GPU Direct and YUV color space images.
  • Fixed TouchPlayer incorrectly launching in Designer mode.
  • Par Class .menuNames, .menuLabels now cached for faster expressions.
  • List COMP - Fixed prevRow, prevCol values for onHover, onDrop callbacks.
  • Alembic SOP - Fixed some issues with Transformion parameters.
  • DAT module summary included in extension pop-up info (MMB on operator).
  • Fixed issue where entering/exiting perform mode would sometimes display parts of the UI at the wrong size.
  • Fixed macOS Fill Location for All Monitors to go full screen no menu bars.
  • Fixed parameter not updating on storage change.
  • Fixed a number of parameter and expression cooking issues discovered.
  • Fixed some initialization and startup issues.
  • Fixed many parameter, expression, dependancy, and cooking issues introduced in this branch's optimization package.

Build 2017.30400 - Sept 27, 2017

This version has substantial optimizations to general TouchDesigner speed, plus further speed-up on startup, and yet further speedup where you use many python expressions in parameters.

  • Python expression parser to speed up commonly used python expressions.
  • Caching expression results so they don’t need to recalculate. If a node needs to cook, only the parameters that *may* have changed will be re-evaluated.
  • Optimized startup and launch process.

New Features

  • GPU performance monitoring
    • The amount of time an OP spends getting executed on the GPU can now be seen in the info popup (MMB on the node or info icon in parameter dialog).
    • Python members for GPU timing.
  • TDAbleton - The new Ableton Live - TouchDesigner environment is now included in the Palette. Using Ableton Link to sync the applications, TDAbleton exposes all the parts of your Ableton Live session in TouchDesigner and lets you control them bidirectionally.
  • Layout TOP - New TOP that allows quick layout of input TOPs in row, column, or grid format.
  • PBR MAT - Can now send specular/metallic/roughness/.. maps to any of the color buffers, on the Advanced parameter page.
  • GLSL MAT - Added TDCreateTBNMatrix() function.
  • Substance TOP - Added support for input images which allow swapping the material's Input Image if the Substance material author used them in Substance Designer.
  • GLSL TOP / GLSL Multi TOP - Added support for atomic counters.
  • Alembic SOP - loads Alembic geometry.
  • CPlusPlus SOP - Can load a mesh with normal and color (currently for Point Attribute) and get input parameters from TOP, DAT, and CHOP. Can output to SOP to CHOP and SOP to DAT.
    • includes a SimpleShapes example C++ SOP project which can draw a triangle or a cube and resize the cube with CHOP input values.
  • Geometry COMP - Added option for SOPs to be used as the points input for instancing.
  • Geometry COMP - Added the ability to change the order of Rotate To Vector to be Post and Pre Rotation.
  • Light COMP - Added more texture controls for Projector Map, available in the ">>" menu options to the right of the parameter.
  • Render Pick CHOP / Render Pick DAT - Added priority check to pick.
  • OpenVR CHOP - Added battery_level channel for devices.
  • Event CHOP - A Callback DAT has been added for onCreate() and onDestroy() callbacks.
  • Timer CHOP
    • Added the Active parameter to allow you to shut down cooking while the timer is not being used: When Active is off, the CHOP stops cooking and it holds the output channels at a constant value at frame 1 (i.e. it turns off Time Slicing).
    • Added max and countdown columns for each timer* and running row values for both serial and parallel timers.
  • Info CHOP - Now includes warnings and errors channels.
  • List COMP - Added rowIndent attribute which shifts an entire row of specified pixels. Can be used to more easily create hierarchical tree browsers.
  • Select COMP - Numerous improvements
    • New 'Match Size' parameter which when enabled uses the source's final layout size as its own size.
    • New 'Follow Selections' recursively evaluates select source (previous behavior).
  • Ray SOP - New additions
  • Video Device In TOP, Video Device Out TOP - Add support for GPU Direct for Video for AJA devices. This greatly reduces latency, resulting a 1-2 frame latency on input and 1-2 frame latency on output.
    • Added bouncing feature for reflection.
    • Added a menu to allow point intersections to be reflected.

New Python

  • OP Class.curPar returns the parameter currently being evaluated. Can be used in a parameter expression to reference itself.
  • TOP Class.curPass returns the current cooking pass iteration, beginning at 0. The total can be set with the 'Passes' parameter on the operator's common page.
  • windowCOMP Class - setForegound() activates the window and sets it to the foreground, sets focus and increases process priority. Can only be called by a foreground process or a child of a foreground process. Returns True if successful.
  • App Class - app.launchTime is the total time required to launch and begin playing the toe file, measured in seconds.
  • There are two new types of custom parameters:
    • Page Class - appendPython() for Python-type parameters which are expression mode only. This can be used to more efficiently hold lists or dictionaries containing constant values.
    • Page Class - appendMomentary() method now produces a button parameter that is value 1 while selected and 0 when released. Par Class.style returns 'Momentary'.
  • Matrix Class
    • You can assign a list of 9 or 16 floats to the .vals member of the matrix to set its entries.
    • Matrix rows and columns can now accessed using rows and cols methods. They will be displayed as a list of lists.
    • The other way of accessing a column or a row is to use this format: a[:,1] for the second column and a[1,:] for the second row.
    • Matrices can now use the operator @ to do matrix multiplication specifically.
    • 3x3 matrices can now be constructed from passing in either 9 arguments, a list of 9 values, or 3 3-tuples.
    • A matrix can also be constructed from 4 lists of 4 numbers. This also works for both Vector and Position arguments.
    • Matrices can now be constructed from a 4x4 or 3x3 Table DAT of numbers, 9 channel or 16 channel CHOPs. For CHOPs the first value of each channel is taken.
    • Matrix data can be pushed to Table DATs using filltable method on a matrix object. The output will be of size 4x4.
  • Added Quaternion Class and new methods for vector and matrix classes
    • Quaternion Class - New class to manipulate rotations using quaternions.
    • Matrix Class - Can now be constructed and rotated using quaternions.
    • Vector Class - Added new utility functions.
  • Par Class.displayOnly member
  • DAT Class new members: .isText and .isTable to determine format
  • Project Class .stack() Formatted contents of current cook and parameter evaluation stack. (Formerly called project.evalStackInfo())
  • tdu.printErrors() has been removed, and replaced with op.errors(recurse=True)
  • tdu.printStack() is replaced with new print(project.pythonStack())
  • ext.parentshortcut is deprecated: Do not use this form any more. Use parent.parentshortcut.

Bug Fixes and Improvements

  • Private Components can now save any children, without protection, since they are visible to the private components and their scripts.
  • OP shortcuts are now always globally visible even if the component itself has cooking flag disabled.
  • Movie File In TOP - Will now try to re-use memory automatically when the movie is changed (using preload() or not). This avoids the need to call unload(cacheMemory=True) on a Movie File In TOP before changing its target to avoid re-allocating new texture memory for the new movie file.
  • Composite TOP - Fixed a bug where the same node being connected twice the Composite TOP can result in incorrect extend conditions.
  • NDI In TOP - Added num_source to Info CHOP, reports number of NDI sources found on the network.
  • Panel Components now display by drawing a scaled texture instead of always rendering at native resolution. This improves behavior for scaling panels to different sizes. NON-BACKWARD COMPATIBLE
  • TOP to CHOP - Improved performance by only downloading the required section of the image instead of the whole image.
  • OP Execute DAT - Fixed crash on extension change, when node goes missing.
  • Constant MAT - Fixed wireframe not working.
  • GLSL MAT - Added default pixel/vertex shaders.
  • Sort SOP - Fixed the behavior of Sort by Neighbour, where it was causing crashes and removing points.
  • DMX Out CHOP sACN, Art-Net. Removed restriction that net, subnet, universe must be unique since different IPs can be used.
  • OSC In CHOP - 'Queued' parameter to turn off queuing and just take most-recent values.
  • DATs info popup (middle-mouse button on the node) now displays first few classes/methods (if they exist) under section called 'Classes:' otherwise displays first few lines under 'Content:' as before.
  • Support system wide DPI awareness on windows 7 and fixed calculation of DPU / UI layout on Windows 7.
  • Fixed Perform Mode starting up or switching to 'Automatic from COMP/TOP' setting even when set to use 'Custom Size' or 'Fill'.
  • Window COMP - Reorganized and cleaned up parameters.
    • Removed unused Ignore Task Bar.
    • Removed Keep Window Aspect as it can be grabbed from the operator size.
    • Renamed Read Current Settings and fixed to work with native, dpi and also offsets.
    • Added warning for vsync on macOS.
  • Panel Components now include x, y, w, h info in popup help.
  • Fixed panel sides not showing background color when background TOPs not set to stretch.
  • Cloning Improvements
    • Object.clones now includes clones that are currently disabled.
    • Fixed issue where pulsing disabled master clone the first time didn't update children.
    • Fixed crash when re-cloning the current node with custom parameters.
  • Replicator COMP - Replicants are now laid out in the network in template table order, *not* alphabetically as previously.
  • Video Device In TOP - Updated Point Grey Spinnaker version to 1.3.0.21
  • Updated Oculus SDK to 1.16.0

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY WARNING - Parent Shortcuts - ext.parentshortcut is deprecated: Do not use this form. Instead use parent.parentshortcut. A warning is issued now.
  • BACKWARDS COMPATIBILITY WARNING - The seed for the Sort DAT is now floating point vs integers. You can use integers but the random ordering for 2. is different now vs 2 before, for example.

The Graphics Processing Unit. This is the high-speed, many-core processor of the graphics card/chip that takes geometry, images and data from the CPU and creates images and processed data.

The term "Frame" is used (1) in the Timeline, (2) as a time-unit in CHOPs, (3) as a time-unit in TOPs, and (4) with movies images which are read and created with TOPs.

Mode where the network editing window is not open, your performance interface window(s) is open and you are running your application as fast as possible. See Designer Mode.

OP Snippets is a set of numerous examples of TouchDesigner operators, which you access via the Help menu. These can be copied/pasted into your projects.

An Operator Family which operate on Channels (a series of numbers) which are used for animation, audio, mathematics, simulation, logic, UI construction, and many other applications.

Any floating window that is not a Pane or Viewer.

An Operator Family that contains its own Network inside. There are twelve 3D Object Component and eight 2D Panel Component types. See also Path.

An Operator Family that creates, composites and modifies images, and reads/writes images and movies to/from files and the network. TOPs run on the graphics card's GPU.

TouchDesigner Component file, the file type used to save a Component from TouchDesigner.

A built-in panel in TouchDesigner that contains a library of components and media that can be dragged-dropped into a TouchDesigner network.

The OpenGL code that creates a rendered image from polygons and textures. Shaders can be made of up to three parts: Vertex Shader, Geometry Shader and/or Pixel Shader, which are either embedded inside Materials, or placed in Text DATs and referenced to a GLSL Material.

Any of the procedural data operators. OPs do all the work in TouchDesigner. They "cook" and output data to other OPs, which ultimately result in new images, data and audio being generated. See Node.

An Operator Family that contains its own Network inside. There are twelve 3D Object Component and eight 2D Panel Component types. See also Path.

Any component can be extended with its own Python classes which contain python functions and data.

TOuch Environment file, the file type used by TouchDesigner to save your project.

Strictly refers to a window in Microsoft Windows. User-created windows are made with Panels inside Window Components, aside from the TouchDesigner editor window and its dialogs.

Creates a new component for every line in a table. Unlike Clone, it automatically creates copies of a master component.

An Operator Family that associates a shader with a SOP or Geometry Object for rendering textured and lit objects.

The component types that are used to render 3D scenes: Geometry Component contain the 3D shapes to render, plus Camera, Light, Ambient Light, Null, Bone, Handle and other component types.

A parameter in most CHOPs that restricts which channels of that CHOP will be affected. Normally all channels of a CHOP are affected by the operator.

An Operator Family that manipulates text strings: multi-line text or tables. Multi-line text is often a command Script, but can be any multi-line text. Tables are rows and columns of cells, each containing a text string.

Unlike a Wire that connects nodes in the same Operator Family, a Link is the dashed lines between nodes that represent other data flowing between nodes, like CHOP Exports, node paths in parameters, and expressions in parameters referencing CHOP channels, DAT tables and other nodes.

Each SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.

An Operator Family that reads, creates and modifies 3D polygons, curves, NURBS surfaces, spheres, meatballs and other 3D surface data.

Some operators have a DAT docked to them that contains some python functions. These functions, called "callbacks", get called when something in the operator changes.

A form of DATs (Data Operators) that is structured as rows and columns of text strings.