跳到主要内容

6.x

源文档地址

vvvv gamma 6.7

2025 年 1 月 7 日发布 安装包 | 离线安装包

修复

  • 保存对被引用 C# 项目(.csproj)的改动后,相关节点重新会自动更新了(6.5 引入的回归)
  • 通过向导新建 C# 文件时,自动生成的文件名不再带空格;加进 .csproj 的是 “Utils” 而不是 “.Utils”;并确保不会添加多余的 .csproj 文件
  • 最近一次 .NET 更新之后,某些系统上导出会失败
  • 最近一次 .NET 更新之后,被引用的 Stride 项目加载失败 —— 论坛

vvvv gamma 6.6

2024 年 7 月 2 日发布 安装包 | 离线安装包

修复

  • Select (ByPath):现在能处理数组了 —— 论坛
  • ToChannel 节点现在可以被强制推送「没有变化的值」—— 论坛
  • Kairos 的停靠在 6.5 坏掉了:把 ImGui (Version 1) [Graphics.Skia.Layer] 加为废弃节点,并加了转换器。这是为了确保 Kairos 1.1.10 仍按预期工作。
  • 修复了 MonoFlop (FrameBased)。问题是:开着 “Retriggerable” 时,它返回 true 的时间会比指定的多一帧。加了转换器以免弄坏已有草图。
  • 修复:对象编辑器里开着 Spread 时 ImGui 标签页切不动 —— 论坛
  • VL 文档反序列化:加了处理非整数位置的能力。这样以后改格式时不会把用户锁死在某一个版本上。
  • 修复了常量 Pad 上的值编辑器失效的问题(6.0 引入的回归)
  • 修复了动态枚举的警告出现在已连接针脚上的问题
  • 修复了新建的、值无效的动态枚举 IOBox 没有相应地渲染出来
  • 修复了深层嵌套草图层级里针脚的存在状态不正确更新的问题
  • 修复了交叉连线的 Pad 出现在参数列表里(__slot__ID)的问题。它们不再被序列化,也不再出现在对象编辑器(以及其他基于反射的工具)里。
  • 修复了草图里枚举弹出层 z 序不正确的问题 —— 论坛 论坛 论坛
  • 通过节点浏览器创建的边框现在出现在正确的位置 —— 论坛
  • 修复了定义节点上的标签可能被无意编辑的问题 —— 论坛
  • TryParse (String) 现在在输入为 NULL 时返回 false

新增

  • 改变 IOBox/注释字号的快捷键:Alt + 1Alt + 6 —— 论坛
  • 动态枚举的 C# 模板现在也演示了 Tags 的用法
  • 加了 OneSnapshotPerFrame。这样你就能让一个 channel 安静下来
  • 给 ClockSyncer 加了调试输出

节点库

Stride

  • TextureWriter 现在在渲染时保存文件 —— 论坛

ImGui

  • 修复了 6.5 引入的一处回归,它让停靠没有按宣称的那样工作。窗口会立刻脱离停靠,移动它们时也有些奇怪的反馈。
  • 修复了停靠一旦启用就关不掉的问题
  • 与停靠和全屏窗口相关的改动:
    • 启用停靠后不再有全屏窗口。任何不被 Window 包住的内容都会落进 Debug 窗口。屏幕充当停靠空间。
    • 启用停靠但没有全屏窗口,意味着你没法把窗口停靠到屏幕边缘。只有窗口本身可以互相停靠。
    • 启用全屏时的停靠不再绘制背景。

ImGui.Stride

  • 修复了即使没有控件要渲染,也会冒出一个空 Debug 窗口的问题
  • 修复了小键盘回车键不起作用

vvvv gamma 6.5

2024 年 6 月 12 日发布 安装包 | 离线安装包

变动

  • IOBox 里被裁掉的值现在显示一个指示符,而不是在值末尾加省略号
  • 重新加载文档时采用不那么激进的失效策略。此前只要依赖列表里有任何变化,就会让整个文档图失效;现在只有在添加或移除了转发依赖时才这么做。
  • 更好的 C# record 支持
    • 我们的符号会把它们识别为不可变
    • WithValueByPath 会正确地克隆它们(也就是 with 表达式会做的事)
    • 加了序列化它们的基本支持
  • Select (ByPath) 的警告更精确了
  • 允许在主 Application 草图里用上 Dispose:也就是应用关闭时该做什么
  • DynamicEnum 模板给它的 Definition 加了 CreateDefault,让人更容易在草图里访问它的方法
  • 应用导出器加了 Troubleshooting 按钮,指向灰皮书里相应的那一页

