Experimental Build 2018.21670 posted

We are super excited to get back to experimental builds with the release of the 2017.30000 series!

Since we didn’t have Experimental builds during the 088 to 099 switch (beta 099 took the place of that), here’s an explanation of Experimental builds for those who are new to them.

Experimental builds contain new features and developments that are still in testing. As such, these builds may contain bugs, be unstable, or may change in non-backward compatible ways going forward. Therefore, we do not recommend using these builds for delivering projects or mission critical scenarios where stability is important. Use Experimental builds when you have time to experiment and want to test new features and improvements we are working on.

For production-ready, stable builds, you should use 099 Official builds. Official builds only receive safe bug fixes to keep them reliable for delivering projects.

[size=150]What’s New[/size]

[size=150]Faster Python, Expressions, and Startup[/size]
The biggest focus on this branch has been engine optimizations. Startup and opening files should be faster, as well as the addition of a python parser and expression caching system to improve performance of python throughout your projects. It would be extremely helpful to us to get feedback on the performance of your projects in Official vs. Experimental so we can gauge how effective these optimizations have been and where we can further improve them. I have attached a component that you can drop into your projects to measure frame time in milliseconds. Any Official vs Experimental comparison would be appreciated!

showCooks.tox (5.04 KB)
[size=150]New OPs[/size]
We have exciting developments in SOPs. First, the new Alembic SOP lets you load Alembic geometry streams into TouchDesigner finally! What’s more, there is a Straight to GPU mode that streams the Alembic file directly to the GPU offering an amazing performance advantage.

The long requested C++ SOP is also finally here! You can also look forward to loading geometry Straight to GPU with it as well.

The new Layout TOP takes multiple TOP input and lays them out in row, column, or grid format, similar to the layout options you find for children Panel components.

[size=150]More Additions[/size]
GPU performance monitoring is now possible. All nodes not only report their CPU cooking time but now also report the time they take up on the GPU. Middle-click on any node to see this, or access it through new python members to integrate this data into your systems.

What else? PBR MAT can send any of its maps to any color buffer. GLSL TOPs get Atomic Counters, Geometry COMP Instance page can now accept a SOP directly for instancing onto the SOP points, Event CHOP got new callbacks, List and Select Panel COMPs got reworked, and tons of new python features for Matrix and Quaternions.

The list is absolutely too long for this post so please read through the Release Notes!

We are happy to once again have Official and Experimental builds available for TouchDesigner. Expect new builds for experimental as often as necessary and new builds for Official approximately every 2 weeks. Please remember to post the build you are using when reporting issues or asking questions.

ENJOY the new toys! (and let us know what you like)

Download

Release Notes

:open_mouth:

YES YES YES YES WOOOOHOOOOO all my christmas wishes in one release!
Python expression caching sounds amazeballs. Also C++ SOP here i come :mrgreen:

Supercool guys!

Alembic, C++SOP, GPUvsCPU, Subtance, SOPtoGPU… wooow
Madness Power !
Nice job guys !

Wooow
Thanks y’all :smiley:

Thank you for your work, I test all the news right now.
jacques :stuck_out_tongue:

There isn’t some hack that I can install this experimental next to normal release right? That would make testing the Python expression speed difference a lot easier.

We do need to make this easier… but you can just copy the whole installation directory somewhere else and run it from there. We don’t use anything else other than whats in the directory to run, so that’s fine.

That’s a perfect hack, thanks malcolm

testing the Alembic SOP - playing a 150.000 vertices Alembic animation supersmooth on the GPU at 60fps without TD breaking a sweat is supercool ! :smiley:

Yeah! And thanks for the hack for multiple versions, I was just about to ask.

It seems I have some files who don’t load at all with the new version :cry:
Just reverted but will send your way shortly.

Though yes easier would be nice. I think I’ve said it before, I like the way it’s done in Houdini, where each version is a different entry in control panel/programs and features in windows.

Excited about new GPU based SOP stuff! Volumetric Pixelmapping here I come…

Also 13460 seems to ignore the “Check for Experimental Builds” option in the preferences and show “Update” in the corner regardless. :frowning:

Thanks for pointing this out, will have a fix for next build!

Variables and storage both got SUPER FAST. Wow.

I made this awhile ago to help folks think about cook time for various referencing methods, and it’s useful for comparison:

base_exploring_cooktimes.tox (1.99 KB)

Five second average:

088
exportCHOP 0.02455
pythonExpression 0.1102

hard_coded 0.03ms
storage 0.04388ms
variables 0.049ms
exports_constantCHOP 0.0165 ms
exports_tableDAT 0.0211 ms

099 - experimental
exportCHOP 0.02208
pythonExpression 0.07012

hard_coded 0.0284ms
storage 0.01647ms
variables 0.01319ms
exports_constantCHOP 0.01384 ms
exports_tableDAT 0.0211 ms

thanks Matt for those stats.

A default Noise CHOP (nothing connected), with Time Slice On, was always 0.04. When you set its Sample Rate parameter to a constant instead of me.time.rate, it would go to 0.02. This was for many nodes the case, such as Timer CHOP, Trigger ChOP, and all nodes who use an expression in Sample Rate.

Now in build 30400 the Noise CHOP is 0.02 by default, with still me.time.rate set as expression.
Also Timer CHOP looks twice as fast.

NICE

All super exciting - nice work!

Noticed that the Python optimisations had broken a few things in my projects.

When fetching a stored value from an expression in a constant CHOP it doesn’t update when the stored value changes. If I have the same expression in a DAT it cooks and updates just fine.
storageExample.toe (3.89 KB)

The bug with storage values not updating will be fixed in 2017.30680. Thanks for the report!

This experimental build brings the new S Curve CHOP, window spanning abilities for macOS High Sierra, Parameter COMP scope menus, and Audio Device OP parameters to deal with moving your project around to various machines with different audio devices.

You can also now right-click on any component in the address bar path as a shortcut to that component’s RMB context menu.

particlesGPU component in the Palette gets an update with a Birth parameter (only available on Windows OS due to GLSL limitations on macOS)

Last but certainly not least, many bug fixes from all your reports!

Remember we are very keen to hear how your projects run in this new optimized experimental branch, so please let us know how performance compares to the Official branch.

Download

Release Notes

Loving this new S-Curve CHOP!

I can tell already, however, that I’d love a way to specify different par values when setting up multiple channels. :slight_smile:

Nice, many cool features!

Looks like some python expressions are not being executed on each frame, for example when I’m accessing a Base operator x position using this code op('/project1/base1').worldTransform[0,3].