vvvv gamma is a visual programming environment for .NET 8. It combines node-based patching with C# code generation, targeting Stride (3D engine) and .NET APIs. Programs are built by connecting nodes with links in a visual editor.
vvvv is a live programming environment — programs run continuously while you build them. Both visual patch edits and C# code changes take effect immediately without restarting. vvvv compiles C# source files itself via Roslyn into in-memory assemblies on every save.
.vl files — vvvv gamma documents (XML-based, version controlled)
.vl files
vvvv runs your program continuously while you edit it. There is no edit-compile-run cycle for patches and shaders. For C#, live reload depends on how the code is referenced.
.sdsl shader files always live-reload when saved
C# code can be integrated via source project reference or pre-compiled binary. The choice depends on project size and development phase.
Source project reference (live reload):
When a .vl document references a .csproj source project, vvvv compiles .cs files itself via Roslyn into in-memory assemblies. No dotnet build or external toolchain is involved.
Dispose() called on old instance
NodeContext)
Update() resumes on the next frame
Binary reference (no live reload):
When a .vl document references a pre-compiled DLL or NuGet package, the assembly is loaded once at startup. To pick up changes, you must rebuild the DLL externally (e.g., dotnet build) and restart vvvv. This workflow is common for larger projects and stable libraries where live reload is not needed.
[ProcessNode] attribute
[ProcessNode] attribute needed
+ works with int, float, Vector3, string, etc.
Spread connects to a single-value input, the node auto-iterates
| Use Patching | Use C# Code |
|---|---|
| Prototyping, data flow | Custom nodes, performance-critical code |
| Visual connections, UI composition | Complex algorithms |
| Real-time parameter tweaking | .NET library interop |
| Dataflow routing and spreading | Native/unmanaged resource management |
IChannel — observable value container
IChannel.Value — read/write the current value
Channel.IsValid() — check if connected
For C# channel integration patterns (IChannelHub, PublicChannelHelper, [CanBePublished]), see vvvv-channels.
| Type | C# Equivalent | Usage |
|---|---|---|
| Spread | ImmutableArray | vvvv's immutable collection |
| SpreadBuilder | ImmutableArray | Build spreads efficiently |
| Float32, Int32, etc. | float, int | Primitives |
| Vector2/3/4 | Stride.Core.Mathematics | Spatial math |
| Color4 | Stride.Core.Mathematics | RGBA color |
| Extension | Purpose |
|---|---|
| .vl | vvvv gamma documents (XML-based) |
| .sdsl | Stride shader files (SDSL language) |
| .cs | C# source files for custom nodes |
| .csproj | .NET project files |
| .nuspec | NuGet package spec |
vvvv's functionality extends through NuGet packages that bundle .vl documents, C# nodes, and shaders.
| Domain | Key Packages |
|---|---|
| 3D Rendering | VL.Stride (Stride engine), VL.Fuse (GPU visual programming) |
| 2D Rendering | VL.Skia, ImGui, Avalonia, CEF/HTML |
| Hardware I/O | DMX/Art-Net, ILDA lasers, depth cameras (Azure Kinect, ZED), robotics (KUKA, Spot), Ultraleap, LiDAR |
| Networking | OSC, MIDI, MQTT, Redis, WebSocket, HTTP, TCP/UDP, ZeroMQ, Modbus, Ableton Link |
| Computer Vision | OpenCV, MediaPipe, YOLO (v8–v11), ONNX Runtime |
| Audio | NAudio, VST hosting, SuperCollider bridge |
| General .NET | Any of 100,000+ standard NuGet packages via .csproj reference |
To add a package: reference it in your .vl document's Dependencies, or add a to your .csproj. See vvvv-dotnet for .csproj details.
// Detect if running as exported .exe vs editor
bool isExported = nodeContext.AppHost.IsExported;
// Register per-app singleton services
nodeContext.AppHost.Services.RegisterService(myService);
For detailed reference, see reference.md.
共 1 个版本