Table of Contents

vvvv gamma 2021.4.12

released on 06 12 22
Installer | Offline Installer

Fixes

  • Fixes LottiePlayer (Skia), now smoothly playing animations. Also added LottiePlayer (Framebased Skia) - forum
  • Fixes Synchronizer region causing an emit exception
  • This release resolves a couple of issues regardig runtime exceptions:
    • Pins and IO boxes turn pink in case deserialization fails - these errors were only visible in the log before
    • Compiler will add a warning to pins and IO boxes where it's known at compile time that deserialization will not work
    • There was a huge delay when pin-pointing the patch location where a runtime exception occurs - this is fixed now, the system should navigate to the location immediately
    • Should multiple exceptions occur in one frame, the system will now point the user to the first one
    • Some runtime exceptions in observable graphs were not shown at all
  • The following regressions introduced with the 2021.4.11 release have been addressed:
    • Open command on shaders wasn't working
    • Errors inside of shaders were not visible on a node
    • Double clicking the document tab to rename it should no longer lead to an exception
    • Creating instances dynamically (via CreateInstance) was sometimes crashing on generic types
  • Fixes Settings > Themes. Default and Custom themes are better separated - forum
  • Extensions & HDE widgets: updating fluently by default, optimized in helpbrowser learn section
  • Pins align with nodes and pads and BCPs
  • Safety net: Compile errors in compiler backend now lead to outdated objects. As a user, you clearly don't want to have a program running that doesn't reflect your latest changes
  • reactivated "press [TAB] to detach" messages on tooltips
  • minor improvement on grid visualization in patch

vvvv gamma 2021.4.11

released on 12 11 22
Installer | Offline Installer

New

  • You can now play Lottie files with Skia
  • You can now share screenshots of your work to our collective gallery. Use Ctrl+3.
  • You can now take screenshots of Skia and Stride renderers. Use Ctrl+2.
  • New command line option to specify the primary package folder via --nuget-path - forum
  • New command line option --stoppedonstartup to start vvvv without starting any user patches
  • One can now specify the supported border control points as well as what type constraint to apply on custom regions
  • Added Channel [Reactive] with lots of binding operators - e.g. for taking care of bidirectional communication between business logic and UI. Added a easy-to-use region: ForEach (Channel).
  • Added a KeepAlive [Resources] node. You can give it something and forget about it. Someone else can pick it up later on. Used it to keep the Helpbrowser visibility info alive in case of unplanned shutdown by the runtime.
  • Thanks to a new hotswap friendly target code, pressure on the garbage collector is reduced drastically, fixing lot's of glitches/dropouts while running inside of the patch editor. Exported apps are not affected by this change - forum
  • Major system update: No outdated code is allowed to run
  • Major system update: Hotswap now is more versatile & taking over more responsibility
  • EqualsCyclic now has an Epsilon pin
  • Replaces the "Middle click navigates to definition" with "Browsable packages" setting which gets applied by the Open command as well as the global search

Changes

  • IOBox for floating point numbers: setting the Precession now also caps the StepSize to not be finer than what the precision allows
  • IPs node now returns also Type of NetworkInterface
  • Executor node now allows to send input to a running process using the SendString node
  • Decons no longer throws out of bounds exception
  • Fine tuned bubbling of error messages. In the past one tiny error at the very heart of a bigger patch structure easily turned everything red. Finding that particular error was nearly impossible. We're now applying a different strategy, instead of letting errors flow to each corner of the system, we only let it flow upwards in the document structure. That means they can easily be found by switching to the definitions page of a document. On the application side we still generate an error, but that followup error will now bubble further as a simple warning making the user aware that there is an issue deeper inside.
  • Compile command (F4) will also trigger re-compilation of nested definitions in current canvas
  • API: HoveredElement & ActiveCanvasStream now make use of the newly introduced Channel type
  • More logging happening in the Log window

