Vuo 2.0.0 includes many new features and a new visual design. Highlights include:

  • New Vuo Community Edition, free for personal use and small organizations, and fully open source
  • Added support for exporting more formats:
    • FxPlugs for Final Cut Pro X and Apple Motion (Vuo Pro)
    • macOS FFGL (FreeFrame 1.6+) plugins (Vuo Pro)
    • macOS Screen Savers (Vuo Pro)
    • HEVC/h.265 video
  • Many new and improved Vuo editor features, such as:
    • Comments
    • Loading basic ISF shader files, and editing GLSL and ISF shader code
    • Easier-to-use subcompositions — load from local folders, live-edit, more-intuitive event handling, package nodes as a subcomposition while preserving cable connections
    • Thumbnail images in Image port popovers
    • Easier-to-use generic types
    • Work-in-progress español and Deutsch translations for the Vuo editor interface
    • Pinch-zoom and smooth scrolling
  • Many new nodes, such as:
    • Find Faces in Image (Vuo Pro)
    • Make Image from Web Page
    • Speak
    • Themeable UI nodes
  • Many improved nodes, such as:
    • Make Text Layer — scaling, stretching, wrapping
    • Support for playing RTSP video
    • Improved rendering of semitransparent 3D objects
    • Improved performance when decoding Hap video
    • Simplified window nodes and time event flow

Vuo 2.0.0 supports macOS 10.10 and up.

Read on for all the details.

