Vuo 1.2.2 is a big update that fixes 34 community-reported issues, adds several new features, and improves performance and stability. It’s free for people who purchased Vuo 1.2.0 or Vuo 1.2.1. Highlights include:

  • Improved stability when livecoding with subcompositions
  • Improved performance of many nodes, including Resize Image, Decode Movie Image, Fetch Image, Pixellate Image, Split Text, Split Text Stream
  • Added support for loading and saving more image formats, including WebP
  • Added several new nodes: Measure Length, and 5 new 3D/4D Point → Real type converters
  • Fixed many issues with image alpha blending
  • Fixed inability to broadcast OSC messages on some system configurations
  • Fixed reliability issues when livecoding with Build List and Process List
  • Added workarounds for many Mac OS X and GPU driver issues

Read on for all the details.

Built-in Nodes, Types, and Input Editors

  • Avoided doing unnecessary work in the Resize Image nodes when the image is already the desired size. (Thanks, @lov, for suggesting this.)
  • When sending OSC using the Make OSC IP Output node, added support for entering broadcast IP addresses into that node’s input ports. Now, when you use that node, if you enter a unicast IP address, it unicasts, and if you enter a broadcast IP address, it broadcasts (instead of merely unicasting to this host’s IP address within the specified broadcast range). (Thanks, @zwei-p, for suggesting this.)
  • Fixed issue when broadcasting OSC messages using Make OSC Output where it would broadcast only to the default network interface (which on some system configurations is the loopback interface, defeating the purpose of broadcasting). (Thanks, @zwei-p, for reporting this issue.)
  • Improved performance of the Decode Movie Image node when decoding sequential frames. (Thanks, @alexmitchellmus, for reporting this issue.)
  • Fixed the Build List node’s occasional failure to fire Build Item events when the desired size changes faster than the time it takes to build the list. (Thanks, @Magneson, for reporting this issue.)
  • Fixed the Build List and Process List nodes’ issue where they stop firing events during livecoding if the Build/Process Item port’s event doesn’t make it back to the Built/Processed Item port. (Thanks, @useful design, for reporting this issue.)
  • Improved performance of the Split Text and Split Text Stream nodes when working with large datasets. (Thanks, @zwei-p, for reporting this issue.)
  • Changed Make Draggable Camera to default to dropping events, so compositions don’t build up a backlog of transformations. (Thanks, @jersmi, for reporting this issue.)
  • In running compositions, changed the default window title to be the composition filename. (Thanks, @useful design, for suggesting this.)
  • In the Make Image with ShaderToy node, allow changing the color depth. (Thanks, @alexmitchellmus, for suggesting this.)
  • Cleaned up obsolete example compositions listed with a few nodes. (Thanks, @useful design, for reporting this issue.)
  • Added workaround for Intel HD Graphics 3000 issue where it renders incorrectly when multisampling is set to 8x. (Thanks, @bodysoulsprit, for reporting this issue.)
  • Added workaround for Mac OS X issue where compositions without windows, or with windows that aren’t visible, were incorrectly put to sleep (App Nap) after about 30 seconds, resulting in reduced performance. (Thanks, @Magneson, for reporting this issue.)
  • Added workaround for Mac OS X issue where the color picker dialog would expand vertically every time you open it, resize it, or switch tabs. (Thanks, @Magneson and @Bodysoulspirit, for reporting this issue.)
  • Fixed issue where Save Image wrote incorrect colors when the input texture had colors outside the range 0 to 1. (Thanks, @alexmitchellmus, for reporting this issue.)
  • Fixed issues in many image generators, image filters, and other shaders where alpha premultiplication was handled incorrectly. (Thanks, @alexmitchellmus, for reporting this issue.)
  • Added workaround for Intel HD Graphics 3000 issue causing glitchy pixel borders in the Pixellate Image node. (Thanks, @Bodysoulspirit, for reporting this issue.)
  • Fixed crash when feeding Change Window Title a null title. (Thanks, @alexmitchellmus, for reporting this issue.)
  • Extended the Explode 3D Object node documentation, mentioning how to implode. (Thanks, @alexmitchellmus, for suggesting this.)
  • Fixed issue in Make Checkerboard Image where the antialiasing resulted in a line along the left (and sometimes bottom) side of the output image. (Thanks, @Bodysoulspirit, for reporting this issue.)
  • Added workaround for Intel Iris GPU issue preventing point and line meshes from rendering correctly. (Thanks, @Doro, for reporting this issue.)
  • Added more 3D/4D Point → Real type converters. (Thanks, @Bodysoulspirit, for requesting this.)
  • Fixed issue where Blend Colors would sometimes output colors with alpha greater than 1. (Thanks, @jersmi, for reporting this issue.)
  • Fixed issue where Make Linear/Radial Gradient Image/Layer would wrap out-of-range colors instead of clamping them. (Thanks, @jersmi, for reporting this issue.)
  • Fixed memory leak in Detect Audio Beats. (Thanks, @Magneson, for reporting this issue.)
  • In Mesh port popovers, added chart showing which vertex attributes were provided. (Thanks, @kozistan, for suggesting this.)
  • Improved Fetch Image’s JPEG loading performance by replacing libjpeg with libjpeg-turbo (which implements SIMD optimizations).
  • Added “Replace Opacity” port to Blend Images to specify how the foreground image’s opacity should be combined with the background image’s opacity (Photoshop vs. GIMP).
  • Fixed issues in some Blend Images blend modes where alpha handling was inconsistent.
  • Extended Blend Images and Blend Colors to support the “Power (b^f)” blend mode.
  • Extended Fetch Image and Save Image to support WebP images.
  • Extended Save Image to support saving 256-color GIF images.
  • Extended Save Image to support saving GIF files with 1-bit transparency.
  • Extended Save Image to support saving 16bpc TIFF files and transparent TIFF files.
  • Extended Save Image to support saving 1-channel (luminance) and 2-channel (luminance+alpha) textures.
  • Added “Done” port to Save Image.
  • Fixed memory leak in Save Image when it exits early, either due to an error or due to not wanting to overwrite an existing image file.
  • Fixed issue in Save Image where 16bpc images saved to BMP and TGA files were corrupt.
  • Added workaround for Mac OS X issue causing compositions with published VuoKey ports to stop responding to mouse and keyboard input.
  • Improved performance of the Pixellate Image node.
  • Fixed the Delete key in the Receive Keyboard Typing — it now removes the last character from text fired subsequently from the Typed Word and Typed Line outputs.
  • Improved error messages reported by the Fetch Image node.
  • Added sliders to the Combine Layers node’s ports, add details to ports so they have sliders. [#8368]
  • Fixed issue in Make Text Image and Make Text Layer where the text color didn’t closely match the same color when used to render other graphical elements.
  • Fixed issue where Launch App failed to launch apps if the file:// URL had . or .. path segments.
  • Improved Launch App’s error reporting.
  • Added workaround for a Mac OS X issue causing compositions to crash when setting the window to a size Cocoa doesn’t like.
  • Added workaround for NVIDIA 9400M issue causing Explode 3D Object to output NaN vertex attributes for some meshes at time 0.
  • Fixed incorrect rendering of semitransparent objects when using Change Layer Blending or Change 3D Object Blending in Linear Dodge, Lighter Component, Subtract, or Multiply mode.
  • Fixed incorrect rendering for semitransparent objects/layers rendered after using Change Layer Blending or Change 3D Object Blending.
  • Added a wall to the Detect Audio Beats node’s Tempo Range port.
  • Added workaround for Jack issue causing Vuo composition windows to sometimes never gain focus or respond to keyboard/mouse events.
  • Added Measure Length node. [#11952]
  • Added support for specializing to the Horizontal Alignment, Vertical Alignment, and Image Format types in the Are Equal, Allow Changes, and Changed nodes.
  • Changed the Is Less Than node so that null text is less than any other string (including empty string).
  • Improved documentation on many nodes: Make Waveform Image, Make Audio Wave, Convert Note to Frequency, the BCF2000 nodes
  • Improved documentation in the OSC node set.
  • Added more keywords to several nodes: Sample Color from Image, Mask Image by Brightness, Count Items in List, Schedule, Displace 3D Object with Image, Save Image, Apply Mask
  • Listed the “Enhance Blue” as an example composition for the Adjust Image Colors node.

Vuo Editor

  • Fixed issue where Vuo Editor would hang when attempting to stop a composition if it had already lost contact with the composition. (Thanks, @Magneson, for reporting this issue.)
  • Added workaround for issues in some GPU drivers leading to system hangs when attempting to export large movies. Vuo Editor now displays a warning when it suspects you might encounter this GPU driver issue, and allows you to bypass the warning at your own risk. (Thanks, @alexmitchellmus and @Bodysoulspirit, for reporting this issue: 1, 2.)
  • Improved error reporting when exporting apps. (Thanks, @Gillieron, for reporting this issue.)
  • Fixed issue where exporting an app would fail if the destination was a disk other than the system disk. (Thanks, @Gillieron, for reporting this issue.)
  • Fixed issue where, in dark mode, the node documentation bullets would change color when the window lost focus. (Thanks, @alexmitchellmus, for reporting this issue.)
  • Added DCI 2K, DCI 4K, UHD 4K, and UHD 8K presets to the File > Export > Movie dialog. (Thanks, @alexmitchellmus, for suggesting this.)
  • Added object names to popovers for 3D Objects.
  • Clarified the Time Format options by using the current date/time to show an example of each format.
  • Switched bundling FreeImage and Open Asset Import from static libraries to dynamic, to improve compiling performance.
  • Reduced energy consumed when maintaining the texture and IOSurface pools, and when communicating between Vuo Editor and compositions. This should also reduce the occurrence of process caught causing excessive wakeups console messages.
  • Slightly reduced the amount of time it takes Vuo to build its cache the first time it’s launched.
  • Fixed occasional hangs and crashes when livecoding with a composition containing subcomposition nodes, or when rapidly adding generic nodes.
  • Added support for selecting and opening multiple compositions at once in the File > Open Composition dialog.
  • Added a color swatch to popovers on Color ports, and made the color values show a consistent number of decimal places so they’re easier to read when quickly changing.
  • Fixed issue where the File > Export > Movie dialog’s default button had changed to Cancel on systems with Full Keyboard Access enabled.
  • Fixed issue where “null” appeared in the constant flag of a subcomposition input port when the published input port had no constant value explicitly set.
  • Added workaround for a code signing issue with the Leap Motion SDK, causing this warning to appear in Console: kernel[0]: CODE SIGNING: cs_invalid_page(…): p=…[VuoCompositionLo] final status 0x2000000, allowing (remove VALID) page
  • Fixed crash when compiling a composition with an event-only cable connected to a data-and-event published port.
  • Fixed issue where some cached information about a subcomposition was not deleted when a subcomposition was uninstalled, which could lead to Console warnings.
  • Fixed crash upon pasting an isolated published port from .vuo source into a new composition.
  • Improved text formatting in error dialogs, and made more error dialogs into sheets.
  • Added more log information when debug mode is enabled:
    • Shows the IP addresses and ports OSC messages are being sent to.
    • Shows the names of resources being copied into the exported app bundle.
    • Shows VRAM usage stats.
    • Shows progress of livecoding reloads.

SDK

  • Added some protections to reduce system crashes due to GPU driver issues when 3rd-party nodes misuse the VuoMesh API. (Thanks, @alexmitchellmus, for reporting this issue.)
  • Added workarounds to make most of Satoshi’s plugins work again. (Thanks, @Bodysoulspirit, for reporting this issue.)
  • Added some protections to reduce potential composition crashes when invalid data is encoded and passed to functions expecting Mesh, Shader, or Window Reference data.
  • Added an API documentation section on graphics, with the rules of alpha premultiplication and some links to relevant classes.
  • Added VuoLocal(), which you can use to simplify some reference-counting code.
  • Added pointer content summaries (visible with vuo-debug) when reporting calls for unregistered pointers (to help you track down the miscreant pointer).
  • Updated VuoCompiler::compileComposition() to throw an exception if the composition file is unreadable. Updated examples to demonstrate catching that exception.
  • Updated VuoColor documentation to clarify that it does not expect or provide premultiplied RGB values (unlike VuoImage).
  • Changed VuoGlTexturePool_use() to return 0 when texture allocation fails, instead of returning a valid texture name and leaving an error on the OpenGL context (or possibly crashing due to GPU driver issues).
  • Reduced Vuo.framework size by 10%.
  • Added workarounds to support copying a more recent Vuo.framework into VDMX5 b8.5.0.7.
Version
1.2.2