Fixes

  • Major: More robust runtime- regarding both user runtime & editor runtime, which is where the IDE and its extensions are running in; refined exception management & startup
  • CustomRegion API. Fixes and making sure language features work well together: auto conversion from T to M<T> now works on input BCPs
  • Fixing infamous "X is no X" errors
  • Compiler bug fix: in rare cases compiler tried to convert T to Monadic of T, where it wasn't assignment compatible; getting types correct for crossing links
  • Several Default Values related fixes (deeply generic constructed types, recursive generic patches, invocation by reflection API)
  • Several Serialization bug fixes (also for binary)
  • Some Love for Tooltips (fixing lags, crashes, hickups; more readable Object Viewer)
  • Tooltips and viewer-based ioboxes are more self-confident when the system is under heavy load. they at least try to get to 5 frames a second. if system isn't under heavy load trying to update 60 fps
  • Timings with fluent update rate and stable numbers
  • Values inspection: clock visualization in tooltip reflects the framerate of the mainloop
  • Fixes null pointer in VL.Audio if no audio devices is present
  • Fixes ReleaseAndDispose mode of SingleInstance region not working in exported apps - forum
  • Fixes & documents StoreSequence node
  • Fixes exception when creating a dictionary pin group and an internal equality check leading to endless compile loop - forum
  • Less SerializedDefaultValue attributes in target code
  • Fixes export no longer working after installing Visual Studio 17.3
  • Fixes dead lock when pause on error is enabled
  • Fixes seek time not being passed to image player when running without time sync - forum
  • Fixes regions created with the Surround command not being replaceable - forum
  • Fixes errors and warnings not being displayed inside of static operations
  • Observable regions ForEach, ForEachKeep are now catching exceptions on state siposal in the usual way: coloring a node pink (instead of having a dialogbox)
  • Faster HelpBrowser as it doesn't check for NeedsLayout each frame
  • Try region now also catching exceptions on Create and Dispose; added help patch "HowTo Catch Exceptions With Try Region"
  • After restarting the app tooltips and ioboxes reattach to new instance more reliably
  • Less irritations when showing up tooltips and nodebrowser
  • Got rid of flickering pink nodes & tooltips
  • Better adpative node errors
  • Fixing "middle click does something different than Open"
  • Compiler detail: type parameters loose the idea of "must be immutable"
  • Aligning nodes, pads and border control points indeed is aligning nodes, pads and border control points
  • Fixes backend not re-compiling changed documents which in turn lead to registration of outdated services

Stride

  • Improvements for 3d and 2d primitives, see PR1 and PR2 and PR3
  • InstancingSpreadComponent takes a broader range of collection types (without sacrificing performance)

vvvv gamma 2021.4.10

released on 20 07 22
Installer | Offline Installer

Fixes

  • Deserializing vl documents: fix for Path IOBoxes
  • Path IOBox export: don't add a final \ to the path if there was none before
  • Fix for a crash (when crawling for an asssembly)
  • Fixes backend crash in case an invalid type ended up in the output control points of a custom region (like Do)
  • Fixes lag when patching in larger documents
  • Hot fix for value inspection of generic fields
  • Fix for surround with Try, Comment (..), some links sometimes went red
  • Enforce decoding of SKImage in ImagePlayer node - fixes white flashes when used with JPEG
  • Fixes vvvv.exe not properly shutting down - forum

Changes

  • Wanderer (2d) start position is now initialized on Create
  • Wanderer (3d) has better defaults
  • ImagePlayer OnScanningComplete now only fires after first file loaded
  • When editing names/identifiers illegal characters can no longer be entered
  • Damper, Oscillator now mutating their internal functions in order to put less pressure on garbage collector. Added a Clone operation used in Example Oscillator cyclic that visualizes different snapshots of the internal functions.
  • Executor node now with consistent output

New

  • Compile local patch: press F4. In an ideal world this is not necessary as the compiler recompiles every patch that is affected indirectly by any of your changes. In the real world however you can press F4 if this didn't happen - e.g. a red node or pin that shouldn't be red.
  • added MutableArraySegment to advanced collection types

