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 français, 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
    • Make Triangles Object
    • Receive Touches for multitouch trackpads
    • Execute Shell Command
    • Nodes for working with equirectangular panoramas and cubemaps
    • 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. Contents:

Changes between Vuo 1.2.8 and 2.0.0 {#changes-since-128}

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!)
    • Fixed issue where nonuniformly-scaled rectangle layers were blurry (Thanks to @Bodysoulspirit for reporting this!)
    • Fixed issue where Make Image Layer (Stretched) had the wrong dimensions (Thanks to @Bodysoulspirit for reporting 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 (anisotropic mipmapping) node (Thanks to @George_Toledo for requesting this!)
    • Added Convert Cubemap to Equirectangular [Pro] node (Thanks to @alexmitchellmus for contributing this!)
    • Added Convert Equirectangular to Fisheye [Pro] node (Thanks to @pbourke for contributing this!)
    • Added Translate Image node (Thanks to @pbourke for contributing this!)
    • Added Reveal Image (Linear) node
    • Added Dilate Image node
    • Added Add Film Grain node
    • Added Cubemap type and Make/Get nodes
    • 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!)
    • Added Make Triangles Object node
    • Replaced the Make * Mesh nodes with easier-to-use Make * Object nodes
    • Gave Make Cube the ability to take a cubemap as input
    • Added support in Make Lines Object, Make Line Strips Object, and Make Points Object for specifying per-vertex colors
    • Added support in Fetch Scene for loading per-vertex colors
    • Improved rendering performance for meshes with millions of vertices
    • 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!)
    • Fixed issue where some movies could cause Step Movie Frame to stop responding (Thanks to @cremaschi 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
    • Improved performance when playing back videos using FFmpeg
    • Updated to HapInAVFoundation.framework version 1.6.9
    • Updated to FFmpeg 4.2.1
  • 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!)
    • Modified Change Fullscreen Status so it moves non-fullscreen windows, too (Thanks to @pbourke for requesting 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
    • Fixed issue where Change Fullscreen Status would, if the secondary screen is selected, incorrectly go fullscreen on the primary screen if the secondary screen isn’t attached
    • Fixed issue where using Change Fullscreen Status to change from one fullscreen to another would incorrectly go fullscreen on the original screen
  • Audio node set

    • Added Speak node (Thanks to @krezrock for requesting this!)
    • Fixed issue where the audio nodes would unexpectedly use the first audio device when they were supposed to use the default audio device (Thanks to @Joëlle for reporting this!)
    • Fixed issue where Specify Audio Input/Output by Name/Model failed to select a device (Thanks to @cremaschi for reporting 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

    • Changed depth images so closer objects are lighter and farther objects are darker (Thanks to @Scratchpole for suggesting this!)
    • Added the ability for Receive Kinect Images to choose between receiving RGB or infrared images (Thanks to @marcorexo1 for requesting this!)
  • 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
    • Added more debug information for OSC exceptions
  • 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 generic Is Populated node, replacing the old per-type Is [type] Populated nodes, and made it also work for shaders (Thanks to @Mechanica 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)

  • USB HID node set

    • Added support for wildcards (glob) in HID, OSC, RSS, Serial, and Syphon find/filter nodes (Thanks to @microlomaniac for requesting this!)
    • Fixed possible crash when using USB HID nodes on macOS 10.15
  • Table node set

  • 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
  • Mouse node set

    • Added Receive Touches node for multitouch input from trackpads
    • In the Receive Mouse Buttons node, added “Force Pressed” and “Pressure Changed” outputs for Force Touch trackpads
  • 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
  • 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!)

  • Fixed issue where some Get * Input/Output Values nodes would output incorrect information when the input is a constant value rather than a cable (Thanks to @cwilms-loyalist for reporting this!)

  • 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

  • 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

Exporting Apps and Plugins

  • 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 the ability to customize the About box in exported apps (Thanks to @Bodysoulspirit for requesting this!)

Vuo Editor

  • Added Vuo Community Edition, free for personal use and small organizations

  • 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 français, español and Deutsch translations for the Vuo editor interface (Thanks to @planetariosdelsur for requesting this, and thanks to @Bodysoulspirit for your work on this!)

  • Added a preference to disable interface translations (Thanks to @Bodysoulspirit for requesting this!)

    defaults write org.vuo.Editor translation.enable -boolean false

  • 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!)

  • Fixed issue where Vuo editor would unhide itself if detached popovers were open (Thanks to @krezrock for reporting this!)

  • Fixed issue where quitting from the Dock with unsaved changes would close the window but not actually quit (Thanks to @prackvj for reporting this!)

  • Fixed hang when launching a new Vuo version with many subcompositions installed in the User Modules or System Modules folders (Thanks to @ops and @wmackwood for reporting this!)

  • Added “Move to Trash” and “Show in Finder” to the context menus for custom nodes and subcompositions (Thanks to @Bodysoulspirit for requesting this!)

  • Fixed issue where the compiler would sometimes mix up nodes downstream of triggers in subcompositions in exported apps, leading to crashes (Thanks to @wmackwood for reporting this!)

  • Fixed issue where detaching a popover, closing the composition, then using macOS’s ‘Hide’ action would cause Vuo Editor to crash (Thanks to @prackvj for reporting this!)

  • Fixed crash when launching Vuo Editor with many subcompositions installed in the User Library (Thanks to @ops for reporting this!)

  • Added ability to close the node library by pressing ⎋ (Thanks to @Pianomatic for requesting this and to @Bodysoulspirit for reporting a related issue!)

  • Fixed issue where type converters were not offered when connecting a list to a single-value port (Thanks to @Bodysoulspirit and @kingluma for reporting this!)

  • Fixed issue where the Secondary Click with Two Fingers gesture wouldn’t always work (Thanks to @timwessman for reporting this!)

  • Fixed crash when connecting a cable to the left side of a type converter and changing the data type of that type converter (Thanks to @cremaschi for reporting this!)

  • Fixed some incorrect behavior and crashes when installing/uninstalling custom node sets that use generic types (Thanks to @dumski 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

  • Added ability to search the node library for nodes that adhere to a protocol (image filter, image generator, image transition)

  • Added ability to search the node library and canvas for subcompositions (subcomposition or source:.vuo), shaders (source:.fs), C-language nodes (source:.c), and custom precompiled nodes (source:.vuonode)

  • Added more search keywords for Select nodes

  • In exported macOS apps that use nodes available on certain macOS versions (e.g., Make Image from Web Page), added a property so that macOS shows an error dialog when launching the app on an incompatible macOS version (rather than letting the app crash)

  • Fixed occasional crash when cancelling a cable connection

  • 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)

  • Improved usability of lists of colors — when you expand a drawer, the colors now default to fully opaque (rather than fully transparent)

  • 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

  • Moved protocol example compositions higher in the Open Example menu, to make them easier to reach on small screens

  • The model node in the node documentation panel now shows a context menu when applicable (same as the row in the node library)

  • Fixed crash when attempting to specialize a port in a broken custom node

  • Enabled the “Re-fire Event” menu item in subcompositions when a parent composition is running

  • Fixed occasional crash when dragging a cable in a composition with many generic ports

  • Fixed issue where, after scrolling, the canvas would sometimes become unresponsive until the next scroll

  • Fixed issue where hidden cables were not visible while duplicating them with ⌥-drag

  • Fixed misleading highlighting during cable drags on list ports

  • Fixed subcompositions and shaders being incorrectly added to the “File > Open Recent” menu when opened from the canvas

  • Fixed port rendering glitch when dragging a cable that can’t be connected to a list drawer’s ports, but can be connected directly to the node

  • Fixed issue where changing a data+event cable to an event-only cable while connecting it to a new input port could leave a stranded collapsed typecast attached to the original input port. [#10854]

  • Fixed issue where nodes with a Window input might behave incorrectly after a live-editing reload

  • Fixed issue where, if multiple audio devices with the same model number are connected, the audio input/output device input editor would always match the first device with a given model number, rather than the actual selected device

  • Fixed occasional crash when editing an input port value shortly after a live-editing reload

  • Fixed issue where some enum (menu) input ports showed integer input editors when published

  • Improved undo/redo performance in compositions with many hidden cables

  • Improved formatting in the dialog reporting missing nodes

  • Fixed some menu item names to use Unicode ellipses per the macOS HIG

  • Vuo editor is now Notarized by Apple

Documentation and Examples

  • Example compositions
    • 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 “Show Text Shadow” (Thanks to @Bodysoulspirit for contributing this!)
    • Added “Show Mouse With Shadertoy” (Thanks to @pbourke for requesting this!)
    • Changed example composition color scheme to be more accessible to people with color-blindness
    • 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
    • Updated all example compositions to avoid using deprecated nodes and refresh ports, and to improve node and cable layout
    • Fixed broken Display Pet Adoptions Table example composition (the data disappeared from the original source)
    • Improved performance of the Move Beads On String example composition
  • Node documentation
    • Added a summary of each node set on https://doc.vuo.org/2.0.0/node/
    • Added documentation in the Image node set on searching for generator/transition protocol nodes
    • Reworded transform port descriptions to be easier to understand
    • Updated node and node set documentation on setting data types for generic ports
    • Clarified the documentation on text and output size for the Make Text Layer and Make Text Image nodes
    • Updated the recommended method for keeping text sharp in the Make Text Image documentation
    • On node set pages, alphabetized nodes by title (rather than class name)
  • Manual
    • Documented all the new features in Vuo 2.0 (whew.)
    • 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
    • Added a glossary to the Vuo manual
    • Added a diagram showing the difference between System, User, and Composition-Local libraries
    • Expanded the Vuo manual’s troubleshooting section to discuss thermal throttling
    • Improved documentation and examples of feedback loops
    • Documented the various kinds of search phrases supported by the node library and canvas search
    • Expanded documentation on troubleshooting nodes not showing up in node library search
    • Expanded and clarified the section on changeable data types, particularly the part about connecting cables
    • Fixed incorrect/outdated references to menu items
    • Fixed various typos, broken links, and broken formatting

Vuo Compiler and Runtime

  • Fixed issue where compositions would get stuck when they contain a subcomposition with a node that fires events without any outgoing cables (Thanks to @Mechanica for reporting this!)
  • 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 now provide the source code for Vuo editor
  • 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:
  • Reorganized 3D object and layer types:
    • Converted the VuoSceneObject, VuoMesh, VuoLayer, and VuoRenderedLayers types to opaque heap types, and added more getter/setter methods
    • The VuoMesh type is no longer exposed via the editor UI — when you create custom nodes, use VuoSceneObject ports instead
    • Removed the VuoSubmesh type — each VuoMesh is now just a single mesh
    • Added support for VuoMesh per-vertex colors
    • Reduced the memory requirements of VuoMesh vertex attributes:
      • Changed Positions and Normals from VuoPoint4d to 3 x float
      • Changed Texture Coordinates from VuoPoint4d to 2 x float
      • Removed Tangents and Bitangents, which are now calculated on-the-fly when needed
    • Converted parts of the VuoSceneObject struct into a union, which reduces memory size by about 15%
    • Changed VuoSceneObject so that only objects of type Group can have child objects
    • Changed VuoSceneObject_copy to increment the VuoMesh reference count, instead of making a copy
    • Replaced the overworked VuoSceneObject_make method with the simpler VuoSceneObject_makeMesh and VuoSceneObject_makeGroup 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
  • Added vuo-run option --stop-after=2s to run and automatically stop a composition after a certain amount of time
  • Added vuo-run option --repeat=42 to rebuild and rerun each of the selected compositions a certain number of times
  • Added vuo-run option --lldb to run the composition in LLDB
  • Changed the format of the port details menuItems key to be an array-of-strings-or-objects, since JSON objects aren’t guaranteed to preserve order
  • 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)
  • Added VuoListForeach method, to make list iteration easier.
  • 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
  • Fixed issue where VuoListCreateWithCount_*() didn’t retain the element passed to it
  • When compiling nodes and types, added compiler flag so that implicit declarations are errors (not merely warnings)
  • Improved reference-counting diagnostics
  • Improved compiler error messages

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