Built-in Nodes, Types, and Input Editors

  • Layer node set

    • Several improvements to Make Text Layer:
      • Text is now scaled when resizing the window (Thanks to @cwilms-loyalist for requesting this!)
      • Added ability to nonuniformly scale text (Thanks to @cwilms-loyalist for requesting this!)
      • Added ability to wrap text (Thanks to @dumski for requesting this!)
      • Fixed issue where part of the last character was cut off when rendering a bold font with character spacing less than 1
      • Fixed issue where leading spaces were ignored
      • Fixed issue where text was sometimes slightly blurry when using some Anchor settings
    • Changed Get Layer Bounds, Receive Mouse Drags on Layer, and Is Point within Layer to directly take a Layer as input, rather than a name of a Layer (Thanks to Ludwig Wittgenstein for suggesting this!)
    • Changed Make * Layer nodes to give each layer a unique ID, and changed the Copy/Tile Layer nodes to generate new unique IDs for the copies they create
    • Added Anchor and Opacity ports to more Make * Layer nodes
    • Added more sliders to Make * Layer nodes’ input editors
    • Renamed existing Get Layer Bounds node to Get Rendered Layer Bounds, and added a new Get Layer Bounds node that requires only a Layer as input
    • Merged Make Color Layer and Make Rounded Rectangle Layer into Make Rectangle Layer
    • Changed Arrange Layers in Grid’s default size so it fits within the default window
    • Improved antialiasing on rounded rectangles
    • Improved performance of bounds/layout when using text layers
    • Added the ability to use Get Child Layers as a type converter
    • Fixed issue where Combine Layers (Center) would incorrectly calculate the size of text layers
  • Image node set

    • Added Find Faces in Image node (Vuo Pro) (Thanks to @savienojums for requesting this!)
    • Replaced Bulge Image with a multi-point version (Thanks to @marioepsley for sponsoring this!)
    • Added Make Image from Web Page node (macOS 10.13 and up)
    • Added Improve Downscaling Quality (mipmapping) node (Thanks to @George_Toledo for requesting this!)
    • Added Reveal Image (Linear) node
    • Added Dilate Image node
    • Added Add Film Grain node
    • Modified Render Image to Window to respect the image’s Scale Factor
    • Added “Auto” option for Warp Image with Projection Mesh’s Width and Height ports
    • Added “Noise Center” port to the Frost Image node
    • Changed the Twirl Image node’s Angle range to allow counterclockwise twirling
    • Changed the Blur Image * nodes’ default settings for better performance
    • Fixed issue where Blur Image would output a black image when Type is Disc and Quality is 0
    • Fixed issue where the Mask Image by Brightness node would output opaque images
    • Fixed issue where Render Image to Window ignored the image’s Retina scale factor
    • Improved image filter support on systems with low GPU RAM
  • UI node set

    • Added Make Action Button, Make Toggle Button, and Make Slider UI widget nodes
    • Added Make * Theme (Rounded) and Make Material Theme nodes, to customize the appearance of the new UI widget nodes
  • Scene node set

    • Improved rendering of semitransparent 3D objects (transparent objects are now blended in back-to-front order) (Thanks to @Bodysoulspirit for requesting this!)
    • Fixed incorrect textures when importing some meshes (Thanks to @George_Toledo for reporting this!)
    • Added workaround for macOS OpenGL driver bug causing system crashes when using 3D object filter nodes on some GPUs (Thanks to @krezrock for reporting this!)
    • Improved performance of Make 3D * nodes by only regenerating the meshes if intrinsic mesh parameters changed (but not when only changing the shader or transform)
    • Changed Arrange 3D Objects in Grid’s default size so it fits within the default window
    • Added more sliders to Make 3D * nodes’ input editors
    • Added the ability to use Get Child Objects as a type converter
    • Fixed occasional crashes involving the Make Cube with Materials node
    • Fixed issue where the Intersect/Subtract/Union/Flatten 3D Object nodes output broken line, point, and non-element-based triangle meshes
    • Fixed issue where 3D object filters would output an invisible object if a scale axis was 0
  • Video node set

    • Improved performance when decoding Hap video (Thanks to @conanp for requesting this!)
    • Documented that movie files can’t change format during recording (Thanks to @kyrrelys for requesting this!)
    • Improved support for playing RTSP video (Thanks to @jayeazy for requesting this!)
    • Fixed issue where Save to Movie would duplicate or skip frames (Thanks to @David for reporting this!)
    • Added support for exporting H.264 movies up to 35 megapixels (macOS 10.13 and up)
    • Added support for exporting HEVC/h.265 video (macOS 10.13 and up)
    • Added support for exporting HEVC With Alpha video (macOS 10.15 and up)
    • Added support for exporting ProRes 422 HQ, LT, and Proxy (macOS 10.15 and up)
    • Added “Done” port to the Save Images/Frames to Movie nodes
    • Changed Save Frames to Movie to wait (rather than dropping frames) if AV Foundation can’t keep up, for more accurate rotoscoping (Save Images to Movie, intended for realtime use, continues to drop frames when AV Foundation can’t keep up)
    • Fixed issue where playing some Hap movies in reverse produced no output
    • Fixed issue where a composition would sometimes stop responding when stopping movie playback at the same time as it reaches the end of the movie
    • Removed the “Start” and “Stop” ports from Receive Live Video (it now starts automatically)
    • Rewrote Receive Live Video to use AV Foundation
    • Updated to HapInAVFoundation.framework version 1.6.9
  • Window node set

    • Fixed issue where non-resizable windows would sometimes be the wrong size when going full-screen (Thanks to @philhaldane for reporting this!)
    • Renamed Change/Reset Window Aspect Ratio to Lock/Unlock Window Aspect Ratio
    • Replaced “Set Window Properties” (list) ports with “Set Window Description” (single-value) ports
    • Added the ability for the Change Window Size to resize the window to be larger than the screen
    • Modified Change Fullscreen Status to refrain from going full-screen when the specified screen isn’t available
  • Audio node set

    • Added Speak node (Thanks to @krezrock for requesting this!)
    • Added “Bipolar” and “Absolute” modes to the Make Image from Channels node
    • Added “Sync Center” and “Attenuate Ends” ports to the Make Audio Waveform node
    • Moved the trigger port from Send Live Audio to a new Fire at Audio Rate node
    • Updated to Gamma version 0.9.8
  • Kinect node set

  • App node set

    • Added Execute Shell Command (sandboxed) node
  • OSC node set

    • Added Make Message (List) and Get Message Values (List) nodes to decode OSC messages having any number of values with a single type (Thanks to @IP Identity Problem for requesting this!)
    • Renamed OSC “Data” ports to “Value”
    • Fixed occasional composition crashes when live editing compositions while they’re sending or receiving OSC messages
  • Transform node set

  • Syphon node set

    • Fixed issue where Send Syphon Video didn’t send anything if the “Server Name” was empty (Thanks to @cwilms-loyalist for reporting this!)
    • Renamed Send/Receive Image via Syphon nodes to Send/Receive Syphon Video
  • List node set

    • Added Sort List node
    • Added Remove Duplicates from List node
    • Renamed Build List and Process List’s ports to clarify their meaning
  • Time node set

    • Renamed Subtract Times to Subtract Date-Times (Thanks to @marioepsley for requesting this!)
    • Fixed unexpected output from the Schedule node when looping
  • Data node set

    • Added ability to append to a file in the Save Data node (Thanks to @cwilms-loyalist, @marcozora, and @pbourke for requesting this!)
    • Added “Finished Playback” port to the Record and Play Values node
    • Streamlined the Hold Value by removing the rarely-used “Initial Value” port
    • Improved performance of Are Equal when comparing text
  • Math node set

    • Added the ability to search the node library by math symbols (Thanks to @MartinusMagneson for requesting this!)
    • Modified Count within Range and Limit to Range so, when wrapping using Real values, the minimum is inclusive and the maximum is exclusive
  • Blackmagic node set (Vuo Pro)

  • RSS node set

    • Added the ability to read Atom feeds
  • Text node set

    • Added support for wildcards (glob and regex) in the Compare Texts node
  • Tree node set

    • Added support for wildcards (glob and regex) in the Find Subtrees with * nodes
    • Fixed issue where the Make Tree from JSON and Fetch JSON Tree nodes didn’t properly handle ampersands in strings
  • Event node set

    • Added Share Event node
  • Type node set

    • Added Convert Real to Options node to easily select from multiple enum values
  • Console node set

    • Modified Display Console Window to add a linebreak even when the input text is null
  • URL node set

    • Updated to cURL version 7.65.3
    • Updated to OpenSSL version 1.1.1c
  • Added support for wildcards (glob) in HID, OSC, RSS, Serial, and Syphon find/filter nodes (Thanks to @microlomaniac for requesting this!)

  • Fixed issue where graphics windows might zoom or minimize when double-clicking on the content area after exiting full-screen mode (Thanks to @Scratchpole and @Bodysoulspirit for reporting this issue!)

  • Removed the “Requested Frame” trigger port from the Render Image/Layers/Scene to Window nodes, in favor of using the Fire on Display Refresh node

  • Replaced the “Showed Window” and “Rendered Layers” ports on Render Image/Layers/Scene to Window nodes with a new all-in-one “Updated Window” port

  • Reordered ports on some nodes so the the port actions are at or near the top

  • Renamed Make * Device nodes to Specify * Device to clarify their purpose

  • Updated the Make Image with Shadertoy node to use the new ShaderToy syntax

  • Increased the number of decimal places supported by the Real number input editor

  • Reduced latency when rendering to graphics windows

  • Added support for macOS dark mode in graphics windows and console windows

  • Made all the List Device nodes fire an event when a device is added or removed

  • Fixed issue where a composition would sometimes stop responding when dragging a graphics window between a non-Retina and a Retina display

  • Fixed occasional crashes when stopping a composition with a Unix signal

  • Fixed occasional crashes when stopping some nodes that fire events, or deleting them from a running composition

  • Redesigned the About box in exported apps

  • Reduced GPU memory usage when working with fully-opaque images

  • Fixed issue where Vuo compositions run in VDMX would stop rendering if the output image was a different size than what VDMX requested

