6.x
vvvv gamma 6.7
修复
- 保存对被引用 C# 项目(.csproj)的改动后,相关节点重新会自动更新了(6.5 引入的回归)
- 通过向导新建 C# 文件时,自动生成的文件名不再带空格;加进 .csproj 的是 “Utils” 而不是 “.Utils”;并确保不会添加多余的 .csproj 文件
- 最近一次 .NET 更新之后,某些系统上导出会失败
- 最近一次 .NET 更新之后,被引用的 Stride 项目加载失败 —— 论坛
vvvv gamma 6.6
修复
- 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+1到Alt+6—— 论坛 - 动态枚举的 C# 模板现在也演示了 Tags 的用法
- 加了
OneSnapshotPerFrame。这样你就能让一个 channel 安静下来 - 给 ClockSyncer 加了调试输出
节点库
Stride
- TextureWriter 现在在渲染时保存文件 —— 论坛
ImGui
- 修复了 6.5 引入的一处回归,它让停靠没有按宣称的那样工作。窗口会立刻脱离停靠,移动它们时也有些奇怪的反馈。
- 修复了停靠一旦启用就关不掉的问题
- 与停靠和全屏窗口相关的改动:
- 启用停靠后不再有全屏窗口。任何不被 Window 包住的内容都会落进 Debug 窗口。屏幕充当停靠空间。
- 启用停靠但没有全屏窗口,意味着你没法把窗口停靠到屏幕边缘。只有窗口本身可以互相停靠。
- 启用全屏时的停靠不再绘制背景。
ImGui.Stride
- 修复了即使没有控件要渲染,也会冒出一个空 Debug 窗口的问题
- 修复了小键盘回车键不起作用
vvvv gamma 6.5
变动
- 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节点被停用时不释放设备的问题 - 修复了
VideoSourceToImage/VideoSourceToTexture在切换视频源后不释放最后收到的帧
Stride
- 修复了
#include "file.hlsl"完全不起作用的问题
ImGui
- 修复了在循环里使用 TreeNode 且没接 channel 时的折叠状态。以 channel 为输入的控件,若那个 channel 是系统生成的,就不再往里写。这确保内部状态不会在所有接到同一个系统生成 channel 的实例之间共享。
- 修复了重复销毁 ImGui 节点时的硬崩溃
- 加了
IsKeyDown、IsKeyPressed、IsKeyReleased节点来处理键盘输入
MessagePack
- 重新加回了无类型对象格式化器 —— 此前的版本里
Unit或IDynamicEnum这类对象就已经在用了 - 给动态枚举加了更好的格式化器(它们其实就是字符串)
vvvv gamma 6.4
新增
- 改进了自动转换:允许把
T1连到M<T2>,只要T1是T2的子类型 - 停用了
Channel<Channel (Ungeneric)>的自动提升 - 加了一种对资源更友好的计时器实现,可以通过关掉新设置 “High Precision Timer” 来选用
变动
- C# 生成的
recordDeconstruct方法现在作为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
新增
- 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
修复了我们在 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
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 针脚(
Set/Reset等)默认用false,但Update不这样。带强制 apply 针脚的片段现在放在Update上。这修复了LFO或Counter这类节点长期存在的可读性和易用性问题 —— 它们此前在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包。会有转换器负责修好你已有的草图。
- 多亏 https://github.com/vvvv/VL.StandardLibs/pull/664 ,我们现在能与 MessagePack 互相序列化。新节点在预装的
- 我们的序列化器支持
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)节点- 优化了发送与接收节点
S和R节点现在叫Send (Global)和Receive (Global)- 加了
Send (Local)区块和Receive (Local)节点,以便更好地支持作用域。值只能在草图的某个界定区域内被接收,不必再琢磨执行顺序。 - 可以嵌套多个 Send (Local) 区块。这样你就能临时覆盖某个 Key 的值;离开内层
Send区块时,值会重置为外层区块的值。
- 引入了中心的
AppHost类。它提供对各种服务的访问,也允许注册新服务(服务注册表)。 - 加了
GaussianSpread系列节点、Histogram和Bounds [Collections](感谢 @tebjan) - 基于
ColorTheme预定义的DefaultDarkTheme和DefaultLightTheme,可用来配置配色 DefaultStyle节点,提供一套顺手的预定义样式- 加了
IList (NonGeneric Mutable)和IDictionary (NonGeneric Mutable) - 加了
OnException [Reactive]和CatchAndReport [Reactive] - 加了
SaveToPin、SaveToModelPin、EnsureValidChannel、SelectEnumFlag - Channel:加了
SetValidator,用来阻止某些值被推送 - 加了
Warn (Lazy)节点 - 加了
ToStringComparer,可用来创建大小写不敏感的字典
变动
Select (ByPath)、TryGetValueByPath、WithValueByPath- 现在能处理 VLObject 之外的对象的参数
- 可以从字典或 Spread 类型的根对象起步
ManageTask区块:针脚命名:OnFinished → On Finished,is Running → Is 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:
TryAddChannel和GetOrAddChannel有了 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):Metalness 和 Roughness 默认为 1.0,这一点现在会显示在应用侧PBRMaterial (Specular):Glossiness 和 Specular 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” 输入针脚 - 修复了用
AtCursorDrawList 样式绘制时NGon的偏移 - 修复:
SetIndent用的是百分之一像素单位 - 加了
Context转发 - 加了
EnumFlagButton TabItem现在带有 LifeSpan 输入ObjectEditor- 现在接受非泛化 channel(更好连),并有了 Style 输入
- 修复了集合缩小时的异常。论坛 多余的基于 slice 的合并订阅会在它们作出反应之前被移除。
- 加了对动态枚举的支持
- 标签逻辑的 bug 修复(→
FontAndParagraph节点的检查器现在允许调整字体族) - 修复了深层可变对象结构,现在能显示深处的改动
- 支持 DisplayAttribute:Name 优先于 ShortName,并允许给参数排序
- 修复了嵌套参数描述
- ImGui 现在会响应 skia 控件的鼠标离开和失焦事件。不在 Skia 渲染器上时 IsItemHovered 会返回 false → 检查器里的提示框在离开窗口时会关掉
VL.Video
- 改名。此前叫
VL.Video.MediaFoundation。包名里的MediaFoundation部分被去掉了,为更平台中立的工作打下基础。 - 这个包不再依赖
Stride、Skia或SharpDX,这减小了导出应用的体积。 - 所有针对特定后端的重复节点都被移除了。比如
VideoPlayer (Skia)、VideoPlayer (Stride)没有了,只剩一个VideoPlayer。 VideoPlayer和VideoIn节点在主输出上返回一个IVideoSource。这个针脚可以接到VideoSourceToSKImage(在VL.Skia里)或VideoSourceToTexture(在VL.Stride里)。这两个节点会高效地把收到的视频帧变成各自的图像类型。- 上面提到的这些节点今年早些时候就引入了,但一直没受多少关注 —— 因为它们此前只在 VL.IO.NDI 里可用。这个版本增强了它们的功能,使其能把所用的图形设备向上游传递。这让源(比如
VideoPlayer)在可能时进入更快的代码路径。产出的视频帧可以由纹理支撑并直接用于渲染 —— 没有多余的内存复制,也没有 GPU 上传下载。 - 图形设备要不要传达给视频源,可以通过一个默认为 true 的针脚控制。视频汇点节点还允许从上游拉取视频帧,这在「想把更新率同步到视频源」的场景里可能有用。若你想要一个不变的纹理输出,这个模式或许也有用(论坛)。
VL.Skia
- 升级到 SkiaSharp 2.88.6
InjectNotifications允许创建自定义的鼠标/键盘- LottiePlayer:加了
Version、Original Size和Actual Bounds输出针脚