2.4.2 实际验证记录
环境:OpenJDK 21.0.11,Linux x64,Mesa llvmpipe 25.0.7 / OpenGL 3.3 Core 与 Compatibility Profile。发布源码分别以 --release 8 和 --release 21 编译。
本次范围
本次保留并重新执行原有 425 项检查,新增 75 项设置相关检查,合计 500 项独立断言。这个总数是各最终成功日志中 TOTAL 的和;重复启动、截图、开发期间失败或未完成的尝试不加入总数。
新增检查:
- 41 项模型/API/布局检查:范围校验、数值双向绑定、原值初始化、暂停时钟、sigma 开关恢复、颜色与材质状态分离、九页入口、开关/滑杆/横向数值同步、窄布局、关闭重开等。
- 7 项真实 GPU 回读检查:比较折射 0→10、10→20、20→30 的边缘采样差异,确认旧限幅平台期消失;确认中心/外部像素不被整体位移;检查 Gaussian sigma、混合比例及 tint 真实改变 framebuffer 输出。
- 27 项真实窗口检查:通过 Robot 鼠标键盘操作实际设置窗口;网格开关改变可见背景像素;滑杆、数字编辑、左右加减、模糊开关恢复、暂停/继续、分类切换、浅深色保留、旧菜单接回网格、缩放边界、正常退出及 GL_NO_ERROR。
旧版回归包含 120 项基础逻辑、25 项材质/动效、37 项连续拖动、46 项微调器/间距、28 项质量/API、8 项 SDF 图集、23 项间距/状态、各组真实 GPU 像素检查,以及实际窗口通用操作。具体计数由 tests/results/2.4.2/regressions.json 记录,不以历史日志替代本次执行。
关键像素证据
在 9 逻辑单位圆角的控件上,对同一个棋盘背景渲染,边缘平均通道差为:
0 → 10: 5.2857142857
10 → 20: 2.2857142857
20 → 30: 1.0
三段都真实改变 shader 输出。原式 min(strength, bevel * 0.80) 在这个控件上,10、20、30 会全部触及同一位移上限。新式是连续、有界的屏幕空间强度函数,不是物理 IOR。
窗口测试还对不覆盖控件的同一块背景进行网格开/关像素对比;不是只确认复选框状态或日志字符串。
两个目标的最终展示 JAR 还分别实际运行了 12 帧,均为 GL_NO_ERROR;新的 MaterialControls 完整示例也实际运行 8 帧并正常关闭。这些启动不重复计入断言总数。
构建和完整性
两种目标保留相同的公开 API,字节码主版本分别为 52 / 65。新 GlassSettingsPanel、GlassSettingsDialog、BackgroundSettings 都在库 JAR 中,不仅存在于展示程序。原有用户清单中的 68 类控件保留。
12 个完整示例一起编译;API 文档与 Javadoc 由当前源码离线生成。发布检查验证 Main-Class、shader、双平台 native、两个目标的公开声明、文档链接及无字体二进制。命令为 python tests/verify-release.py。
原生协议仍为 24164。与 2.4.1 的 native 源码及 Windows/Linux 原生二进制一致,不需要为这次参数面板更改 WGL 生命周期;再次核对 Java/native 导出。共用曲线裁剪 shader 和字体 shader 没有被替换回旧版本。
不能由测试外推的结论
运行虚拟机是 OpenJDK 21,不是真正的 Java 8 VM。Windows x64 原生库仍没有 Windows 实机验证;二进制导出检查不等于 Windows 运行成功。llvmpipe 是软件 OpenGL 驱动,不代表任何实际显卡的性能基准。
开发时一次窗口检查暴露了设置对话框在缩小窗口后越界,已修复并重测;一次较早的窗口测试未在工具时限内完成,没有记为通过。最终完整运行的日志才用于上述计数。此前尝试放在 tests/results/2.4.2/attempts/ 以区别最终结果。
独立窗口会自动读取 ui.background(),宿主 attach 模式不会自动重画宿主的 3D 背景。设置为当前 Ui 的共享主题参数,不是给所有已有控件强制添加一套独立物理材质。现有 SDR、MSAA resolve、一进程一个 NativeBackend 等边界仍然成立。
复现
sh build.sh all
sh build-docs.sh
sh tests/run-material-settings.sh
设置测试脚本需要 Linux 的 gcc、Mesa EGL/GL、X11、Xvfb 和桌面 JDK;运行已经打好的示例 JAR 不需要 gcc 或下载任何依赖。普通渲染不做像素读回;本报告中的像素读取只在测试/显式截图时发生。