Vuo Editor

  • Added Vuo Community Edition, free for personal use and small organizations
  • Added support for exporting more formats:
    • FxPlugs for Final Cut Pro X and Apple Motion (Vuo Pro)
    • macOS FFGL (FreeFrame 1.6+) plugins (Vuo Pro)
    • macOS Screen Savers (Vuo Pro)
  • Added support for comments on the canvas (Thanks to @Luiz Andre for requesting this!)
  • Added support for loading basic ISF shader files, and for editing GLSL and ISF shader code
  • Added support for loading subcompositions and custom nodes from a local folder (Thanks to @DiGiTaLFX for requesting this!)
  • Changed subcompositions so each event enters only through the input ports that the event hit (instead of all input ports). See this page for more information. (Thanks to @Pianomatic for requesting this!)
  • Added the ability to view events, view port values, change constant values, live-edit, and manually fire events in subcompositions when their top-level composition is running, without needing to save the subcomposition or restart the top-level composition
  • Changed protocol compositions so custom published input ports transmit events when changing their values (Thanks to @lov for requesting this!)
  • Added “Package as Subcomposition” action (combines selected nodes into a subcomposition)
  • Added “Change To” action (changes one node to another, preserving cables and constant values where possible)
  • Added thumbnail images to Image port popovers
  • Redesigned the “Set Data Type”/“Revert to Generic Data Type” menu to be simpler — now you can change types with a single click, without having to first revert
  • Added support for respecializing generic ports by simply dragging a cable (you no longer need to first reset the port to generic)
  • Redesigned the visual appearance of nodes and cables (Thanks to @Bodysoulspirit and others for your drafts!)
    • Simplified the shape of nodes by making them rounded rectangles with exterior port circles
    • Simplified the shape of constant values by merging them into their port
    • Simplified the appearance of nodes by removing Refresh ports, Interface radio arcs, and Stateful bars
    • Simplified the appearance of list drawers by merging the handle into the drawer
    • Changed cables to be straight rather than curved
    • Added a canvas “Grid > Points” mode
    • Switched to a more minimalist font
    • Made node tint colors more vibrant
    • Made nodes and cables fully opaque
    • Made selected nodes more intense
    • Made cable highlight more intense when selecting a node
    • Increased difference in line weight between event-only and data-and-event cables
    • Increased line weight of walls and doors
    • Redesigned the Vuo logo, app icon, and composition icon
    • Capitalized constant values in ports with enum types
  • Redesigned the Vuo editor interface
    • Made it flatter and more rounded (Thanks to @Bodysoulspirit and others for your drafts!)
    • Added the ability to hide toolbar labels, resulting in a narrow combined titlebar/toolbar (Vuo Pro)
    • Changed the Find bar to cover only the canvas (not the node library or other sidebars)
  • Added work-in-progress español and Deutsch translations for the Vuo editor interface (Thanks to @planetariosdelsur for requesting this!)
  • Added the ability to pinch-zoom on the canvas (Thanks to @cwright for requesting this!)
  • Changed rubberband-dragging to not select cables by default (hold option to select cables) (Thanks to @MartinusMagneson for requesting this!)
  • Made canvas scrolling smoother (Thanks to @Bodysoulspirit for requesting this!)
  • Enabled Vuo editor to automatically reload modified nodes (Thanks to @jvolker for requesting this!)
  • Fixed issue where infinite feedback loops could be created through subcompositions with internal trigger ports (Thanks to @MartinusMagneson for reporting this!)
  • Added the ability to edit the node class name prefix upon “Save/Move Subcomposition to User Library” (Thanks to @MartinusMagneson for requesting this!)
  • Added support for syncing the user library between multiple systems using, e.g., Dropbox (Thanks to @DiGiTaLFX for requesting this!)
  • Added the ability to customize the About box in exported apps (Thanks to @Bodysoulspirit for requesting this!)
  • Fixed issue where Vuo editor would unhide itself if detached popovers were open (Thanks to @krezrock for reporting this!)
  • Added the ability to edit composition metadata (display name, version, icon, description, keywords, license, web links, app bundle identifier)
  • Added a preview of the node class name in the “Save/Move Subcomposition to User Library” dialog
  • Added a “Quick Start” introductory example composition
  • Added Image Transition protocol
  • Added more templates to File > New Composition from Template (Image Transition, Movie, Screen Saver, FFGL, FxPlug)
  • Added the ability to create a List Files node when dragging a folder from Finder onto the canvas
  • Added more node choices when dragging files from Finder onto the canvas
  • Added the ability to connect an event-only cable to a node’s first non-Action port by dropping a cable anywhere on its header
  • Added “New Port” button in the published port sidebars
  • Improved live-editing speed by merging more actions together into a single recompile and reload
  • Improved canvas rendering speed
  • Redesigned the Welcome window and Vuo Pro activation process
  • Made menus and popover titlebars dark when in Dark Interface mode (Vuo Pro)
  • Added “Show in Finder” actions for subcompositions and shaders in the node documentation panel and canvas node context menu
  • Changed cable duplication behavior to preserve hidden status after completing the drag
  • Changed port publishing behavior to automatically show the name editor
  • Added the ability to search the node library by port type (for example, in:image or out:transform)
  • Added the ability to search the composition for deprecated nodes (Edit > Find, search for the text deprecated)
  • Added the ability to create other common nodes (Share Value/List/Event, Hold Value/List, Allow First Event/Value, Allow Periodic Events, Allow Changes) from the canvas context menu
  • Added the ability to create new subcompositions from the canvas context menu
  • Added automatic zoom-to-fit when opening a composition
  • Streamlined some error dialogs and added links to the Vuo manual
  • Added indication in a trigger port’s popover when its events are blocked from exiting a subcomposition
  • Added the ability to dismiss attached port popovers by pressing Esc or by clicking a second time on its port
  • Made it easier to connect cables to published input/output ports by extending the drop zone
  • Added some helpful links to the Help menu
  • Added support for dragging feedback error popovers
  • Added support for connecting a cable when it would displace a cable with a latent feedback loop
  • Added a link to the vuo.org Node Gallery in the missing node dialog
  • Added a keyboard shortcut for toggling the published port sidebars
  • Changed editor windows to open on the current main screen when “System Preferences > Mission Control > Displays have separate Spaces” is enabled
  • Reworded the File > Export menu items for clarity (changed “Activate Protocol to…” prefix to “…(requires protocol)” suffix)
  • Added the ability to select a cable by clicking on the part nearest the input port it connects to
  • Fixed issue where closing a full-screen editor window could leave an empty Space
  • Fixed issue where the node documentation would scroll back to the top when clicking on an already-selected node
  • Fixed issue where consecutive spaces in node titles would be condensed into 1 space
  • Fixed issue where a data-and-event cable sometimes wouldn’t be displaced when connecting another data-and-event cable to an input port
  • Fixed issue where clicking Run then immediately clicking Stop would leave the Run button disabled
  • Fixed issue where minimizing a composition window would also hide its published port sidebars
  • Fixed issue where the ghost of a closed composition window would sometimes later appear
  • Fixed issue where a port’s “Auto” value wasn’t propagated to published input ports
  • Fixed issue where using the “Save As” menu item to save a composition into the User Modules folder, without specifying an extension, could overwrite an existing composition with the same name
  • Fixed issue where protocol ports sometimes weren’t in the correct order when a protocol composition was used as a subcomposition
  • Fixed issue where the node library’s row height would sometimes change between Vuo editor launches
  • Fixed issue where, when the node library is floating, dragging a node would sometimes move the library instead of creating a node
  • Fixed issue where cables and constant values weren’t preserved when opening compositions with missing nodes
  • Fixed occasional crashes when live editing with popovers (e.g., adding a node then opening a popover for one of its ports before the compile/reload has finished)
  • Fixed occasional crashes when rapidly undoing then redoing
  • Fixed occasional crashes when toggling Dark Interface mode (Vuo Pro)
  • Fixed occasional crashes when selecting a node then immediately closing the composition window
  • Fixed crash when trying to save a subcomposition that contains itself
  • Fixed crash after closing a composition window while an input editor is open
  • Fixed crash when disconnecting a published input cable from a collapsed type converter’s child port and, in the same mouse drag, reconnecting it to the type converter’s parent port
  • Fixed crash when closing a composition window while a context menu is active then clicking an item in the still-visible context menu
  • Added a progress indicator while exporting apps and plugins
  • Improved composition launch speed by bundling more native precompiled code (rather than LLVM bitcode)
  • Improved first-time editor launch speed by bundling the built-in node and type cache with Vuo editor (instead of generating it on first launch)
  • Renamed Vuo Editor.app to simply Vuo.app
  • Added a log of recent actions to crash reports, to help us investigate crashes
  • Added the Vuo editor version in which the composition was created, and the version in which it was last saved, to each composition
  • Vuo editor is now Notarized by Apple

