Skip to content

Industrial CG Platform 架构升级:Blender VFX 渲染分支代码质量月全记录

在等待 Blender 5.2 正式版发布的这一个月里,我在 Industrial CG Platform 分支按下了一次长达四周的“暂停键”。在此期间,我没有添加任何新功能,而是开启了 W0 到 W6 阶段的“代码质量与功能包加固行动”。

以下是我在各个独立模块上取得的具体进展。

Deep EXR:内存占用直降 1.8GB

深度合成(Deep Compositing)是 VFX 流程的命脉,但极度消耗内存。在 W1 和 W5 阶段,我重构了 Deep EXR 的底层数据流和可扩展性。

在标准的合成器生产场景测试中,Deep EXR 的峰值内存占用大幅降低了 1.818 GiB(降幅 21.44%)。与此同时,输出结果实现了 100% 的字节级完美对齐,SHA-256 校验分毫不差。此外,我还修复了未映射的 **File Output 节点(Deep 数据流模式)**在后台静默写入错误图层的缺陷,确保输出语义绝对受控。

Light Group:实现真正的零开销

我重新设计了 Light Group Lobe Passes 的描述符机制和内存寻址策略。我移除了繁杂且重复的同步策略,现在的机制极其纯粹:只要你不启用特定的 Light Group 渲染通道,它在渲染时的系统开销就是绝对的 0。

Shadow Color:重构 GPU 寻址路径

针对 Shadow Color 功能,我精简了阴影色彩的提取逻辑。现在默认的纯黑阴影会直接绕过额外的 GPU 状态数组(State Arrays)计算。这不仅节省了显存,更大幅提升了复杂光影场景下的计算局部性。在 CPU 和 OptiX 后端的严格矩阵对比中,计算精度保持着极高的一致性。

EXR Overscan:统一离线与视口解析器

离线渲染和视口(Viewport)的坐标系差异极易滋生 Bug。在这次加固中,我彻底统一了两者的 **Data Window(数据窗口)**解析器,确保不对称裁剪在任何情况下都能从正确的边缘生效。同时,我修复了 Overscan 面板 ID(RENDER_PT_exr_overscan)的历史命名冲突问题,保障了与市面上各类第三方插件的兼容。

BQt 管理器:消除 GUI 路径崩溃隐患

在 W6.1 的全视野范围验收中,我发现 BQt GUI 后台测试的工作路径长度超过了 Windows 系统的限制,频频引发 WinError 206。我没有修改 Blender 核心来绕过它,而是将隔离环境的提取路径从 282 字符极限压榨到了 147 字符,彻底消灭了深层路径隐患。

此外,BQt View Layer Manager 引入了严格的启动失败拦截机制。环境初始化单次尝试失败后即刻停止,避免了无意义的重复预热卡顿。

自动化测试:n8n 驱动的“先红后绿”验证

在整个代码质量月里,我严格贯彻了测试驱动开发。在修改任何源码前,必须先写出一个确定的、会报错的失败测试(Red Proof);修复后,必须通过精准的测试验证(Green Proof)才允许提交。

为了支撑高频验证,我利用本地部署的 n8n 系统搭建了一套编排工作流。所有改动合并前,必须通过 Background(后台无 UI)模式测试、跨功能全视野测试,以及挂载独立配置文件的 GUI 场景门控。

未来待办

所有这些底层架构的加固与性能优化,都会随着 Blender 5.2 正式版的发布,顺着 Industrial CG Platform 分支直接推送给所有的用户。

加固计划虽然告一段落,但 Industrial CG Platform 的演进不会停止。在甩掉历史包袱、拥有了更稳固的代码架构后,接下来我将聚焦以下两个方向:

  1. 合并 Blender 5.2 正式版:目前的加固是基于 Beta 版本完成的。一旦官方发布 5.2 正式版,我将立即启动最终的合并流程(Final Intake),并在拥有真实运行时验证的前提下,处理底层兼容性桩代码的去留。
  2. 推进独立新功能研发:在地基稳固之后,我将正式开启 World Volume(全局体积雾) 的全新架构开发,并着手开展“No Direct Lighting”与“Collection Material Override”等一系列全新功能的研发工作。



← 返回开发日志

Last updated:

Released under the Blender License (GNU GPL v3 or later).