Stride

  • MeshModel and MeshesModel nodes now handle BoundingBox and BoundingSphere correctly
  • added experimental Text [Stride.Models] node for simply placing of text in 3d space
  • added ViewportGrid node
  • MeshSplit nodes can now handle meshes without IndexBuffer
  • added support for precompiled shaders

NodeBrowser

  • NodeBrowser now offering overloads instead of single pin choices. Every entry represents one node
  • Removed OK and Cancel buttons
  • Fix for intelligent node filtering: Spread<string> now connectible to BinarySearch (KeySelector)
  • Pin choices from external nodes also show up when External button isn't pressed (since user already committed to an external type)
  • Getting rid of a bug of unwanted automatic region selection (when choosing GroupBy, System.Linq is referenced)
  • Getting rid of a bug regarding too many pin choices (of type T when listing BinarySerach overloads)
  • Less pin choices pop up (equality check for A<T> == A<T> now working)
  • Single pin choice mode - which isn't the default any longer - now always picking the shortest node when possible. Open up the NodeBrowser again if you miss a pin.
  • Don't ask for pin-choice if there are only advanced overloads: we only have one non-adavnced Deserialize node. Select it automatically.
  • Got rid of a bug where certain nodes couldn't get created: System.Text.Json.JsonsSerializer: Serialize and Deserialize overloads

vvvv gamma 2021.4.9

released on 27 05 22
Installer | Offline Installer

Changes

  • Exporter now frees you from the need to always copy your assets while still developing

New

  • GetSlice for IReadOnlyList, recommeneded over Spread version for adavanced users
  • SetSlice For IList, recommeneded over Spread version for adavanced users
  • GetList same as GetSpread but for IReadOnlyList
  • GetBoundsTransformation to transform from one rectangle into another
  • Sample and Reflect for Ray and a help patch for them

Fixes

  • Exporter: export fix for asset paths in sub patches (with different document path)
  • Fixes crash when opening generic type forward with ungeneric CreateDefault op
  • Fixes FSPickler exception when sending spread of data from exported app to editor forum
  • Outboxes will unsubscribe on runtime stop forum
  • Fixes some seeking issues in VL.Video forum
  • Fixes naming of generated projects in release builds. For example we'll now correctly see VL.CoreLib.vl (and not VL.XML.vl)
  • Fixes exception pop-up when double clicking certain nodes forum
  • Fixes emit exception when a reference was removed and nodes couldn't get resolved anymore (leading to unconnected generic pins)
  • Fixes null pointer when reading empty file (FileReader nodes)

Skia

  • Adds FitToBounds to fit a path into any bounds

Stride

  • Fixes regression when exporting Stride applications - some models weren't loaded anymore forum
  • MouseRay comes with the ability to feed InputSource explicitly
  • added HowTo Reflect a Ray on nearest Sphere

vvvv gamma 2021.4.8

released on 29 03 22
Installer | Offline Installer

Fixes

  • Fixes region not showing error on unsupported border control points - forum
  • Fixes flooding of process nodes in stateless regions. The Create fragment must always be assigned, while for the other fragments it depends on whether they are the default fragment, pins are modified/connected etc.
  • No longer overwrite a document which is already open - forum
  • Fixes regression in target code when initializing fields (introduced in 2021.4.1) - process nodes no longer took part in the recursive check leading to stack overflows in certain patches
  • Fixes regression that WebRenderer (Stride) of VL.CEF would no longer load
  • Filters avoid NaN (OneEuro, Filter, Oscillator, Damper)

Changes

  • No longer show yellow socks on links going into Comment/Do/Try regions
  • Runtime will be stopped should the patch constructor crash
  • ManageProcess: added adjustments of Lifespan
  • cleanup for SurroundWith Menu