We will publicly release the Vuo editor source code when the Vuo 2.0.0 beta period ends.

Documentation and Examples

  • Redesigned the visual appearance of many example compositions, and changed the default images for Image Filter protocol compositions (Thanks to @jersmi, @mixfilet, @Luiz Andre, and @Bodysoulspirit for sharing compositions!)
  • Added a high-contrast version of the Vuo manual (Thanks to @lechbialek for requesting this!)
  • Added a searchable Apple Help Book version of the Vuo manual
  • Changed example composition color scheme to be more accessible to people with color-blindness
  • Added a glossary to the Vuo manual
  • Expanded the Vuo manual’s troubleshooting section to discuss thermal throttling
  • Fixed issue where the “Draw Curve” example composition’s curve would sometimes have gaps
  • Fixed issue where the “List Countries” example composition would render invalid Unicode characters
  • Fixed issue where some compositions (such as “Meet the Ghost of Einstein”) would sometimes initially show checkerboard images instead of the properly shaded output
  • Fixed choppy audio when running “Synchronize Oscillators” on some old Mac systems
  • Improved formatting of example composition names in the File > Open Example menu

Vuo Compiler and Runtime

  • Reduced size of exported apps and plugins by excluding unused dependencies
  • Fixed occasional crashes when compiling C code on multiple threads
  • Fixed rare deadlock in generated code involving a scatter downstream of one trigger, with the branches of the scatter ending at nodes containing other triggers
  • Fixed crash when running compositions with custom nodes that have ports with leading underscores
  • Fixed crash when attempting to open a file that’s a valid Graphviz graph but not a valid Vuo composition
  • Fixed occasional garbled compiler error messages

