LiquidGlass UI 2.4.5 / SDK

2.4.3 实际验证记录

本次直接修改 2.4.2 的玻璃 shader、Theme 默认值、材质预设和文档,重新构建 Java 8 / Java 21 双目标 SDK。

运行环境:OpenJDK 21.0.11,Linux x64,Mesa 25.0.7-2 / llvmpipe LLVM 19.1.7,OpenGL 3.3 Core / Compatibility Profile。Java 构建分别使用 --release 8 和 --release 21。

本次实际执行的检查

14 组既有回归共 500 项,加上新增 51 项,共 551 项独立检查。总数来自当前版最终成功日志中的 TOTAL,不复用历史结果充数,不将截图帧数和重复构建加入断言数。

既有回归覆盖基础控件、按压/选择动画、连续拖动、横向微调器、间距、字体 SDF、全局 AA、Bezier/嵌套裁剪、GPU 状态恢复、通用窗口、材质设置、背景网格、数值/滑杆同步以及关闭清理。每组的退出码和断言数见 tests/results/2.4.3/regressions.json。

新增检查为:

可复核的像素结果

同一 640×480 棋盘输入、sigma=18、mix=.98、高光=0 时,边缘区域 RGB 最大/最小通道差的平均值从关闭时的 0 变为默认色散下的 43(0..255)。主体区域的颜色与关闭色散时完全相同。色散单独引起的当前 SDR 值空间加权亮度差最大约 0.3422 / 255;这不是线性光空间的物理亮度测量。

中灰底的默认高光最大增亮约 46 / 255,实际测试像素最高 131 / 255,未接近纯白截断。默认低反光回归图的对应值为 43 / 255 和 128 / 255。浅色材质背光边缘对比为 14 / 255。高光 .5→1.5 的顶边平均通道差约 31.1353 / 255。

真实窗口中的色散滑杆 0→2,使对照玻璃边缘最大通道差从 0 变为 88;高光从 0→1.5 的轮廓像素最大差为 50。这些是指定测试背景和区域的结果,不是所有应用画面都固定出现相同强度。

旧测试预期的变更

原 MotionTest 和 NeutralInteractionTest 把 shine=.42、dispersion=0 写成正确默认值;本修复就是将其改为 .82 / .85,因此两条预期同步更新。NeutralGpuTest 的最大反光增益阈值从低于 24 / 255 改为 20..64 / 255,同时保留最终像素不接近白色、光学轮廓不偏移和确定性测试;另新增主体不刷白、浅色对比和单独关闭的像素检查。

这三条是随新目标更新的预期,不是宣称旧默认值仍然不变。开发期间失败的预期/实验日志与最终结果分开,放在 tests/results/2.4.3/attempts/。所有用于计数的正式日志均来自修正后的实际重跑。

构建与保留范围

保留 68 类公开控件。13 个完整示例分别针对两种目标编译;示例库和完整展示程序都包含当前 shader。字体、圆角几何、嵌套裁剪、动画、布局、WGL 生命周期及 native 协议仍保持原实现,另提供与 2.4.2 的文件哈希对照。

native 协议仍为 24164,Windows/Linux 原生二进制无需改动。两版所有发布 class 核对 major 52 / 65;公开 API 用 javap 对比。Javadoc 由当前源码生成,所有本地文档链接经过检查;包内没有字体文件。使用 tests/verify-release.py 可复核这些结构检查。

运行验证的边界

两种 Java 目标都在实际 OpenJDK 21 上启动过;没有在真正的 Java 8 VM 中运行测试。Windows x64 native 保留 WGL 修复与原构建,但没有 Windows 实机验证。Mesa llvmpipe 是软件 OpenGL,不构成独立显卡性能或所有驱动兼容性保证。

色散是屏幕空间 SDR 通道采样差近似,不是完整光谱追踪;纯色背景没有相邻颜色变化,因此不会凭空产生彩虹边。高光仍会受背景、材质 tint 和自定义高光/阴影颜色影响。

复现

sh build.sh all
sh build-docs.sh
sh tests/run-edge-optics.sh
sh tests/run-edge-settings.sh

既有回归脚本仍放在 tests/。图形测试需 Linux 的桌面 JDK、gcc、Mesa EGL/GL、X11/Xvfb;正常运行已打好的 JAR 不需要 gcc、Python、Maven 或网络。像素读回只用于测试/明确截图,不进入日常每帧显示流程。