Stride

  • Fixes double disposal of input source which lead to subsequent crash in case a game controller was connected - github
  • Fixes crash when going fullscreen on second monitor with different DPI - github
  • Added Dilate (Color), Erode (Color) and UVDilate TextureFX filters
  • Added Checkerboard TextureFX source
  • MeshSplit nodes now have Update input
  • Fixes GlobalHelper add/remove logic
  • Fixes TextureFX MipMap generator for typeless textures
  • OrbitCamera now has Components and Children inputs
  • Adds Tracking Space input to VRDevice

vvvv gamma 2021.4.7

released on 26 02 22
Installer | Offline Installer

New

  • Now shipping with the VL.Audio pack
  • Adds SetCurrentFrameClock to override the frame clock used for the current thread
  • Adds EnumEntries node that returns a spread of entries for static enums

Fixes

  • Fixes Pipet node forum
  • Fixes tooltips and IO boxes in FUSE
  • Fixes exact adaptive implementation not getting selected in case its implementation is generic
  • Fixes ref-count initialization exception in Renderer (Offscreen) in case the Clear pin was set to false
  • Fixes access violation on shutdown
  • Fixes sorting when having intelligent node filtering enabled
  • User defined records will be emitted with proxies and therefor take part in hotswap - forum
  • KeyMouse Display extension now always visible on monitor with mouse interaction
  • Ping node now calls dispose correctly internally
  • Node browser: back button again working over empty areas. no fullscreen via double click. refreshes again after adding dependency
  • Splash screen movable, but not fullscreenable.
  • CustomRegion: fix for when an incoming link starts from a splicer

Changes

  • Resample nodes now take IReadOnlyList as input (was Spread)
  • Warn nodes come with options
  • S/R nodes come with Channel of type string
  • Moved some highlevel Mouse & Keyboard (...) nodes over to Skia

Stride

  • Fixes text input and click events - Elementa can now be used normally when rendered by SkiaRenderer

vvvv gamma 2021.4.6

released on 31 01 22
Installer | Offline Installer

New

  • Node browser can be configured through new setting to show connectable nodes only
  • Node browser now fades in, is scalable, movable, fullscreenable. Last size is remembered.
  • Adds new regions Using, Lock and Lock (Inter-process) and new node TempFile [IO] forum
    • Using ensure the disposal of resources connected to its inputs after it executed
    • Lock synchronizes access to a shared resource
    • Lock (Inter-process) synchronizes access to a shared resource across process boundaries
    • TempFile [IO] simply creates and provides a unique temp file
  • Allows to connect IReadOnlyListy<T> to AsReadOnlyMemory node
  • Splash Screen can be moved

Fixes

  • Several little fixes and more cleanups of the node browser.
  • Fixed issue with FirmataDevice node forum
  • Fixes value modifications on IO boxes potentially modifying the value upstream forum
  • Fixes runtime not always selecting the newest iteration of a patch
  • Fixes value tracing not working in static operations forum
  • Fixes value tracing when debugging tooltips
  • Fixes value tracing sometimes not working anymore after node doing an interface call
  • XmlWriter no longer writes BOM
  • Fixes potential crash when opening VL files from directories containing files the current user has no access to
  • Linking action and symbols now use same code path to determine whether two links are on the same moment forum
  • Tooltips: again fixes for missing or misleading values. We now should be able to guarantee that we stick to only one instance, even when the instances got created dynamically.
  • Tooltips: Simplification of the collection viewers
  • Trees: Bug Fix for BuildUp. When reaching max depth we don't traverse deeper, but also don't fail.
  • A little bit of love for the tree structure examples and the tree node viewer

Stride

  • Added Feedback TextureFX node
  • Added Circle, Rectangle, Polygon texture sources
  • Removed RampColor Filter (was duplicate of MapColor)
  • Removed Colorize Filter (Was duplicate of TriColor)
  • KeyPress and KeyBang had their functionality exchanged
  • Added PointerPoint (Split) node
  • Mouse node outputs Positon in World and MouseRay if a camera is connected. Position in World is the XY Position for Z=0. This is helpful for any type of 2D application. For 3d applications the mouse ray is the one you're looking for.

