跳到主要内容

5.x

源文档地址

vvvv gamma 5.2

2023 年 6 月 9 日发布 安装包 | 离线安装包

新增

  • Ctrl + Shift + D 复制当前选中的内容,连同所有入线一起。新粘贴出来的节点会与原来那些有同样的连接。
  • 复制粘贴现在会把相关的依赖一并带过去。
  • Channel 支持通过 BeginChange 做批量改动(附帮助文档)
  • 优化了 Channel 的热替换
  • VL.IO.MIDI 现在带上了全局 Channel 绑定的支持
  • 加了 Optional<T> 的热替换支持
  • 引入了一个新错误:「你不可以在 create 上读取一个 Pad」,帮你避开某类错误。

修复

  • MeshSplit 节点现在对来自多网格模型的网格也能正确工作
  • 复制粘贴 bug 修复:指派给 create 的连线粘贴之后没落在 create 上
  • Replace With → IOBox 会移除 Slot(这个命令可在 Pad 的右键菜单里找到)
  • 修复了使用 WinRT API 时的程序集加载问题
  • 修复了 .HDE.vl 后缀的文件没被识别为预编译的问题(显示不出预编译状态)
  • 修复了 5.0 的一处回归:草图会在帮助面板的 “Also found in” 一栏里出现两次
  • 修复了 5.0 的一处回归:分片的 M<T> 针脚断开时,该片段不会用 default(M<T>) 再被调用最后一次
  • 修复了传入无效 IP 地址时 UDP 节点崩溃的问题(5.0 引入的回归)
  • 修复了一个「启动时暂停」的 bug
  • 方案浏览器现在把异常报进日志,而不是把应用弄挂

ImGui

  • 修复了对象编辑器在枚举上不能正常工作的问题
  • 改进了标签体系:你不用再操心标签了,vvvv 的 ImGui 包装会替你生成 YourLabel##UniqueId 这样的标签。

vvvv gamma 5.1

2023 年 5 月 24 日发布 安装包 | 离线安装包

变动

  • OSCClient 现在能同时向多个目标发消息
  • OSCClient 现在能在自己发消息的那个端口上收回消息(比如跟 SuperCollider 通信时很有用)
  • Channel 更灵活了。每个 Channel<T> 现在都能转成 Channel<Object>(若你知道 T,也能转回来)。ChannelOfObject 这个参数现在由同一个 channel 实现,因而在以非泛化方式跟 channel 打交道的场合性能更好。
  • 写入 Channel 时现在可以设定一个作者。通过检查 LatestAuthor,你可以忽略某个作者发来的消息(这样就能避免「自己跟自己说话」)
  • 引入全局 Channel
    • 这类 Channel 可以通过一个「Channel 路径」(就是个普通字符串)查到
    • GlobalChannel 节点提供对它们的动态访问 —— 你在运行时把 Channel 路径喂给它
    • 它们同时也会以静态类型的节点形式出现在 GlobalChannels 目录下
    • 模块可以绑定到它们上面。这部分正在积极开发中(比如 VL.IO.MIDI)
    • 「Global Channels Browser」窗口纵览所有全局 channel 及其绑定。在帮助面板里搜 “global” 即可
  • 托管的槽会按其构造顺序的逆序被销毁。举例来说,两个过程节点 A 和 B,有一条从 A 到 B 的连线,Dispose 时 B 会先于 A 被销毁。
  • 新节点 Select (ByPath Dynamic),它从给定路径所指向的那个参数推断出输出 channel 的类型 —— 论坛
  • 新的进阶区块 ReactOnMainThread [Reactive] 会在主线程上调用它的区块主体,哪怕进来的 Observable 是从别的线程触发的。节点 ToMainThread [Reactive] 输出一个在主线程上运行的 Observable。这两个用在 Delay [Reactive]Throttle [Reactive] 之后很合适 —— 那些并不在主线程上触发。(附帮助文档)
  • 新节点 StartEagerly [Reactive] 把一个 Channel 变成 Observable,起始值就是 Channel 的当前值。这个值会在订阅时被推送出来(正如 BehaviorSubject 那样)
  • 加上了 HashSet<T>ConcurrentDictionary<T>List<T> 的热替换支持
  • 加了 Remove [Spread]
  • 加了 GetSlice (Channel)。它能在一个序号与「一个 Spread 里对应那一项」之间轻松地双向转换。(附帮助文档)
  • 加了 Channel 提示框,它总是显示当前值。此前顶上来的是 Observable 提示框,那个要等到第一次被观察到推送之后才开始显示值
  • 加了 Optional<T> 的提示框

修复

  • 通过 args.txt 喂进来时,--editable-packages 命令行参数没被拾取
  • 修复了几处 emit 异常(比如论坛这条)
  • 修复了 Pad 上的 Ctrl + T 命令,以及带显式类型参数时的该命令
  • 修复了 5.0 的一处回归:方案浏览器不再能导航到选中的类型转发
  • 修复了拖动 IOBox 数字时的舍入误差
  • 修复了 IOBox 在类型变更之后不再显示任何值的问题
  • 修复了在某个包内部打草图时的编译器崩溃。这个崩溃发生在:你在包内部、某份并未被包的根文档引用的文档上打草图时。
  • 修复了泛化接口继承自另一个泛化接口、且类型实参无法推断时的编译器崩溃。现在这种具体情形会给出一条像样的错误信息。
  • 修复了通过路径引用程序集时的加载失败
  • 修复了运行时解析带版本字符串的类型名
  • 修复了来自 C# 项目引用的节点工厂没被拾取的问题
  • 修复了 MutableObservableCollection 的针脚类型和命名
  • 修复了源数据类型变化时的 Select (ByPath):可交换对象在通过 VLPropertyInfo.GetValue 访问时会即时更新自己的状态。