修复

  • Pad 编辑器在被上游连上时会保留自己的设置 —— 论坛
  • 修复了 CollectionEditor 的 EntryIndex 的布局问题 —— 论坛
  • 修复了在草图里改值时界面可能出现的卡顿/短暂冻结 —— 论坛
  • 修复了 6.4 引入的一处回归:从 Optional<T> 创建 IOBox 时系统没有取 T
  • 修复了 6.4 引入的一处回归:带未连接 Delegate1In1Out 类型针脚的 Fuse 草图会崩溃
  • 修复了 6.0 引入的 TryGetValueByPath 的几处回归
    • 最平凡的情形下它抛类型转换异常,而不是返回 false
    • 路径解析不了时不返回用户提供的默认值
  • 修复了在上下文内粘贴(Ctrl + Shift + D)时 Pad 的入线没有被一并复制
  • NodeReference 现在既存下用户的选择,也存下找到的符号。这些信息永远不会被系统改动。重构文档或编辑只读包不会再弄坏你的草图,git 里的干扰也更少。
  • 修复了导致鼠标指针消失的一处界面小毛病
  • 修复了导出代码里针脚组默认值的不一致 —— 论坛
  • 修复了 6.4 引入的新计时器里的一些不一致
  • 修复了仓库列表里有损坏的源码包时的启动崩溃
  • 修复了 DefaultValueAttribute 在 C# 输入参数上没被拾取的问题
  • Damper 重新能处理颜色了

节点库

Audio

  • 引用 VL.Audio 1.8.2,修复了导出不工作的问题

视频

  • 修复了 VideoIn 节点被停用时不释放设备的问题
  • 修复了 VideoSourceToImageVideoSourceToTexture 在切换视频源后不释放最后收到的帧

Stride

  • 修复了 #include "file.hlsl" 完全不起作用的问题

ImGui

  • 修复了在循环里使用 TreeNode 且没接 channel 时的折叠状态。以 channel 为输入的控件,若那个 channel 是系统生成的,就不再往里写。这确保内部状态不会在所有接到同一个系统生成 channel 的实例之间共享。
  • 修复了重复销毁 ImGui 节点时的硬崩溃
  • 加了 IsKeyDownIsKeyPressedIsKeyReleased 节点来处理键盘输入

MessagePack

  • 重新加回了无类型对象格式化器 —— 此前的版本里 UnitIDynamicEnum 这类对象就已经在用了
  • 给动态枚举加了更好的格式化器(它们其实就是字符串)

vvvv gamma 6.4

2024 年 5 月 27 日发布 安装包 | 离线安装包

新增

  • 改进了自动转换:允许把 T1 连到 M<T2>,只要 T1T2 的子类型
  • 停用了 Channel<Channel (Ungeneric)> 的自动提升
  • 加了一种对资源更友好的计时器实现,可以通过关掉新设置 “High Precision Timer” 来选用

变动

  • C# 生成的 record Deconstruct 方法现在作为 Split 导入

修复

  • 修复了 GlobalChannel 节点因类型不对而想发警告时抛空异常
  • 带 Spread 的 IOBox:修复了增加编辑器数量时 CollectionEditor 没有把设置应用到新编辑器上 —— 论坛
  • 注释区块不再发出警告或错误
  • Cache 区块:修复了处理接口和 Dispose 时的一处罕见崩溃
  • TypeRegistry.GetTypeByName 修复。程序集扫描没有在正确的时机触发
  • 6.0 引入的 IStartup.Configure 没有按宣称的那样工作
  • 修复了把 Object 连到 Optional<T> 时的运行时崩溃(CastException)—— 论坛
  • 修复了在 Spread 编辑器里使用时 bang 会卡住的问题 —— 论坛
  • ObjectEditor:条目变化时更新 DynamicEnumEditor

节点库

  • 随附 VL.IO.OSC 1.1.3