vvvv gamma 2021.4.5

released on 18 01 22
Installer | Offline Installer

New

  • Exporter allows to add an icon file for the exe

Changes

  • Friendlier node browser icons. You now can distinguish Records from Classes and Interfaces.
  • Custom regions: output border control points now can be read from any moment (aka many colorful links possible)

Fixes

  • Fixes assignment error not showing up on links into regions of process nodes
  • Fixes Assign menu showing subpatches of the sink instead of the source
  • Fixes pads inside of regions still not getting initialized as advertised in previous version forum
  • Fixes complete crash when opening Skia Slideshow help patch forum
  • Fixes stackoverflow when annotating IO box with IReadOnlyTree<T>
  • Fixes type inference not generating an error connecting T : IReadOnlyTree<T> to GPU<U>
  • Explicit interface implementation in target code didn't find user implementation in case the return type was a non-trivial super type of the user output
  • Tooltip viewer for data of type IReadOnlyTreeNode
  • Corelib: small cleanup regarding top level experimental nodes. some got moved, some got deleted -> node browser is less cluttered when enabling Experimental

vvvv gamma 2021.4.4

released on 12 01 22
Installer | Offline Installer

Breaking Change

  • The Tokenizer nodes have their "Objectify" delegate input removed. In many cases it was simply used with a default implementation, in which case the delegate is now obsolete and can simply be removed. In cases where the delegate was actually used, the patch will have to be slightly adapted.

Changes

  • Adds KeepAppAlive [System] node forum
  • Exposes missing "Edit Mode" pin of SceneTexture
  • Int3 is now non-advanced
  • Int2/3/4 nodes have their constructors and split nodes unified

Fixes

  • Ensures pads inside of regions get initialized with VL defaults forum
  • Fixes VL.CoreLib added twice as dependency to new documents
  • Fixes crash after modifying a definition's Summary/Remarks/Tags forum
  • Creating a process node by clicking “Node” in the nodebrowser or pins & pads: now checking for valid name
  • Fix for Delay (Linear)
  • Fixes an exception when replacing shader nodes
  • The BreakAtWidth node's internal cache region has its force pin disabled

vvvv gamma 2021.4.3

released on 22 12 21
Installer | Offline Installer

Changes

  • Adds TextureDecoder to Stride
  • Faster C# code generation. Generating the code for normal startup now takes ~21s (down from ~37s), generating code for Elementa is now ~11s (down from ~24s).
  • A process placed inside of a stateless patch will now produce a warning instead of an error. The warning will tell the user about the short life time of the process.
  • Do-region added (always executes)
  • Comment-region added (never executes)
  • Try-region added (allows to react on runtime errors programmatically)

Fixes

  • Fixes null pointer when interacting with external nodes
  • Fixes TextureEncoder returning new arrays every frame and fixes complete crash when saving textures in wrong format
  • Fixes regression that patches with output pin groups opened by editor (= debug code path get switched on) would cause emit exception forum
  • Fixes emit exception when using dictionary builder with apply pin forum
  • Fixes complete freeze when opening documents in quick succession
  • Connecting pins of type Gpu<T> to T inside of loops should work correctly now (used by FUSE)
  • Fixed an issue with the "New Extension.." menu entry

Custom Region API

  • now allows to reflect over incoming links that cross the region boundary
  • now allows to ask for whether the user patch has changed
  • Spreads returned by InputValues, Inputs, IncomingLinkValues and IncomingLinks got stabilized (same Spread instance if no slice changed)

vvvv gamma 2021.4.2

released on 07 12 21
Installer | Offline Installer

Fixes feedback in loading and saving of settings causing super slow startup from within Gamma Launcher

vvvv gamma 2021.4.1

released on 06 12 21
Installer | Offline Installer

