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 withdefault(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 aChannel<Object
(and back if you knowT
). TheChannelOfObject
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. NodeToMainThread [Reactive]
outputs an observable which runs on the main thread. Those make sense after aDelay [Reactive]
or aThrottle [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 onInput
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
andNew > 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 toSerialize
is made - Simplified adaptive node error message
VL.EditingFramework
is split intoVL.EditingFramework
and only Skia relatedVL.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 addsLottiePlayer (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
andInsert (UV)
are added to the Stride.Texture.Utils