Table of Contents

vvvv gamma 5.2

released on 09 06 23
Installer | Offline Installer

New

  • Ctrl + Shift + D duplicates the current selection including any incoming links. The newly pasted nodes will have the same connections as the original ones.
  • Copy & paste now copies over relevant dependencies.
  • Channel supports bulk changes via BeginChange (help patch included)
  • Refined Channel hot-swapping
  • VL.IO.MIDI now coming with Global Channel Binding support
  • Added Optional<T> hot-swapping
  • Introduces a new error: "You may not read from a pad on create" Helps to avoid a certain mistake.

Fixes

  • MeshSplit nodes now work correctly with meshes coming from multimesh models
  • Copy & paste bug fix: links assigned to create weren't on create after pasting them
  • Replace With -> IOBox removes Slot (command accessible via context menu on pad)
  • Fixes assembly load issue when using WinRT APIs
  • Fixes .HDE.vl extension files not getting recognized as pre-compiled (didn't show as pre-compiled)
  • Fixes regression in 5.0 that patches would show up twice in "Also found in" section of help browser
  • Fixes regression in 5.0 that on disconnect of fragmented M<T> pins, the fragment wouldn't get called one last time with default(M<T>)
  • Fixes UDP nodes crashing when passing an invalid IP address (regression introduced in 5.0)
  • Fix for a Pause-on-Startup bug
  • Solution explorer reports exceptions into log, rather than killing the app

ImGui

  • Fixes object editor not working properly on enums
  • Improved labeling system: You don't need to worry about labels. vvvv ImGui wrapper generates YourLabel##UniqueId labels for you.

vvvv gamma 5.1

released on 24 05 23
Installer | Offline Installer

Changes

  • OSCClient can now send messages to multiple targets at the same time
  • OSCClient can now receive messages back on the port it sent messages (useful e.g. when talking to SuperCollider)
  • Channels got more versatile. Every Channel<T> now can be cast to a Channel<Object (and back if you know T). The ChannelOfObject property now is implemented by the same channel increasing performance for those cases where you talk to channels in a non-generic way.
  • Channels now can set an author when writing to them. By checking LatestAuthor you can ignore messages that were sent by a certain author. (This way you can avoid "talking to yourself")
  • Introducing Global Channels
    • These are Channels that can be looked up by a "Channel Path" (which is a plain string)
    • A GlobalChannel node gives dynamic access to them. You feed the Channel Path at runtime
    • They also end up as statically typed nodes inside GlobalChannels category
    • Modules can bind to them. Those are in active development (e.g. VL.IO.MIDI)
    • A "Global Channels Browser" window gives an overview over all global channels and their bindings. In help browser: search for "global"
  • Managed slots get disposed in reverse execution order of how they got constructed. For example two process nodes A and B with a link from A to B, on Dispose B will be disposed before A.
  • New node Select (ByPath Dynamic) which infers the type of the output channel from the property the given path points to - forum
  • New advanced region ReactOnMainThread [Reactive] calls its region body on the main thread, even if the incoming Observable fires from a different thread. Node ToMainThread [Reactive] outputs an observable which runs on the main thread. Those make sense after a Delay [Reactive] or a Throttle [Reactive] as they don't fire in the main thread. (help patch available)
  • New node StartEagerly [Reactive] turns a Channel into an Observable by starting with the current Channel value. This gets pushed on subscribe (as known from BehaviorSubjects)
  • Hot-Swap support for HashSet<T>, ConcurrentDictionary<T>, List<T> added
  • Remove [Spread] added.
  • GetSlice (Channel) added. It easily bi-directionally translates an index with the related entry in a spread of entries. (help patch available)
  • Added Channel tooltip, which always shows current value. Up to now observable tooltip was stepping in, which only starts showing a value after the first observed push
  • Added tooltip for Optional<T>

Fixes

  • The --editable-packages command line argument wasn't picked up when fed via args.txt
  • Fixes a few emit exceptions (for example forum)
  • Fixes Ctrl + T command on pads and when used with explicit type parameters
  • Fixes regression in 5.0 that solution explorer would no longer navigate to a selected type forward
  • Fixes rounding errors when dragging IO box numbers
  • Fixes IO boxes no longer showing any values after their type changed
  • Fixes compiler crash when patching inside of a package. The crash happended when patching inside of a package on a document which wasn't referenced by the package root document.
  • Fixes compiler crash when generic interface inherits from another generic interface and type arguments can't be infered. We'll instead see now a proper error message for this specific case.
  • Fixes assembly load failures when referencing them via path.
  • Fixes parsing of type names using a version string during runtime.
  • Fixes node factories from C# project references not getting picked up
  • Fixes pin types and namings of MutableObservableCollection
  • Fixes Select (ByPath) for when the source datatype changes: Swappable objects renew their state on the fly when accessed via VLPropertyInfo.GetValue.

Stride

  • Fixes OpenXR not working at all due to a dll load issue
  • Fixes crash when disabling the VR system under OpenXR
  • Fixes literals inside of attributes not being picked up in case they use numeric suffixes. For example [Default(2f)] was not interpreted correctly.

ImGui

  • Fixes ImGuiInputTextFlags.EnterReturnsTrue not working on Input widgets
  • Object editor uses ImGuiInputTextFlags.EnterReturnsTrue on its text and value editors
  • Fixes docking layout not getting restored by LoadIniSettingsFromMemory & LoadIniSettingsFromDisk
  • Fixes access violation when disposing patches using LayerWidget. The system crashed in case one called Update and Dispose on a patch using a LayerWidget in the same frame.
  • Fixes access violation when placing table specific command nodes outside of a Table
  • Popup, Popup (Modal), Window, CollapsingHeader - which all have a Visible input channel - now can be set to short-lived: region body gets disposed on hide, and recreated on show

vvvv gamma 5.0

released on 19 04 23
Installer | Offline Installer

New

  • Update to .NET 6
  • Improved startup time and memory usage due to packages now being read-only
  • New commandline argument: --editable-packages to opt-out of the read-only default for individual packages
  • All libraries are open source: Introducing VL.StandardLibs
  • C# projects can be referenced directly, allowing for a hybrid visual/textual workflow
  • Support for "new" nuget packages
  • Exported applications are of smaller size, they no longer have a dependency on VL.Lang
  • Exporter stores its settings in a *.props file. That file (and/or an optional *.targets file) can be used to define custom actions on export
  • ImGui library added, Channels refined for easy data binding
  • Lock regions added
  • HDE API: added ActiveLiveCanvasStream
  • New command (Ctrl + Shift + K) to create getters and setters (accessors) for selected pads in one go
  • Nodes from external files (shaders, csproj) now have "Show in Explorer" entry in their context menu
  • Adds new package VL.TestFramework which can be used by external libraries to test their documents
  • Instances of generic types using adaptive nodes can get created dynamically. Used by AlchemX / Kairos.
  • New > C# File and New > Shader dialogs for easy C# / Shader creation.
  • Helpbrowser's Learn tab can be set to open by default.

Changes

  • Exported apps no longer have a lib subfolder where all the assemblies are. It was technically not possible to support this directory layout anylonger
  • Improved SymbolFinder
    • Works for documents from read-only packages, when the "Browsable packages" setting is activated
    • Improved search result ordering
    • Clarity: In second line, now shows package, then file
  • Tooltip shows file path of shaders
  • A Path is now serialized relative to the entry point and not the document where the call to Serialize is made
  • Simplified adaptive node error message
  • VL.EditingFramework is split into VL.EditingFramework and only Skia related VL.EditingFramework.Skia

Fixes

  • Improvements regarding stability and playfulness on hotswap, package compilation, exception handling
  • Nodebrowser: got rid of some glitches
  • Opening recently saved documents should no longer showup as unsaved
  • Fixes new installed HDE extensions not getting picked up
  • Bool IOBox: Fixes "bang iobox doesn't light up consistently when triggered from input".
  • Fixes Elementa tooltips no longer working (regression introduced in 2021.4.11)
  • Some Skia performance improvements
  • Fixes UDP nodes opening socket in first frame even though enabled == false
  • Fixes DatagramSender node not completing its send tasks if incoming observable doesn't complete
  • ResampleBSpline nodes: Closed mode fixed
  • Fix for WithValueFromExpression, used by Channel.Select (ByPath)
  • Open node command grayed out if stemming from a node factory
  • Skia:
    • ImageWriter keeps jpg/jpeg extension of the path if Jpeg format is selected
    • fixes LottiePlayer and adds LottiePlayer (FrameBased)

Stride

  • Update to Stride 4.1
  • Adds support for OpenXR
  • Stride now uses the more modern flip model for its present path
  • Increases the default of read back nodes from 3 to 5 frames and adds a runtime warning in case the GPU gets stalled by one of these nodes
  • Fixes default value handling of compute shader inputs
  • Fixes newly created shaders not showing up if shaders folder wasn't present yet
  • Performance improvements for the ImagePlayer nodes
    • No more white flashes, because the frame to be displayed will be waited upon
    • Better resource utilization - the default pre-load count of 2 now leads to correct results
    • Increases the read buffer size from 128 KB to 8 MB thereby massivly reducing overall disk usage
  • Adds new Tesselation feature
  • Adds FlatCamera node
  • Fixes double transformation of AxisAndGrid
  • Fixes Stride.Redenring.Within... nodes
  • Insert and Insert (UV) are added to the Stride.Texture.Utils