Changes between Vuo 2.0.0-beta4 and 2.0.0 {#changes-since-200beta4}

Built-in Nodes, Types, and Input Editors

  • Fixed issue where some 3D object filters leaked memory (Thanks to Giovanni Bombaci and @Scratchpole for reporting this!)
  • Added Convert Cubemap to Equirectangular (Thanks to @alexmitchellmus for contributing this!)
  • Added the ability for Receive Kinect Images to choose between receiving RGB or infrared images (Thanks to @marcorexo1 for requesting this!)
  • Added Transform Point and Transform Points (Thanks to @wmackwood for requesting this!)
  • Fixed issue where nonuniformly-scaled rectangle layers were blurry (Thanks to @Bodysoulspirit for reporting this!)
  • Fixed issue where compositions would get stuck when they contain a subcomposition with a node that fires events without any outgoing cables (Thanks to @Mechanica for reporting this!)
  • Changed the rotation order in Convert Equirectangular to Fisheye (Thanks to @pbourke for requesting this!)
  • Added Translate Image node (Thanks to @pbourke for contributing this!)
  • Fixed issue where some movies could cause Step Movie Frame to stop responding (Thanks to @cremaschi for reporting this!)
  • Modified Change Fullscreen Status so it moves non-fullscreen windows, too (Thanks to @pbourke for requesting this!)
  • Fixed issue where Make Image Layer (Stretched) had the wrong dimensions (Thanks to @Bodysoulspirit for reporting this!)
  • Added generic Is Populated node, replacing the old per-type Is [type] Populated nodes, and made it also work for shaders (Thanks to @Mechanica for requesting this!)
  • Fixed issue where using Change Fullscreen Status to change from one fullscreen to another would incorrectly go fullscreen on the original screen
  • Added more debug information for OSC exceptions
  • Added support in Make Lines Object, Make Line Strips Object, and Make Points Object for specifying per-vertex colors
  • Gave Convert Equirectangular to Fisheye a Width port (defaults to Auto)
  • Added Cubemap type and Make/Get nodes
  • Gave Make Cube the ability to take a cubemap as input
  • Fixed issue where some 3D object filters generated incorrect normals
  • Fixed possible crash when using USB HID nodes on macOS 10.15
  • Updated to Blackmagic SDK 11.5

Exporting Apps and Plugins

  • Added Project/Group/EffectSource/FxPlug labels to FxPlug Motion templates for easier navigation (Thanks to @funwithstuff for requesting this!)
  • Changed blur, outline, sharpen, and dilate nodes so they respect the FxPlug host’s playback quality (Thanks to @kingluma for requesting this!)
  • Added support for option parameters in FFGL plugins running in Resolume Avenue and Arena 7.0.3+
  • Fixed issue where Real and Color values were incorrect in FFGL plugins running in Resolume Avenue and Arena 7.0.3+

Vuo Editor

  • Fixed issue where quitting from the Dock with unsaved changes would close the window but not actually quit (Thanks to @prackvj for reporting this!)
  • Fixed hang when launching a new Vuo version with many subcompositions installed in the User Modules or System Modules folders (Thanks to @ops and @wmackwood for reporting this!)
  • Fixed crash when running a composition after opening and modifying (without saving) a separate GLSL shader (Thanks to @eseftel for reporting this!)
  • The model node in the node documentation panel now shows a context menu when applicable (same as the row in the node library)
  • Fixed crash when attempting to specialize a port in a broken custom node
  • In the “Change to” menu for deprecated nodes, the equivalent replacement node is now shown first in the list
  • Enabled the “Re-fire Event” menu item in subcompositions when a parent composition is running
  • Fixed misleading highlighting during cable drags on list ports
  • Removed some less-useful respecialization options in the menu presented after a cable drag
  • Fixed potential crash when attempting to restore documents after a prior crash
  • Fixed issue where a list drawer would be left stranded in the parent composition when a published list input was deleted from a subcomposition
  • Improved formatting in the dialog reporting missing nodes
  • Fixed some crashes when live-editing sub-sub-compositions
  • Fixed some menu item names to use Unicode ellipses per the macOS HIG
  • Fixed crash when attempting to create an instance of a custom node with a generic port when the custom node doesn’t include source code
  • Fixed crash when attempting to specialize a custom node with a generic port when the node’s source code isn’t bundled into a node set
  • Fixed issue where sometimes the composition wouldn’t come to the foreground after being launched from the editor
  • Fixed occasional crashes when saving a GLSL shader
  • Fixed hang when running a composition after editing one of its sub-sub-compositions

Documentation and Examples

  • Example compositions
    • Added “Show Text Shadow” (Thanks to @Bodysoulspirit for contributing this!)
    • Added “Show Mouse With Shadertoy” (Thanks to @pbourke for requesting this!)
    • Updated all example compositions to avoid using deprecated nodes and refresh ports, and to improve node and cable layout
  • Node documentation
    • Added documentation in the Image node set on searching for generator/transition protocol nodes
    • Reworded transform port descriptions to be easier to understand
    • Updated node and node set documentation on setting data types for generic ports
    • Clarified the documentation on text and output size for the Make Text Layer and Make Text Image nodes
    • Updated the recommended method for keeping text sharp in the Make Text Image documentation
  • Manual
    • Documented all the new features in Vuo 2.0 (whew.)
    • Improved documentation and examples of feedback loops
    • Documented the various kinds of search phrases supported by the node library and canvas search
    • Expanded documentation on troubleshooting nodes not showing up in node library search
    • Expanded and clarified the section on changeable data types, particularly the part about connecting cables
    • Fixed incorrect/outdated references to menu items

Source Code

  • We now provide the source code for Vuo editor

SDK

  • Improved compatibility with Xcode 11.3
  • Reduced framework size by 7 MB (3.7 MB compressed) compared to 2.0.0-beta4
  • Clarified debug log messages about which displays are connected to which GPUs
Version
2.0.0