Difference between revisions of "Release Notes/099/2018.20000"

From Derivative
Jump to: navigation, search
m
m
Line 473: Line 473:
 
* '''BACKWARDS COMPATIBILITY WARNING''' - [[Parent Shortcut]]s - <code>ext.''parentshortcut''</code> is deprecated: Do not use this form. Instead use <code>parent.''parentshortcut''</code>.  A warning is issued now.
 
* '''BACKWARDS COMPATIBILITY WARNING''' - [[Parent Shortcut]]s - <code>ext.''parentshortcut''</code> is deprecated: Do not use this form. Instead use <code>parent.''parentshortcut''</code>.  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.
 
* '''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.
 +
 +
== Official Build 2018.23120 - May 23, 2018==
 +
 +
=== New Features ===
 +
* [[CPlusPlus TOP]] - Add getDC() method to TOP_Context class to get the 'device context' used to create rendering contexts in this instance of TouchDesigner.
 +
 +
=== Bug Fixes and Improvements ===
 +
* [[Cross TOP]] - Fixed a recently introduced crash that can occur when using this TOP.
  
 
== Official Build 2018.23080 - May 19, 2018==
 
== Official Build 2018.23080 - May 19, 2018==

Revision as of 09:14, 23 May 2018

See our Spring 2018 Official Announcement for an overview of new features.

For the latest Official build, jump to Build 2018.23080

For earlier release notes refer to Official 2017.10000 Release Notes

Official Build 2018.22800 - May 11, 2018

New Features

Major New Additions

  • This version has substantial speed optimizations. Many of the speedups focus on using python expressions in parameters, and significant improvements to startup and project launch time have been made.
    • Optimized Python Expressions 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.
    • Perform CHOP has new parameters to monitor how many expressions are optimizes and cached.
  • Dongle-based 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 TouchDesigner Pro license but no additional fees charged by Derivative.
    • Contact us for further details about Developer Dongles.
  • Dongle Floating Licenses - Multiple licenses can be loaded onto a dongle and then distributed to other computers on the network when TouchDesigner is launched.

COMPs - Components

3D Objects
  • Geometry COMP - Additions to GPU instancing.
    • Added option for SOPs to be used as the points input for instancing.
    • 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.
  • Environment Light COMP - New options to use 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 Pre-Filtered Diffuse Map and Pre-Filtered Specular Map parameters below. Both map types are calculated by the PreFilter Map TOP and specified here.
    • NOTE: Maps created with the PreFilter Map TOP can not be further processed before being used by the Light.
Panels
  • 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).
  • 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.
  • 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).
  • Parameter COMP - Pages parameter now has a Scope menu for easier selection.
  • List COMP - Added rowIndent attribute which shifts an entire row of specified pixels. Can be used to more easily create hierarchical tree browsers.
General
  • 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.
  • 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.


TOPs - Image & Video

  • 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.
    • Added support for saving mipmap levels into .dds files.
    • Added support for regular HAP and HAP Alpha encoding.
    • Added functionality for outputting image sequences (can output file formats .tiff .jpeg .bmp .exr .png .dds).
  • 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.
    • Upgraded to latest AJA SDK version, which should add support for newer devices such as the AJA Io 4k Plus.
  • Video Device In TOP - Added support for Ximea cameras.
  • 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+
  • Layout TOP - New TOP that allows quick layout of input TOPs in row, column, or grid format.
  • 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.
  • Web Render TOP - Added option 'Use DAT' for specifying a DAT with text/html data scheme, enabling you to assemble HTML, SVG or other formats in a DAT and render them all within TouchDesigner.


GLSL TOPs
  • 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.
  • GLSL TOP / GLSL Multi TOP - Added support for atomic counters.


CHOPs - Channels

  • S Curve CHOP - A new CHOP that generates S curves.
  • Hokuyo CHOP - New CHOP that supports serial Hokuyo devices/sensors.
  • PosiStageNet CHOP - New CHOP that supports decoding of the PosiStageNet protocol.
  • DMX In CHOP - Added 'Start Codes' parameter that will filter output based on the start codes of incoming sACN packets.
  • 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.
  • 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.
  • Render Pick CHOP - Added priority check to pick.
Audio


SOPs - 3D Surfaces

  • 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.
  • Script SOP - Added Beziers - scriptSOP.appendBezier() .order .basis .segments .anchors .updateAnchor .appendAnchor deleteAnchor .tangents .updateTangent
  • modelSOP Class now has access to same geometry building methods as the scriptSOP Class.
  • Ray SOP - New additions


MATs - Materials

  • PBR MAT - Can now send specular/metallic/roughness/.. maps to any of the color buffers, on the Advanced parameter page.
  • PBR MAT - Added 'Final Specular Color' and 'Final Diffuse Color' as options for outputting to color buffers.
  • Phong MAT - Environment Map parameter can now accept a Equirectangular texture.
GLSL MATs
  • 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().
  • GLSL MAT - Added TDCreateTBNMatrix() function.
  • 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.


DATs - Data

  • Execute DAT - Added new callbacks onProjectPreSave and onProjectPostSave to help with prepping content before saving and taking action after saving.
  • Render Pick DAT - Added priority check to pick.
  • TCP/IP DAT - Now supports multiple NICs (network adaptors, cards, etc.)


Interface - UI

  • 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)
  • Now RMB-click on components in the address bar to open their context menu.
  • Parameters now have 'Read Only' option making them non-editable. Right-click on a parameter and select 'Enable Read Only' or 'Disable Read Only'.
  • Performance Monitor - Added option to log extension compilation time.
  • 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.
  • The gal gadget library in Palette/UI has a few improvements (see its release notes inside)
    • Lightweight versions of sliders and buttons.
    • Adapts to anchors and auto-sizing by using gadgetop.width, .height
    • MIDI mapping fixed.
    • Radios and menus, when specified by table, pass through to the output all columns for the selected element.
    • Optimized radios.

New Python

  • Project.isPrivate .isPrivateKey now updates expressions.
  • Added maxResults to COMP.findChildren() args.
  • OP Class - Added relativePath() method.
  • OP Class.curPar returns the parameter currently being evaluated. Can be used in a parameter expression to reference itself.
  • 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
  • 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.
  • DAT Class new members: .isText and .isTable to determine format
  • 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.
  • windowCOMP Class - 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.
    • 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.
  • 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)
  • App Class - app.launchTime is the total time required to launch and begin playing the toe file, measured in seconds.
  • App.desktopFolder points to current user desktop folder.
  • Project Class .stack() Formatted contents of current cook and parameter evaluation stack. (Formerly called project.evalStackInfo())
  • Par Class.readOnly member
  • 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.
  • Quaternion Class adds 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.
  • 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.samplesFolder
  6. app.preferenceFolder
  7. app.userPaletteFolder
  8. app.installFolder
  • 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).
  • 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.
  • tdu.split() added - Returns 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]]


New Palette

  • TDAbleton 1.9 - The latest version of the 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.
    • Added Audio Level data transmitter from Ableton to TouchDesigner, including spectrum analysis rack. Also includes related TD Component for receiving this data.
    • Rack devices and related TD Component for easy control of TouchDesigner from Ableton.
    • Cleanup and modularization of M4L devices.
  • 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.
  • cornerPinSOP added to the Tools folder.
  • KantanMapper improvements - Bezier softedge, invert mask for freeform, shape ID is now written into UV map.
  • 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

COMPs - Components

3D Objects
  • Light COMP - Fixed an issue where projection maps would also be projected out behind the light.
  • Environment Light COMP - Fixed cases of over calculating when cooking. New bug that was introduced in the previous build.
  • Fixed 'Display Options' in 3D Object COMP's RMB menu incorrectly opening parameters.
Panels
  • 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
    • Now handle differently sized/stretched children when laying out left/right or top/bottom.
    • 'Size From Window' is no longer upated when the panel is resized inside a network pane.
    • Now include x, y, w, h info in popup help.
    • Fixed sides not showing background color when background TOPs not set to stretch.
  • Select COMP
    • Fixed recursion hang.
    • Fixed reported .width .height when size matched to source.
    • Fixed update issue when changing between Parameter COMPs in some cases.
  • List COMP
    • Fixed text spilling outside cells.
    • Fixed cell border offset bug.
    • Fixed rollover panel values.
    • Fixed prevRow, prevCol values for onHover, onDrop callbacks.
    • Fixed dragging off cells, off window, not using callbacks.
  • Parameter COMP
    • The minimum width the parameter can be drawn at before scaling can now be read using .minWidth
    • Option to hide/show 'Input OP' list when looking at parameters for a multi-input OP.
  • OP Viewer COMP - Fixed display of geometry nodes having bad/missing depth artifacts.
General
  • 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.
  • Window COMP - Bug fixes.
    • Fixed crash due to monitor not found.
    • 'Update Settings from Window' un-doable.
    • Fixed Perform Mode starting up or switching to 'Automatic from COMP/TOP' setting even when set to use 'Custom Size' or 'Fill'.
    • 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.
  • Replicator COMP
    • Fixed overcooking on time dependent masters and fixed replicants that reload with external .tox files.
    • Replicator scripts now track replicants better when they self-replace (ie: external tox's).
    • Replicants are now laid out in the network in template table order, *not* alphabetically as previously.
  • 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.


TOPs - Image & Video

  • Movie File In TOP
    • Fixed a crash that can occur when changing the 'Max Decode CPUs' parameter.
    • Fixed crash when reading 16-bit TIFF images.
    • 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.
    • Fixed issues with playing back audio that has more than 8 channels.
  • Movie File Out TOP
    • Fixed a crash that can occur if the number of audio channels is reduced during a recording.
    • Fixed first frame missing in output movie/image sequence.
  • Video Device In TOP
    • Fixed some issues with GPU Direct and YUV color space images.
    • Updated Point Grey Spinnaker version to 1.3.0.21
  • NDI TOPs
    • Added support for faster formats and YUV to RGB. Improved enumeration of streams in NDI In TOP.
    • NDI In TOP - Added num_source to Info CHOP, reports number of NDI sources found on the network.
    • Upgrade SDK to 3.0.0.12 (previously3.0.0.11).
  • Composite TOP
    • Fixed 'Preview Grid' mode not working correctly on some GPUs.
    • Fixed a bug where the same node being connected twice the Composite TOP can result in incorrect extend conditions.
  • Texture 3D TOP
    • Allow 'Replace Single' to work when 'Pre Fill' has also been used.
    • 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.
    • Can now resize the texture it's selecting.
  • GLSL TOP
    • Fixed some cases where the uTD*Info arrays had incorrect data.
    • Added GLSL 4.60 support (Windows only).
  • Tile TOP - Fixed a crash that can occur in some cases.
  • Transform TOP - If Extend is Zero, the background is now visible outside the bounds of the rectangle.
  • Text TOP - Fixed some line formatting issues with unicode text on macOS.
  • RealSense TOP - On macOS disabled librealsense2 (D400 series cameras) because of crash bug in the library - waiting for library fix to reenable.
  • Threshold TOP - Removed lower limit on threshold value.
  • Screen Grab TOP - Fixed crash and broken functionality that started to occur with Windows 10 Creators Update edition. (from Official Branch 2017.15980+)
  • CPlusPlus TOP / CPlusPlus CHOP / CPlusPlus SOP - Added embedded file support VFS.
  • TOP - Fixed crash that occured when using 'Save Image...' from the right click menu on TOPs.
  • Fixed crash on startup for some cases where TOPs required initialization.


CHOPs - Channels

  • DMX Out CHOP - Lots of improvements and bug fixes.
    • sACN, Art-Net. Removed restriction that net, subnet, universe must be unique since different IPs can be used.
    • 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.
  • TOP to CHOP
    • Even when Download type set to 'Next Frame', load immediately on startup to avoid initialization errors dependent on the output.
    • Improved performance by only downloading the required section of the image instead of the whole image.
  • LTC In 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.
  • Render Pick CHOP
    • Now works correctly when doing fish-eye rendering.
    • Fixed incorrect picking/triggering channel values when 'Search Size' > 1.
  • OSC In CHOP
    • 'Queued' parameter to turn off queuing and just take most-recent values.
    • Fixed a crash when bypass/unbypass state changed.
    • Speed dramatically improved for large numbers of channels.
  • File In CHOP - Fixed a crash if a movie file with no audio is opened with this CHOP.
  • Filter CHOP - Added chanIndex (ie. me.chanIndex) so you can have a different filter width per-channel.
  • Trigger CHOP - Don't trigger when adding channels, only on proper value changes.
  • Logic CHOP - Fixed a memory leak when scoping channels.
  • Keyboard In CHOP - Channel values should always start at 0 when a file loads, not the value they were saved at.
  • 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.
  • Mouse In CHOP - Possible fix for some systems where it would not work.
Audio
  • Audio Device In CHOP
    • Fixed crash that can occur if DataPath driver is selected, but no DataPath driver is installed.
    • ASIO Input reworked to avoid hangs and sluggish responses when selecting drivers or changing channel input scopes.
  • 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.
  • Audio File In CHOP - Fixed issues with playing back audio that has more than 8 channels.
  • Audio Render CHOP
    • Added distance_attenuation channel to Info CHOP that points to an Audio Render CHOP.
    • Normalize listener up/ahead vectors to prevent large channel values in AmbiX format.


SOPs - 3D Surfaces

  • CPlusPlus SOP - Fixed load/unload crash.
  • Alembic SOP - Fixed issues with Transformion parameters and completed some performance optimizations.
  • Trail SOP - Fixed crash when turning off bypass flag and other crashes.
  • Sort SOP - Fixed the behavior of 'Sort by Neighbor' where it was causing crashes and removing points.


MATs - Materials

  • Constant MAT - Fixed wireframe not working.
  • GLSL MAT
    • Added default pixel/vertex shaders.
    • GLSL MAT - Added GLSL 4.60 support (Windows only).


DATs - Data

  • Folder DAT
    • Added 'Project Extensions' parameter to monitor .toe files.
    • Added 'Tox' extensions option.
    • Fixed date columns not updated when first enabled. (from Official Branch 2017.15980+)
    • Fixed issue updating on macOS.
  • OSC In CHOP / OSC In DAT - Fixed a bug where re-activation would sometimes cause previous events to be reprocessed.
  • 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.
  • OP Execute DAT - Fixed crash on extension change, when node goes missing.
  • Render Pick DAT - Now works correctly when doing fish-eye rendering.
  • 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.
    • Module summary included in extension pop-up info,
  • Add Info DATs by default for GLSL OPs.
  • Escape key ends keyboard focus for Text DATs, consistent with Tables. (from Official Branch 2017.15980+)


Miscellaneous

  • Fixed bug where re-initing cloned network dropped connected comp outputs to multi-input OPs.
  • 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.
  • Helios DAC CHOP - Fixed crash.
  • 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.
  • 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.
  • 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)
  • Panel Viewers and Perform Mode .width .height are now affected by parent post-scaling options (children scale, align grid, fit, etc).
  • 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.
  • Updated probe.tox and fixes to multiMix.tox in the Palette.
  • Updated OP Snippets examples.
  • Improvements to component Privacy.
  • Improvements to panel calculations for .inside and .width/.height.
  • 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.
  • Global OP Shortcut - Now should register even when cooking disabled. Also fixed update issue when parameters cached.
  • Fixed crashes caused by per frame callbacks launching modal dialogs causing re-executing per frame callbacks.
  • Reworked Global OP Shortcuts to avoid hangs, extra cooks and missing conflict warnings.
  • Fixed OP.childrenGPUCookTime not updating when called in Python.
  • 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).
  • File Import Dialog now creates operators set to Python language mode. (from Official Branch 2017.15980+)
  • TouchPlayer - Fixed not loading preferences correctly.
  • 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.
  • FBX importing - Fixed import directory location for drag and drop of FBX files.
  • 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
  • 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.
  • Fixed TouchPlayer incorrectly launching in Designer mode.
  • Par Class .menuNames, .menuLabels now cached for faster expressions.
  • 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.
  • 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.
  • Support system wide DPI awareness on windows 7 and fixed calculation of DPU / UI layout on Windows 7.
  • Updated FBX SDK to 2017.1
  • Updated Oculus SDK to 1.16.0
  • OpenVR - Upgraded to SDK version 1.0.14.
  • RealSense TOP - Upgrade to libRealSense SDK 2.11.0.


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.
  • BACKWARDS COMPABITIBILITY WARNING - Default for Python-type custom parameter is now None instead of empty string.
  • 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.
  • 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.
  • 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.

Official Build 2018.23120 - May 23, 2018

New Features

  • CPlusPlus TOP - Add getDC() method to TOP_Context class to get the 'device context' used to create rendering contexts in this instance of TouchDesigner.

Bug Fixes and Improvements

  • Cross TOP - Fixed a recently introduced crash that can occur when using this TOP.

Official Build 2018.23080 - May 19, 2018

Bug Fixes and Improvements

  • Substance TOP / CPlusPlus SOP / Alembic SOP - Fixed crash when laying down operator, and potentially other operators that modify their own custom parameters during a cook.
  • Video Device In TOP - Fixed cases with BlackMagic cards where very high latency was occuring with some signal formats.
  • Cross TOP - Fixed transform parameters not being used when Cross is 1.0.
  • RealSense TOP - Fixed D-series cameras not being found in 'Sensor' menu.
  • Wireframe MAT - Fixed Topology wireframe mode not working correctly.
  • Multi Touch In DAT - Fixed offset that occured when Windows Display Scaling was not 100%.
  • Alembic SOP - Added multiple object selection.
  • Alembic SOP - Fixed crash that occured when correcting parameter syntax errors.
  • OpenVR CHOP - Increase Max allowed controllers/trackers to 64.
  • Fixed parameter update problem that make it seem CHOP exports needed to be done twice to be set properly.
  • Fixed large serial messages getting truncated on macOS, possibly other hardware.
  • Fixed corruption in CHOP export mapping tables in some drag drop operations; For example, particlesGPU from Palette not working.
  • Parameter Help can now also be found inthe parameter's right-click menu.

Official Build 2017.17040 and earlier - May 11, 2018

For earlier release notes refer to Official 2017.10000 Release Notes

Any floating window that is not a Pane or Viewer.

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.

An Operator Family that contains its own Network inside. There are twelve 3D Object Component and eight 2D Panel Component types. See also Network 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.

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.

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.

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.

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.

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.

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.

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.

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.

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

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 Network Path.

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

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.

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.

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

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

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.

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.

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 that associates a shader with a SOP or Geometry Object for rendering textured and lit objects.