Source Code

  • We will publicly release the Vuo compiler, renderer, editor, node, and type source code when the Vuo 2.0.0 beta period ends
  • Improved build speed by using more forward declarations, removing unneeded headers, and restructuring precompiled headers
  • Switched from qmake to CMake
  • Switched to Conan for dependency management

SDK

Vuo.framework 2.x is not binary-compatible with Vuo.framework 1.x; you’ll need to make some changes to your host code. In particular:

  • The SDK is now Notarized by Apple and distributed as a macOS Installer Package, which installs to /Library/Developer/Vuo.
  • The VuoRunner API has changed:
  • In addition to the existing VuoImage methods, there are some new methods:
  • Subcompositions are now automatically recompiled and reloaded when they change (Thanks to @mrray for reporting this!)
  • Switched from libstdc++ to libc++ (Thanks to @Kino for requesting this!)
  • Removed the need for apps that link with Vuo.framework to also link with Vuo’s auxiliary dylibs
  • Added the ability for vuo-render to output SVG
  • Added the ability for vuo-render --render-missing-as-present to render ports and cables on missing nodes
  • Switched examples from qmake to CMake
  • Improved first-time launch speed by bundling the built-in node and type cache with Vuo.framework (instead of generating it on first launch)
  • Updated the “Developing Applications that Use Vuo” documentation for the latest Xcode version
  • Added the ability to link to other nodes in node documentation
  • Added the ability to set port details (suggestedMin/Max/Step) for elements in list input ports
  • Added backtraces to exceptions, and included them in crash reports
  • Simplified working with VuoPoint2/3/4d types by switching from struct to ext_vector_type (which supports vector operators and swizzling)
  • Fixed some situations in which a composition that doesn’t output any events could cause a host to stop responding
  • Fixed crash when passing unrecognized arguments to command-line utilities

See the API reference for the full list of API changes.

Known Issues

  • We haven’t updated the tutorial videos yet; we’ll be doing that soon. In the meantime, please see the manual.
  • The español and Deutsch translations are incomplete. Contact us if you’d like to help refine the existing translations, or start translating Vuo into another language.
Version
2.0.0-beta1