Stride

  • 修复了因一处 dll 加载问题导致 OpenXR 完全不工作
  • 修复了在 OpenXR 下停用 VR 系统时的崩溃
  • 修复了特性里的字面量在带数字后缀时没被拾取的问题。比如 [Default(2f)] 此前解读得不对。

ImGui

  • 修复了 ImGuiInputTextFlags.EnterReturnsTrueInput 控件上不起作用
  • 对象编辑器在它的文本和数值编辑器上使用 ImGuiInputTextFlags.EnterReturnsTrue
  • 修复了停靠布局没被 LoadIniSettingsFromMemoryLoadIniSettingsFromDisk 恢复的问题
  • 修复了销毁使用 LayerWidget 的草图时的访问冲突。此前若在同一帧里对一份使用 LayerWidget 的草图同时调用 Update 和 Dispose,系统会崩溃。
  • 修复了把表格专用的命令节点放在 Table 之外时的访问冲突
  • PopupPopup (Modal)WindowCollapsingHeader —— 它们都有一个 Visible 输入 channel —— 现在可以设为短生命周期:隐藏时销毁区块主体,显示时重新创建

vvvv gamma 5.0

2023 年 4 月 19 日发布 安装包 | 离线安装包

新增

  • 升级到 .NET 6
  • 由于包现在是只读的,启动时间和内存占用都有改善
  • 新的命令行参数:--editable-packages,用来让个别包退出「默认只读」
  • 所有节点库都开源了:Introducing VL.StandardLibs(英文)
  • C# 项目可以被直接引用,从而实现可视化/文本混合的工作流
  • 支持「新式」NuGet 包
  • 导出的应用体积更小,它们不再依赖 VL.Lang
  • 导出器把设置存在一个 *.props 文件里。这个文件(以及可选的 *.targets 文件)可以用来定义导出时的自定义动作
  • 加入了 ImGui 库,Channel 也做了优化以便于数据绑定
  • 加了 Lock 区块
  • HDE API:加了 ActiveLiveCanvasStream
  • 新命令(Ctrl + Shift + K),一次性为选中的 Pad 创建 getter 和 setter(访问器)
  • 来自外部文件(着色器、csproj)的节点现在右键菜单里有 “Show in Explorer” 一项
  • 加了新包 VL.TestFramework,外部节点库可以用它来测试自己的文档
  • 使用自适应节点的泛化类型,其实例可以动态创建。AlchemX / Kairos 用到了这一点。
  • New > C# FileNew > Shader 对话框,方便创建 C# 与着色器文件。
  • 帮助面板的 Learn 标签页可以设为默认打开。

变动

  • 导出的应用不再有装着所有程序集的 lib 子目录 —— 技术上已经没法再支持这种目录布局了
  • 改进了 SymbolFinder
    • 当 “Browsable packages” 设置打开时,对只读包里的文档也管用
    • 改进了搜索结果的排序
    • 更清晰:第二行现在先显示包,再显示文件
  • 提示框显示着色器的文件路径
  • Path 现在是相对于入口点序列化的,而不是相对于发起 Serialize 调用的那份文档
  • 简化了自适应节点的错误信息
  • VL.EditingFramework 拆成了 VL.EditingFramework 和只与 Skia 相关的 VL.EditingFramework.Skia

修复

  • 热替换、包编译、异常处理在稳定性和顺手程度上的改进
  • 节点浏览器:去掉了一些小毛病
  • 打开最近保存过的文档时,不应再显示为未保存
  • 修复了新装的 HDE 扩展没被拾取的问题
  • 布尔 IOBox:修复了「bang IOBox 由输入触发时亮得不一致」的问题
  • 修复了 Elementa 提示框失效的问题(2021.4.11 引入的回归)
  • 一些 Skia 性能改进
  • 修复了 UDP 节点在 enabled == false 时仍在第一帧打开套接字的问题
  • 修复了当进来的 Observable 不完成时,DatagramSender 节点不完成其发送任务的问题
  • ResampleBSpline 节点:修复了 Closed 模式
  • 修复了 Channel.Select (ByPath) 所用的 WithValueFromExpression
  • 节点若来自某个节点工厂,Open node 命令会变灰
  • Skia:
    • 若选择了 Jpeg 格式,ImageWriter 会保留路径里的 jpg/jpeg 后缀
    • 修复了 LottiePlayer,并加了 LottiePlayer (FrameBased)

Stride

  • 升级到 Stride 4.1
  • 加入了对 OpenXR 的支持(英文)
  • Stride 现在在它的呈现路径上使用更现代的翻转模型(英文)
  • 把回读节点的默认值从 3 帧提到 5 帧,并在其中某个节点把 GPU 卡住时加上运行时警告
  • 修复了计算着色器输入的默认值处理
  • 修复了 shaders 文件夹尚不存在时新建的着色器不出现的问题
  • ImagePlayer 节点的性能改进
    • 不再有白闪,因为会等待要显示的那一帧
    • 资源利用更好 —— 默认预加载数 2 现在能得到正确结果
    • 读缓冲从 128 KB 提到 8 MB,从而大幅降低整体磁盘占用
  • 加了新的曲面细分功能
  • 加了 FlatCamera 节点
  • 修复了 AxisAndGrid 的双重变换
  • 修复了 Stride.Redenring.Within… 这些节点
  • InsertInsert (UV) 加进了 Stride.Texture.Utils