Stride

  • 修复了 SkiaRenderer 在 Notify 调用期间没有传播正确的变换 —— github

MessagePack

  • 修复了无类型序列化。比如 Deserialize<object>(Serialize<object>(X)) 此前不工作,序列化「含有抽象类型参数的类」也是坏的。
  • 加了对 NonSerialized 特性的支持,并加了 SKTypeface 格式化器
  • 允许序列化 SkiaPaint 对象
  • VLObject 序列化器的一些性能改进

vvvv gamma 6.3

2024 年 5 月 3 日发布 安装包 | 离线安装包

新增

  • DynamicEnum 的 C# 模板,其条目可以通过草图改动
  • Contains (String) 加了一个新重载,带 Comparison Type 枚举,允许大小写不敏感的比较

变动

  • SaveAll 命令现在只保存真有用户改动的文档 —— 论坛

修复

  • 当输出类型为 WinExe 时,确保导出的入口点项目里设了 UseWindowsForms —— 论坛
  • 修复了 Spread 化的 press/bang IOBox 不再正常工作。6.0 引入的回归 —— 论坛
  • 修复了 6.0 引入的 ForEach [Reactive] 的一处回归 —— 论坛
  • VL.IO.Midi:修复了 ControllerState 节点对通道变化响应不正确的问题 —— 论坛
  • VL.IO.ArtNet:重做以修复两个问题:论坛论坛
  • VL.Audio:修复了音频配置界面在导出里不工作的回归 —— 论坛
  • VL.Pipette.HDE:在 6.x 上重新能用了 —— 论坛
  • 修复了日志窗口里的一处过滤 bug

Skia

  • 加了 ImageWriter (Async)

Stride

  • Stride 升到 4.2.0.2121
  • 加了 Passthrough [VirtualReality] 节点来控制透视功能

vvvv gamma 6.2

2024 年 4 月 11 日发布 安装包 | 离线安装包

修复了我们在 6.1 引入的一处回归:string 或 color 类型的 Spread IOBox 在保存后会变大

vvvv gamma 6.1

2024 年 4 月 11 日发布

变动

  • 选中多个节点时按 F1 现在会打开帮助面板 —— 论坛
  • VL.IO.OSC:加了新的 Unpack 节点,以便实现非 udp 的接收方
  • 自定义区块现在带上了 Create、Update 和 Dispose

修复

  • 修复了区块内部、只连到外层草图的输出盒不显示任何值 —— 论坛
  • 修复了检查器里的一处错别字
  • 修复了 “HowTo Use Configuration” 帮助文档

6.0 引入的回归

  • 修复了 FUSE 针脚的值不再存进 vl 文档 —— 论坛
  • 修复了打出来的泛化类型的序列化
  • 修复了关闭 Observable 值的提示框时的崩溃 —— 论坛
  • 修复了 ImGui 的两处回归,一处让可滚动内容出现渲染毛病,另一处弄坏了 Kairos Compositor

vvvv gamma 6.0

2024 年 4 月 2 日发布 安装包 | 离线安装包

跳到节点库的变动

vvvv 本身 —— HDE 与运行时