New & Changes

  • Press Ctrl+3 to save the active patch as .svg file right next to its .vl document
  • Tooltips and IOBoxes: performance improvements and tweaks
  • In case the compiler crashes when loading documents, the resulting exception will be dumped in the console window.
  • No longer generate proxy classes for records - they shall be as lightweight as possible. The reasoning is that we don't patch inside of records that often. Since they usually pop up as leaves inside of object graphs, the performance impact of the proxy indirection layer can be quite severe.
  • Tuple and ValueTuple nodes are now named as such with Create/Split versions
  • The Gif recorder built into the Frames now produces higher quality and smaller files

Fixes

  • Fixes document loading crash in case a dependency contains an invalid file path (see forum)
  • Fixes collection editors crashing when displaying value other than Spread<Spread<T>> (see forum)
  • Regression: Fixes bang no longer working properly in heavy patches
  • Regression: Fixes canvas of newly created patch (Ctrl+P) not showing up in tabs
  • Regression: Fixes nodes drawing getting stuck in "not-executed" style
  • ArtNet (Sender) now also binds to 6454 port

Language

  • Fixes X<Y> not connectable to Optional<X<Y>> (see forum)

Skia

  • major internal paint- and layer-related rework leading to performance improvements, less memory usage, and a more stable frame rate.
  • added SetTextSize (InPixels) node
  • Group nodes now have a debug feature
  • Renderer: added Enable Keyboard Shortcuts pin
  • Renderer: added SetBounds operation with some options (in pixels/DIPs, netto/brutto size)
  • added experimental RenderWindow (Upcoming) allowing to specify the Bounds with a regular Rectangle
  • Offscreen renderer will throw an exception if called from the wrong thread
  • ImageReader now releases file once read

Stride

  • The export will throw an exception if a shader with the same name is seen multiple times
  • Added TextureEncoder node that returns the texture encoded in the specified filetype as a byte array

Video

  • Fixes Skia text rendering broken while playing video
  • Fixes crash when playing audio files

vvvv gamma 2021.4

released on 23 11 21
Installer | Offline Installer

New & Changes

  • Added a Hamburger menu for easy changing of settings and themes
  • Adds auto document reload feature. Must be enabled in the settings.
  • Added support for editor extensions
    • Introduces user and editor runtimes
    • Entry points of documents with the .HDE.vl extension will be run by the editor runtime where we can provide patch editor specific services.
    • The editor runtime uses a cooperative mainloop, it's resolution is not as good as the one from the user runtime. However it runs in the editor thread and won't be stopped by a F8 command. Apart form that it behaves the same as the user runtime so patching in it should feel natural.
    • Locally installed packages ending with .HDE will now be loaded by the editor. Allows to create packages solely for the editor.
  • Adds Restart command (F9) and editor extension restart (Shift + F9)
  • Couple of performance bottlenecks while patching have been addressed
  • Pin values can be cleared (set to null) when deleting the value with backspace and committing to it with enter
  • Simplified pin group keyboard shortcuts
    • Ctrl + +/- works again for nodes with only one input or output pin group (for example Decons)
  • Now shipping with VL.Video.MediaFoundation package including VideoIn and VideoPlayer nodes that return a texture
  • Methods marked with the Obsolete attribute will show up with a warning in VL
  • Untyped pins and pads now come with a warning if a type is needed
  • The compiler uses a different strategy which greatly reduces the compile and hotswap time in bigger projects. For details see discussion in the forums.

Language

  • Lifts all remaining restrictions on the This node. It can now be used in Create as well as in generic patches. For details see dicussion in the VL Repo.
  • Fields are written immediately inside of classes. For details see discussion in the VL Repo.
  • Optional Explicit Type Parameters added. For details see dicussion in the VL Repo.
  • Adds support for delegates other than Action and Func. For details see dicussion in the VL Repo.
    • For delegate types other than Action and Func pins are aligned by name
    • For Action and Func delegate types the pins are aligned by index to avoid a breaking change
    • The old code path for stateful regions is still in place (e.g. Func<TState> create, Func<TState, Tuple<TState, TOutput>> update). We can slowly get rid of it by replacing those regions with the new approach and writing converters naming the pins accordingly (remember the old system aligned the pins by index)
    • A node having a custom delegate type on one of its inputs results in a higher order region only
  • Adds support for monadic values (e.g. the GpuValue<T> of FUSE can be treated as such)
    • New MonadicAttribute attribute to mark types as monadic
    • Allows to connect T to M<T>
    • The value of a pin of type M<T> can be modified directly as long as an editor for T exists
    • Pins of type M<T> can have default values
  • Custom Regions API added. This allows to patch a stateful region with BorderControlPoints! See: ManageProcess for an example.

