What's New in 099
Spring 2018 Official Update - Branch 2018.20000
See also our Spring 2018 Official Announcement.
Python expressions and references are used often in TouchDesigner projects. In the past, these python expressions had a non-trivial overhead that could reduce overall performance and frame rate. Substantial optimizations have been to these expressions which can result in massive speed gains and enable new possibilities of working with expressions.
Optimized Python Expressions have reduced the calculation time of much of the most commonly used python in TouchDesigner. In addition, a new system of Caching Expression Results will cache expressions to keep them from re-calculating every frame. The Perform CHOP has also been given new parameters to monitor the number of optimized expressions and number using cache.
To get you working faster, we improved the time is takes TouchDesigner to startup and launch your projects. You can inspect this by clicking the filename on the splash screen during loading to reveal load time and other diagnostics about your project.
TouchDesigner can already work with hundreds of devices and software packages, enabling it to fit into any imaginable pipeline.
The RealSense TOP now supports Intel’s new Librealsense API bringing RealSense D-series camera support to Windows and older camera support to macOS for the first time. We will continue to add features and support for RealSense as this new API matures and improves.
AJA Video Devices get a speedy upgrade with support for GPUDirect mode, reducing latency to the minimum amount possible with the hardware.
The Video Device In TOP also gets added support for state-of-the-art Ximea cameras.
A new Audio Render CHOP uses the Steam Audio SDK to bring spatial audio to TouchDesigner. This is easy to setup by simply positioning a 3D object ‘listener’ and a 3D object ‘audio source’ in your 3D scene.
Dante Audio is fully supported now that TouchDesigner’s ASIO data is processed in 32 bits, providing maximum fidelity to and from Audio CHOPs. Major improvements have also been made to handling of ASIO devices and channels that make the interface more robust and quicker to configure.
The Web Render TOP that renders web pages with the Chromium engine now accepts input from a DAT, enabling you to assemble HTML, SVG or other formats in a DAT and render them all within TouchDesigner.
A second all-new operator, the Hokuyo CHOP, reads in data from Hokuyo laser scanners. These scanners detect their surrounding environment on a 2D plane and are great for triggering events based on the movement and position of real world objects.
If you are using sACN for DMX fixtures, LED control, or lighting console communication, sACN start codes are now handled nicely by the DMX In CHOP. The DMX Out CHOP also received many optimizations and bug fixes, especially for those using macOS.
3D Geometry, Lighting, Materials & Rendering
Rejoice! Alembic file geometry sequences can now be used in TouchDesigner. The Alembic SOP can playback polymesh, curve, and point geometry sequences with full support for multiple geometry hierarchies embedded in the file. Furthermore, GPUDirect mode offers high performance geometry playback on the GPU.
For those C++ programmers out there, a new C++ SOP will give you the ability to build your own SOPs to create geometry, load new file types, receive geometry from other software or whatever you can come up with. Like the Alembic SOP, it also has a GPUDirect mode for high performance.
The Script SOP (a python-script based SOP) has new members and methods for creating Bezier tools.
There are some new additions to improve the PBR (physically based rendering) pipeline. First, the PBR MAT can send maps to any of the color buffers on the Advanced parameter page. This is similar to the Phong MAT functionality which lets various material data be sent through additional color buffers to better utilize your GPU’s capacity.
For environment lighting, a new PreFilter Map TOP and parameter in the Environment Light COMP enable pre-filtering environment light maps using spherical harmonics. If you don’t know what that means, that’s okay. Just know that you now have better real-time control over the pre-filtering of your environment light maps, including separate options for diffuse and specular pre-filtering.
The Substance TOP can now swap Input Images if the material author exposes that feature in their Substance material. A small detail but very helpful.
Video & Image Handling
The new Layout TOP positions multiple input TOPs into rows, columns, or grids. It has options to fit all inputs into a specific resolution by scaling them, or it can scale its own resolution to create an output containing all the inputs at their native resolution.
NDI is a powerful new feature in 099 and we’ve improved it by supporting faster internal formats and improved the handling of multiple streams by the NDI In TOP. You can also use the Info CHOP to query how many NDI devices are found on the network now.
The Movie File Out TOP has a mode for Image Sequence rendering making it easy to output image sequences in any image saving format TouchDesigner supports.
Speaking of saving formats, .dds file format was added to save out mipmap levels as images.
To add to the many video encoding formats the Movie File Out TOP already supports, we’ve added H.265 HEVC and HAP/HAP Alpha encoding for more flexibility.
Fresh improvements were made to Geometry Shaders in the GLSL MAT. More built-in functions are now available to geometry shaders, and now the ‘Output Shader’ button on Phong and PBR materials can include GLSL code for geometry shaders. Additionally, they can now be rendered using Fish-Eye or Dual Paraboloid modes in the Render TOP.
The GLSL MAT also has a new built-in function TDCreateTBNMatrix() to make it easy to calculate tangents, bi-tangents, and normals in your vertex shaders.
All GLSL operators now support #include statements which should make managing code in different DATs much easier.
The GLSL TOP now supports atomic counters which are a GLSL variable type useful for specific operations. You can read about them here: Atomic Counters
S-curves can be used for lookups, ease-in and ease-outs, softening transitions and so much more in signal processing that we created a new S Curve CHOP to help you create beautiful, smooth curves with easy to use controls.
Fans of the Event CHOP will be happy to hear it now has onCreate() and onDestroy() methods in its own callback DAT.
The Analyze CHOP now has a Duplicates function that can count the number of samples with duplicate values. A good example of this in use is the Histogram example in the Palette.
OP Snippets has expanded and now opens quickly as a pop-up window in your current project. Snippets will open to the currently-selected Operator should an example exist for it. Try it in the Help menu, Help -> OP Snippets. Add try out the new Random button in OP Snippets!
Parameter Help can be previewed by simply rolling over the parameter with the ‘alt/option’ key held down. This can be used for quick insight into a parameter’s function without leaving TouchDesigner when you’re “in the zone”.
Bringing Component Privacy and CodeMeter License Dongles together, you can now make private components that run on your own CodeMeter License Dongles. Developers can contact CodeMeter to get their own ‘firmcode’ which can then be used to create custom dongles to license their own components.
Window COMP improvements help manage multiple monitors and various DPI scales with more flexibility. The Window COMP can now span multiple monitors on macOS Sierra+.
New interface tweaks to the network address bar let you right-click on any part of the path to access that component’s context menu. You can also make any parameter read-only by right-clicking it and selecting ‘Enable Read Only’.
New features have been designed to help optimize and troubleshoot your projects. The Performance Monitor Dialog now reports both extension compile time and GPU calculation times.
GPU cook times are now shown in each node’s info pop-up, and are available in python. Most visibly, the Probe tool in the Palette now lets you watch GPU cook times for any operator. it can be found in Palette > Tools.
Control Panels & Custom Parameters
Enhancements to Panel COMPs include the overdue addition of scrollbars. For assembling panels into larger user interfaces, the Select COMP also has new options to Match Size or Follow Selections to add flexibility when reusing panels in multiple locations in your interfaces. The panel rendering and layout engine has been reworked to behave more consistently at different sizes.
The Parameter COMP, which lets you put parameter dialogs into any control panel, now lets you easily specify which parameters to include, to better customize what your users sees. Multi-input OPs can now have their Input OP menus shown or hidden. For faster creation of custom parameters in the Component Editor, you can now drag any parameter onto its parameter list and it automatically creates a copy of that parameter with the same settings and style. Two new types of custom parameters are the Momentary parameter, and for holding simple lists and dictionaries, a Python type parameter.
New python classes, members, and methods extend TouchDesigner’s functionality further and offer a number of exciting new features.
- The new Quaternion Class helps when working with 3D rotations.
- The Matrix Class received major updates to extend its usefulness.
- The Execute DAT lets you run python code just before or after saving out .toe files.
- There are two new parameter types: Momentary button and a Python Class that lets you hold simple lists and dictionaries. The Page Class now has .appendPython() and .appendMomentary().
- The OP_Class now reports CPU and GPU cook times, including the sum of the children of components.
- Window COMP Class and Monitor Class have new members and methods to give you access to the new features added to the Window COMP.
- In the App Class, app.desktopFolder and tdu.collapsePaths() make working with file system paths easier.
- tdu.clamp() and tdu.remap() functions are helpful for wrangling values to desired ranges.
Content & Tool Updates
- Kantan Mapper, the 2D projection mapping tool has nice additions including Bezier soft edges, inverting freeform masks, and shapeID being written into the UV map output.
- moviePlayer has many optimizations and new features like the ability to run a UI-less version for embedding in other tools and external control via CHOPs.
- cornerPinSOP is a new component in the Tools folder that corner pins SOP geometry.
- particlesGPU now has birth-rate control on systems that support GLSL 4.2 (ie. Windows OS)
These highlights discussed here are just a fraction of the great additions to this new Official version. Please refer to the Release Notes for more details on everything that has changed.
See What Was New in Official 099 Branch 2017.10000 last year.
A text string that contains data (string, float, list, boolean, etc.) and operators (+ * < etc) that are evaluated by the node's language (python or Tscript) and returns a string, float list or boolean, etc. Expressions are used in parameters, and in scripts.
An that manipulates text strings: multi-line text or tables. Multi-line text is often a command , but can be any multi-line text. are rows and columns of cells, each containing a text string.
The 3D data held in SOPs and passed for rendering by the .
A 3D image created with the Render TOP. Also used more generally to include the compositing (with TOPs) to generate an output image.
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 that reads, creates and modifies 3D polygons, curves, NURBS surfaces, spheres, meatballs and other 3D surface data.
An that associates a shader with a SOP or Geometry Object for rendering textured and lit objects.
(1) A can render its SOP geometry many times using CHOP samples, (2) an OP that doesn't actually have its own data, but rather just refers to an OP (or has an input) whose data it uses. This includes Null OPs, Select OPs and Switch OPs.
An 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.
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.
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 that contains its own inside. There are twelve 3D and eight 2D types. See also .
Strictly refers to a window in Microsoft Windows. User-created windows are made with inside , aside from the TouchDesigner editor window and its dialogs.
An that contains its own inside. There are twelve 3D and eight 2D types. See also .
TOuch Environment file, the file type used by TouchDesigner to save your project.