新增

  • 升级到 .NET 8.0
  • 加了节点检查器
  • 加了新的调试视图:构建结果、应用健康和日志
  • 加了命令行选项 --log,把日志记到文件(%UserProfile%\Documents\vvvv\gamma\vvvv.log
  • 加了对 Configuration(英文)的支持

变动

  • 改动针脚和 Pad 里的值不再需要一次编译,玩起来更顺了
  • 从 IOBox、Pad 或控制点起手画连线时更容易画对了 —— 论坛
  • 草图编辑器与节点浏览器:打草图的速度提升了。对触控板和数位板的支持更好了。
    • 针脚、Pad 和控制点的连接口更容易点中,同时仍确保短连线和节点也能交互
    • 把视图空间和世界空间的做法结合起来。连线和数据枢纽按一个经过优化的光标尺寸(视图空间)来拾取;与此独立地,数据枢纽现在可以有那块扩展的世界空间交互区。这样一来,所有缩放层级都能同时得到两种空间的好处
    • 给不喜欢中键的人:要在连线末端创建 IOBox,双击、选 IOBox,就能得到类型正确的 IOBox
    • 画连线也支持拖放手势。可以放在区块边栏、已有的数据枢纽和空白草图区域上。
    • 「不精确」的双击会打开节点浏览器
  • 优化了连线的自动分段。此前有时只能得到难看的连线,有时整张草图完全没法读。画线时光标会提示你能连进哪些草图区域。现在设置里可以关掉连线自动分段。
  • 节点浏览器会在结果里高亮搜索文字
  • 搜索可连接节点的节点浏览器:
    • 更快,更相关的结果排在最前。例如:
      • 从一个 GPU<RGBA> 类型的输入针脚起手向上游连线:输出 RGBA 的节点紧跟在输出 GPU<RGBA> 的节点之后
      • 从 RootScene 起手向下游连线:会看到 SceneWindow、SceneTexture
    • 候选项带完整的目录路径 → 修复了 TransformSRT 的问题 —— 论坛
    • 候选项里的目录也能被搜到
    • 富文本候选项:把目录调灰以便阅读
    • 节点浏览器允许你随时进出「可连接节点」模式
    • 往连线里插入节点时也支持该模式,会检查输入输出的可连接性
  • 优化了复制粘贴逻辑:会在目标草图里设好对包的引用
  • Ctrl + T 让 HDE 窗口置顶
  • 类型标注:允许输入列表里没有的类型
  • 草图编辑器:允许用右键拖动和空格+左键拖动两种方式平移 —— 哪怕正在画连线
  • 出错时草图浏览器和文档菜单现在会标红
  • 统一了草图编辑器、扩展和渲染器之间的快捷键处理
    • 所有渲染窗口都会调用来自草图编辑器(Quad 菜单)的全局命令。用户可以用已有的 “Enabled Shortcuts” 针脚退出这一行为。
    • 所有渲染窗口现在都接受一个可选的 ICommandList。在那里定义的任何命令都优先于系统命令。
    • 命令列表可以用新的 VL.Core.Commands 包来创建
  • 扩展的字号在设置里定义
  • 状态输出针脚默认是否可见略有变化:除了 Record 上的 get/split Operation 之外,这个针脚一律可见
  • 一个节点的所有针脚(隐藏的和可选的)现在都存进模型。这让节点库开发者可以隐藏某些针脚但仍用它们存数据。比如新建 Renderer 上的 Bounds 输入现在默认是隐藏的。
  • 强制 apply 针脚(SetReset 等)默认用 false,但 Update 不这样。带强制 apply 针脚的片段现在放在 Update 上。这修复了 LFOCounter 这类节点长期存在的可读性和易用性问题 —— 它们此前在 Reset 这类针脚上显示 true
  • 节点替换命令在有简单解法时会重命名针脚。比如把一个参数 getter 换成另一个,不会再得到一个写着 “Pin X does not exist on Y” 的红针脚。
  • 去掉了创建针脚时那些魔法般的改名。基本上就是让编译器去判断一个针脚是否有效/是否该报「已存在」的错。
  • 由重命名动作新建出来的针脚和槽,会从原件复制元数据(类型、值、特性等)。
  • 我们的深色主题现在也会把窗口标题栏变暗(只在 Windows 10 及以上有效)。
  • 新的序列化选项
    • 多亏 https://github.com/vvvv/VL.StandardLibs/pull/664 ,我们现在能与 MessagePack 互相序列化。新节点在预装的 VL.Serialization.MessagePack 包里。
    • 上面那个 PR 还带来了朴素简单的二进制序列化 —— 这些节点在新的 VL.Serialization.Raw 包里。注意你得知道什么是 blittable 类型,否则用起来不会开心。
    • 为了对称,我们把基于 FSPickler 的节点挪进了新的 VL.Serialization.FSPickler 包。会有转换器负责修好你已有的草图。
  • 我们的序列化器支持 NonSerializedAttribute(英文)
  • 修复了序列化器里极差的性能
  • 打出来的对象在字符串渲染时用 VL 的类型名。比如对一个 Person 类调用 ToString 会得到 “Person”,而不是编译器生成的某个混乱名字。
  • 从 C# 直接导入类型与节点
    • 现在可以用新的 ImportAsIs 程序集特性,直接在 C# 里写类型和节点。设了它之后,所有公开的类、结构体和枚举在 VL 里就像是直接定义在那儿一样可用,不需要类型转发。
    • 进一步地,给某个类加上新的 ProcessNode 特性,就能直接在 C# 里写过程节点。同样,VL 那边不需要再做任何事。
    • 这样一来(如果你愿意)C# 代码就能成为一个节点库项目的唯一真源。
  • 通过新的 IMonadicTypeFilter 接口,对 T -> M<T> 连接上允许哪些类型有了更细的控制(FUSE 用到了它)
  • 重构了设置
  • 对全局 Channel 浏览器做了工作。详细的改动清单会随 6.1 发布给出。
  • 方案浏览器现在显示实例 Operation 和 “Used By”,让人更容易理解较大的系统
  • 对 Record 里的穿透 Pad 发出警告,正如这里所提议的
  • 节点浏览器:
    • 现在通过 Skia 绘制自身 —— 此前是 System.Drawing
    • IOBox 创建:支持 Int2/3/4
    • 画连线时按 “.” 会打开按类型过滤的节点浏览器
    • 边连线边创建节点时也可以按类型过滤。连线的类型会作为最前面的候选之一
    • 按类型过滤时,相关类型的节点也会显示出来。连线的方向决定显示子类型还是超类型。
    • 把一些东西挪到了 New... 这个选项后面
    • 输入 “pa” 时,即使不在 “New..” 模式下,Pad 这一项也会重新出现。这与「你不必点进目录就能看到所有以 “pa” 开头的节点」这一事实相符
    • 基本节点排在最前。输入 “If” 或 “Ca” 会先显示 “If” 或 “Cache”,然后才是各种类型。
    • 排序整体上改进了
    • 整理了 CoreLib 里那些搞乱浏览体验的东西(If2……)
  • 优化了提示框里的异常渲染,现在带上了原因和办法
  • Apply 针脚永远处于「在用」状态,不再变灰、仍属于程序的一部分,只是值为 false(一个布尔值就足以区分跑还是不跑)。这也让提示框更好读。
  • IOBox 的新设置:横向拖动数值、用鼠标左键交互
  • 直接把连线结束在数据枢纽的连接口上时,无论如何都会画上 —— 不需要强制修饰键
  • 加了非泛化 IMonadicValue 和 GPU<RGBA> 的查看器

跳到节点库的变动

修复

  • IOBox 现在能正确显示 NULL
  • 配置 Int2/3/4 IOBox 现在也有设定最小值、最大值等的选项
  • 修复了在文档层级更深处使用 C# 项目时的导出问题
  • 修复了点击边框边缘时的空指针 —— 论坛
  • 修复了通过连线把数组传进自定义区块 —— 论坛
  • 关于动态枚举的若干修复 —— 论坛论坛
  • 只有当 Create Operation 确实用到了 This 节点时,才用 VL 默认值初始化用户字段。这修复了用户并不知情的内存分配。
  • 对递归 CreateDefault 调用栈的保护现在放在运行时做。创建默认值时,我们会把正在创建的实例放进一个线程静态字段;若再次进到同一个方法,就返回那个存下的实例。这确保任何 CreateDefault 的环都能被正确闭合。修复了把 This 连到 Changed 节点时的彻底崩溃
  • 修复了 5.0 引入的一处回归:Stride.Graphics 这类包不装进 packages 文件夹也能被引用 —— 论坛
  • 修复了 VL.TestEnvironment 里 vvvv 的自动下载
  • 修复了 5.0 引入的一处回归:Create Operation 不在界面里显示它们的目录
  • 修复了单文件导出应用(英文)里的崩溃
  • 修复了删除某个被有状态区块使用的类之后编辑器崩溃 —— 论坛
  • 修复了草图里的错误传播 —— 论坛论坛
  • SKImage 的提示框(以及 IOBox)若从后台线程触发就不再显示,以免 vvvv 彻底崩溃 —— 论坛
  • 修复了当某个包同时存在于用户文件夹和内部 packs/dependencies 文件夹时加载错程序集的问题
  • 修复了 Spread<Spread<Char>> 类型的 IOBox 崩溃
  • 修复了对「真的以 null 为默认值的参数」的处理。比如调用定义为 Foo(string? s = null) 的方法时,我们的系统现在会正确传 null 而不是空字符串。
  • 修复了节点在「响应式 foreach 内部、由 Update 调用触发的异常」时不变粉的问题
  • 修复了复制输出针脚时那条误导人/难以领会的错误信息
  • 修复了「更深处有错误」这条警告没有一路往上传播
  • 修复了当包在 runtimes/win/lib 里提供运行时程序集(比如 System.Management.Automation)时的程序集加载错误
  • 修复了在资源管理器里双击 vl 文件后 vvvv 不启动 —— 论坛
  • 修复了隐式状态针脚的重命名对嵌套草图不起作用
  • 修复了设置图标不随浅色主题调整
  • 修复了某些 Observable 明明只推送了一个值,提示框却渲染出「走动的时钟」
  • 修复了系统没有正确处理网络路径 —— 论坛
  • 线程安全的自适应节点 witness 构建。修复:VL.StandardLibs issue
  • 编译器修复:针对「重复声明同一个参数」的损坏草图,现在会报出错误
  • IOBox 编辑器:嵌套编辑器(比如枚举的 Spread)会移到最前。修复 论坛
  • 针脚未被使用时,节点应用的针脚视图上不再显示 “Default: ”。那会骗人以为这个默认值有什么关系,其实并没有 —— 那个针脚所属的片段根本不会执行。论坛
  • 修复了针脚上的值指示器:有时值没能落进模型(在布尔输入上右键拖动而不是右键点击时)
  • 修复了在 “Definitions” 或 “Category” 画布里执行 Ctrl + P(新建草图定义并实例化)→ 现在只创建定义
  • 重启时清掉持久化的消息
  • 编译器修复:确保新的类型化身被 emit 出来时尽快调用 ConstructProgram —— 以保证我们总是访问到正确的状态类(通过静态 Program 字段)。此前遇到过参数集合还是空的情况
  • 提示框/查看器:
    • Spread<SomeType>,若 SomeType 没有注册查看器就用 ObjectViewer。此前是 EmptyViewer
    • 改进了 Optional、Nullable、Observable 和 Channel 的查看器
  • 草图编辑器与 Warn 节点:错误级别让节点变红而不是变粉(提示框也是红的)。这与「应用健康」视图一致。粉色节点只留给严重问题(比如异常)。
  • 节点浏览器 —— 创建 IOBox 时,按 ESC 不再关掉节点浏览器,而是退回主模式
  • 草图浏览器的主按钮对每一次点击都有反应(不再过滤掉双击,便于快速一瞥)
  • 确保缩放光标和连接方向指示器只在真会发生那件事时才出现
  • 确保马虎的点击总归算点击(直到它不算、并被判定为拖动为止)。此前有过这样的局面:取决于拖动区域的设置,某些操作既不算点击也不算拖动,让人沮丧地觉得自己连点一下都不会
  • 区块里的时刻着色不太对。这可能导致某个节点显示为灰色,而它其实正在 Create 上执行。
  • 深色主题修复:未使用的针脚此前实在难以与普通针脚区分
  • 节点浏览器:右侧面板的临时节点信息该消失时没消失
  • 边连线边在上游创建 IOBox 时,若汇点尚未初始化,就确保创建一个只有一项的 Spread IOBox;若汇点有值就取那个值
  • 确保运行时消息不会拖慢 HDE
  • 确保草图即使某个视图元素有问题也能把自己显示出来

标准库

新增节点库

  • 通过 VL.OSCQuery 包随附对 OSCQuery 的支持
  • 加了 VL.IO.Redis
  • 加了 VL.TPL.Dataflow,配合 AppHost 里新的 MainLoopTaskScheduler,可以搭出「在主线程上渲染、同时在后台线程读写数据」的管线

新增节点

  • 加了 Log 节点,方便地记进新的日志窗口
  • Exit(CoreLib.Windows)和 OtherInstancesRunning(CoreLib)节点
  • 优化了发送与接收节点
    • SR 节点现在叫 Send (Global)Receive (Global)
    • 加了 Send (Local) 区块和 Receive (Local) 节点,以便更好地支持作用域。值只能在草图的某个界定区域内被接收,不必再琢磨执行顺序。
    • 可以嵌套多个 Send (Local) 区块。这样你就能临时覆盖某个 Key 的值;离开内层 Send 区块时,值会重置为外层区块的值。
  • 引入了中心的 AppHost 类。它提供对各种服务的访问,也允许注册新服务(服务注册表)。
  • 加了 GaussianSpread 系列节点、HistogramBounds [Collections](感谢 @tebjan)
  • 基于 ColorTheme 预定义的 DefaultDarkThemeDefaultLightTheme,可用来配置配色
  • DefaultStyle 节点,提供一套顺手的预定义样式
  • 加了 IList (NonGeneric Mutable)IDictionary (NonGeneric Mutable)
  • 加了 OnException [Reactive]CatchAndReport [Reactive]
  • 加了 SaveToPinSaveToModelPinEnsureValidChannelSelectEnumFlag
  • Channel:加了 SetValidator,用来阻止某些值被推送
  • 加了 Warn (Lazy) 节点
  • 加了 ToStringComparer,可用来创建大小写不敏感的字典

变动

  • Select (ByPath)TryGetValueByPathWithValueByPath
    • 现在能处理 VLObject 之外的对象的参数
    • 可以从字典或 Spread 类型的根对象起步
  • ManageTask 区块:针脚命名:OnFinishedOn Finishedis RunningIs Running;这些类现在是 internal 的,因为你只会想用那个「过程区块」;帮助文档里做了一些「简化」
  • 移除了 Object.Create
  • Identity [Object] 现在废弃,CastAs (Generic) [Object] 转为实验性
  • GlobalChannel 输出 Channel<T> 而不是 Channel<Object>,警告也改进了
  • Select (ByPath):Path 现在是一个 Channel;Path 不对时会警告
  • GetSlice (Channel):Entries 现在是一个 Channel。若推进来一个新 Spread,Index 和 Entry 都可能更新。
  • ChannelHub:TryAddChannelGetOrAddChannel 有了 Got Created 输出
  • 加了 System.Type 转发
  • 加了 ValueType 类型转发。现在按类型过滤、且从 object 类型的汇点起手连线时,所有值类型都会显示出来

修复

  • ImagePlayer(Skia/Stride)现在文件顺序总是正确的
  • 修复了把 Skia 渲染进 Stride 时的内存泄漏 —— 论坛
  • SingleInstance 现在线程安全
  • AsyncLoop 现在会装上帧时钟。修复了动画节点在其内部使用时返回无意义结果的问题 —— 论坛
  • IVLTypeInfo 相关的若干修复
  • 修复了 Rotation (Vector3) 里 pitch 和 yaw 弄反了 —— VL.StandardLibs issue
  • 修复了给定路径不再能解析时 Select (ByPath Dynamic) 注入 object 类型的值 —— 论坛
  • 修复了 VideoIn 上的 Enabled 针脚 —— VL.StandardLibs issue
  • 修复了切换视频文件分辨率之后图像输出闪烁 —— 论坛
  • 修复了帧时钟里的一处 bug:帧号需要在触发帧开始事件之前先加一
  • 修复了 GlobalChannel 节点:Channel.Value = default 时不该即时创建对象
  • Select (ByPath):主 channel 变化时,若旧路径不再有效,子 channel 不再抛异常;对可变的 T 不再一直创建默认值
  • Synchronizer 区块会先销毁不再使用的状态,再创建和更新新的
  • 修复了 Changed 节点:“Changed On Create” 选项此前不起作用

VL.Stride

  • 升级到 Stride 4.2
  • 着色器现在可以放进子文件夹里组织 —— 不过名字仍然必须唯一
  • 加了对 ComputeColor / ComputeFloat4 以及 “Color” 特性针脚的支持 —— PR
    • TextureFX 的 RGBA 输入现在是 ComputeColor 类型
  • 加了 CustomPostFX 区块,允许用常规节点集打出自定义的后处理效果链
  • 加了 ApplyImageEffect 节点,以便在后处理区块里运行图像效果
  • 加了 CustomColorTransform 节点,用 ShaderFX 打出颜色变换类的后处理效果
  • 把 TextureFX 挪进了新包 VL.Stride.TextureFX,给别的腾地方
  • 修复了 Stride 物理节点上重复的针脚
  • 修复了 DrawFX 里没有把来自下游的世界矩阵考虑进去
  • 修复了某些材质节点的非确定性行为(比如 MaterialSpecularThinGlassModelFeature)—— 论坛
  • 修复了 Enable [Entity] 节点 —— 加了一个针脚以便推断组件的类型 —— 论坛
  • PBRMaterial (Metallic)MetalnessRoughness 默认为 1.0,这一点现在会显示在应用侧
  • PBRMaterial (Specular)GlossinessSpecular Intensity 默认为 1.0,Specular 为白色,这一点现在会显示在应用侧

VL.ImGui

  • 升级到 Dear ImGui 1.90
  • 破坏性改动:由于升级到 ImGui.Net 1.90,ChildWindow 的 “AlwaysUseWindowPadding” 标志从 Flags 挪到了 Child Flags
  • 加了 Stride 渲染后端 VL.ImGui.Stride(感谢 @kopffarben)—— PR
  • TreeNode 和 CollapsingHeader 会捕获条目状态,因而后续的查询节点能返回正确结果 —— 论坛论坛
  • MenuItem 有了 Selected Channel 输入针脚
  • LayerWidget 加了新针脚,更好地控制允许哪些事件穿过
  • 修复了 ImGui 区块生成的目标代码里的初始化顺序 —— 论坛
  • 修复了多个 channel 输入针脚上默认值显示不正确
  • 暴露了 SetNextWindowScroll
  • 修复了 TableGetColumnFlags 的 “Index” 输入针脚
  • 修复了用 AtCursor DrawList 样式绘制时 NGon 的偏移
  • 修复:SetIndent 用的是百分之一像素单位
  • 加了 Context 转发
  • 加了 EnumFlagButton
  • TabItem 现在带有 LifeSpan 输入
  • ObjectEditor
    • 现在接受非泛化 channel(更好连),并有了 Style 输入
    • 修复了集合缩小时的异常。论坛 多余的基于 slice 的合并订阅会在它们作出反应之前被移除。
    • 加了对动态枚举的支持
    • 标签逻辑的 bug 修复(→ FontAndParagraph 节点的检查器现在允许调整字体族)
    • 修复了深层可变对象结构,现在能显示深处的改动
    • 支持 DisplayAttributeName 优先于 ShortName,并允许给参数排序
    • 修复了嵌套参数描述
    • ImGui 现在会响应 skia 控件的鼠标离开和失焦事件。不在 Skia 渲染器上时 IsItemHovered 会返回 false → 检查器里的提示框在离开窗口时会关掉

VL.Video

  • 改名。此前叫 VL.Video.MediaFoundation。包名里的 MediaFoundation 部分被去掉了,为更平台中立的工作打下基础。
  • 这个包不再依赖 StrideSkiaSharpDX,这减小了导出应用的体积。
  • 所有针对特定后端的重复节点都被移除了。比如 VideoPlayer (Skia)VideoPlayer (Stride) 没有了,只剩一个 VideoPlayer
  • VideoPlayerVideoIn 节点在主输出上返回一个 IVideoSource。这个针脚可以接到 VideoSourceToSKImage(在 VL.Skia 里)或 VideoSourceToTexture(在 VL.Stride 里)。这两个节点会高效地把收到的视频帧变成各自的图像类型。
  • 上面提到的这些节点今年早些时候就引入了,但一直没受多少关注 —— 因为它们此前只在 VL.IO.NDI 里可用。这个版本增强了它们的功能,使其能把所用的图形设备向上游传递。这让源(比如 VideoPlayer)在可能时进入更快的代码路径。产出的视频帧可以由纹理支撑并直接用于渲染 —— 没有多余的内存复制,也没有 GPU 上传下载。
  • 图形设备要不要传达给视频源,可以通过一个默认为 true 的针脚控制。视频汇点节点还允许从上游拉取视频帧,这在「想把更新率同步到视频源」的场景里可能有用。若你想要一个不变的纹理输出,这个模式或许也有用(论坛)。

VL.Skia

  • 升级到 SkiaSharp 2.88.6
    • InjectNotifications 允许创建自定义的鼠标/键盘
    • LottiePlayer:加了 VersionOriginal SizeActual Bounds 输出针脚