Core Lib

  • New and much simpler ManageProcess region with output border control points
  • New ForEach (Max) loop region taking the iteration count from the maximum of its inputs
  • Adds new Optional<T> type with serialization and editor support. An Optional<T> IO box always represent the HasValue state. The HasNoValue state can simply be achieved by not connecting at all.
  • Added a TypeOf node
  • LinearSpread now with a lot of more options, LinearSpread (Range) added
  • Added RandomSpread (4D)
  • Added GridSpread (2D/3D) nodes
  • Added a TempPath node
  • Added Determinant and ScalingVector to Matrix
  • Added option for clock and ImagePlayer synchronization
  • All operations on Memory<T> and ReadOnlyMemory<T> are now forwared
  • Makes FSPickler aware of proxies as well as VL type names - fixes binary compatibility issues between emitted code of editor and exported apps. There's also a new nuget package called VL.CoreLib.Backports available, which backports the type name awareness to 2021.3. This allows to send records between instances running on different versions.
  • Adds Deserialize (Binary ReadOnlyMemory) and makes Bson versions obsolete
  • Paths are made relative on serialization and absolute on deserialization. This is now done in the Path's regular serializer by determining the base path using the current node context. Fixes Spread<Path> not storing the paths relative, a SaveAs command will no longer change the relative paths and serializing a class or record containing paths will also make them relative and absolute again on deserialization.

Skia

  • Resize node is reworked internally, Output Size pin is defined as Int2 instead of Vector2, switched from class to process node. The old node is moved to Obsolete.
  • Resize node now using offscreen renderer - this improves the rendering performance of tooltips and IO boxes drastically (FPS going up from ~3 to stable 60)
  • New: Resize (Relative), Crop, Crop (Relative)
  • Added ImagePlayer node for .dds sequence playback
  • All rendering is now done with Direct3D11 using ANGLE
  • Renderer (Offscreen) is now hardware accelerated and no longer experimental, removed Renderer (Offscreen Accelerated)
  • All Skia renderers share the same graphics context per thread - fixes super expensive context switches
  • The default resource limit of a Skia graphics context has been increased from 96MB to 512MB
  • Adds GRContext node and type forward to give access to the graphics context on the current thread
  • The lifetime of the output image of the Renderer (Offscreen) is controlled by a Producing (RefCount) node, while nodes such as FrameDelay, S+H and HoldLatest use a Using (RefCount) node - that combination allows for easy feedback loops of Skia images without having to copy them.
  • Adds ToSkiaImage node, the R16G16B16A16F pixel format and whether the color channel is premultiplied with the alpha value

