vvvv gamma 5.2
released on 09 06 23
- 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
- Introduces a new error: "You may not read from a pad on create" Helps to avoid a certain mistake.
- 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
- 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
- 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
- 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
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)
GlobalChannel node gives dynamic access to them. You feed the Channel Path at runtime
- They also end up as statically typed nodes inside
- 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
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)
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
--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
Select (ByPath) for when the source datatype changes: Swappable objects renew their state on the fly when accessed via VLPropertyInfo.GetValue.
- 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.
ImGuiInputTextFlags.EnterReturnsTrue not working on
- Object editor uses
ImGuiInputTextFlags.EnterReturnsTrue on its text and value editors
- Fixes docking layout not getting restored by
- 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
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
- 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.
Learn tab can be set to open by default.
- 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
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
- 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
ImageWriter keeps jpg/jpeg extension of the path if Jpeg format is selected
LottiePlayer and adds
- 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
- 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 (UV) are added to the Stride.Texture.Utils