Stride

  • Now shipping with TextureFX: sources, filters, mixer, and utilities
  • New PostFX: Fog and Outline
  • Reworked Buffer and Texture nodes
  • All materials have ShaderFX inputs
  • Shader node factory for ShaderFX nodes
  • Shader nodes can have ShaderFX inputs
  • Materials can be extended with custom shaders
  • ShaderFX inputs of values and vectors can be connected directly to IOBoxes
  • Shaders get ViewSize, AspectRatio, Time and TimeStep automatically set by the runtime
  • High quality resize filters to scale textures
  • Many new shader utils and functions
  • ImagePlayer to play image sequences
  • TextureWindow for eas texture preview
  • Pipet node to sample texture pixels
  • BufferReadback for non-blocking buffer value download to the CPU
  • Mesh split nodes to read vertex data
  • Width and Height pins are replaced with one Int2 Size pin
  • Ambient occlusion works with an orthographic camera
  • Fixes for Spout sender and receiver
  • Stride windows move to the front on open
  • Experimental multiple viewports support
  • Experimental way to efficiently render from multiple perspectives into multiple textures
  • SkiaRenderer now uses ANGLE instead of WGL_NV_DX_interop2. Fixes rendering not working at all on AMD hardware.
  • Marks Gpu<T> as monadic unlocking features such as direct value manipulation and direct linking
  • Many small improvements and fixes
  • The register services method is only called when starting a patch, it will no longer be called while patching. This should save resources and make it much more predictable.
  • The node path is now made out of unique (and persistent) ids. Elements can be identified across sessions. The old APIs are still in place for compatibility reasons. To make use of the new ones one needs to adjust the patches making use of it.
  • Adds new nodes Using (RefCount) and Producing (RefCount) to reference count specific resources. FrameDelay, S+H and HoldLatest make use of the Using (RefCount) node. This for example allows to frame delay Skia images without having to clone them.
  • Less strict value deserialization - allows to seemingly switch between single values and vectors. For example when turning a float (+) (1f) into a Vector2 (+) the (1f) will be expanded to a (1f, 1f) instead of going to zero.
  • Adds extension methods IVLObject.TryGetPath and IVLObject.IsSupportedCollectionType (ported from VL.Elementa). The used traversal methods also support dictionaries now.

Fixes

  • Fixes null reference exception when calling GetFiles/GetDirectories/GetDescendants on empty path object (could be backported)
  • Fixes some emit crashes when using special character or reserved keywords
  • Fixes renaming of various elements. The rename will also only be applied after the user commits to it and not on every keystroke.
  • Export will also work if runtime is stopped
  • Reduces the amount of generated ad-hoc projects - fixes cases where shaders would overlap on export
  • Fixes same shaders subfolder being copied to multiple exported projects
  • Exporter will now add a package reference to the original nuget in case it generates the project belonging to that same package - ensures that all the build targets of the package get picked up / files get copied to the output folder
  • Fixes serializer not preserving the runtime type of the root element
  • Fixes slice states not getting disposed if used in nested loop and Keep is false in first frame
  • Fixes emit exception when the content of an adaptive implementation was inlined
  • Documents can now be fully reloaded without the compiler crashing
  • Render Windows that are "Bound To Document" will now always close the right document, even if the windows got wrapped in a helper node.
  • Definitions in application patch get same categorization as the definitions in the definitions patch.
  • Link tooltip comes with a delay as specified in the settings (if warning or error or Ctrl or Space)
  • Fixes SKImageFilter and SKColorFilter tooltips
  • Refinements on TextureViewer potentially showing the texture info before the content becomes available.
  • Pinned tooltips are now less verbose
  • Fixes PerspectiveLookAtRect. Scaling part now moved to ProjectionMatrix making a LookAtRectCam work with more shaders.
  • Fixes crash when opening VL.Devices.uEye and not having VL.Elementa installed
  • Fixes crash when loading documents with network paths (like file://) stored inside IO boxes
  • Fixes identifiers not being escaped on export (like switch -> @switch, false -> @false etc.)
  • Fixes error on link not visible in case it had a warning as well
  • Fixes tags of factory nodes not getting picked up by system
  • Fixes value tracing of process state output - was only working when connected
  • Fixes crash when deserializing object graphs using generic patched types (was exposed by VL.Fuse.Control)
  • Fixes experimental and obsolete warnings not showing up on plugins
  • Fixes UI crash when opening a patch where the type of an iobox which stored min and max values changed
  • Fixes help browser not reacting on first click
  • Fixes backend crash after larger patch modifications and subsequent recompile
  • Assemblies of newer frameworks (like net5 or netstandard 2.1) will no longer get picked up, avoiding confusion like here in the vvvv forums.