Skip to content

窗口插帧助手 1.4.0(MetalFX 空间放大 / 屏幕分辨率重建)

Choose a tag to compare

@lrylnx lrylnx released this 15 Oct 17:20
· 5 commits to main since this release

⚠️ 这一版里的「MetalFX 空间放大」和「按屏幕分辨率重建」从未生效 —— 它们的前提(输出尺寸 > 采集尺寸)在本工具里永远不成立,
实际与「原始画质」逐像素完全相同,一帧都没跑过。
已在 v1.4.1 中移除。
本版唯一真正有价值的修复是「产物最低系统要求从 macOS 27 降到 macOS 15」,那个在 1.4.1 里保留。


以下为原始说明(未修改)

新增 MetalFX 空间放大画质档与「按屏幕分辨率重建」开关;并修掉一个一直存在的部署目标问题 —— 此前所有成品包(1.1.x–1.3.0)都被编成了只能在 macOS 27 启动。

本次改动

  • 画质新增「MetalFX 空间放大」(系统自带的 MTLFXSpatialScaler):现有几档里唯一不经过 Lanczos 的 —— 采集画面原样交给 MetalFX 放大,再由 Core Image 收尾。只在输出尺寸大于采集尺寸、且两者宽高比一致时生效,否则自动退回 Lanczos 并在日志里写明原因。
  • 控制窗新增「按屏幕分辨率重建」(命令行 --output-scale fill):内部按屏幕物理分辨率渲染。窗口比屏幕小时,配合 MetalFX 档才看得出效果;它只改内部渲染分辨率,覆盖层仍精确贴住源窗口、点击落点不变。
  • 修复:产物的最低系统要求。build.sh 现在显式指定 -target arm64-apple-macos15.0。此前不指定时 swiftc 会拿构建机的系统版本当部署目标,编出来的二进制最低要求是 macOS 27,而 Info.plist 里写的 15.0 并不生效 —— 在 macOS 15–26 的机器上双击会直接报「需要 macOS 27」。
  • 新增离线画质 A/B(dev/verify-metalfx-ab.swift,已接进 verify-local.sh),并更新控制窗截图。

验证

verify-local.sh 全绿:CAS 的零强度恒等与锐化响应;MetalFX 档的准入判定、纹理尺寸与方向(穷举 flipVertical 两种取值)。方向这条只能实测 —— 这条渲染链相对「关闭」档自带一次上下翻转,按「与 CAS 档对称」去推会得到恰好相反的结果、整个画面颠倒;脚本已把两种取值都固化成断言。代码签名、ZIP 完整性、解包后与源 .app 逐字节比对均通过。

画质 A/B(320×180 → 640×360,合成测试图):

用例 档位 相对双线性的锐度 过冲(振铃)
硬内容 Lanczos 1.768 0.065
硬内容 MetalFX 2.895 0.200
软内容 Lanczos 1.638 0.000
软内容 MetalFX 3.192 0.066

MetalFX 的锐度增益约为 Lanczos 的 1.8–2 倍,代价是边缘更容易出现光晕,且内容越「硬」越明显。这是两种风格取向,不是「哪个更好」 —— 结论随内容变,两组输入缺一不可。

适用

Apple Silicon / macOS 15+。下载 ZIP 解压后运行「窗口插帧助手.app」。自签名未公证,首次打开需右键 → 打开,或:

xattr -dr com.apple.quarantine "窗口插帧助手.app"

首次运行还需授予屏幕录制权限(菜单栏 ⚡ → 权限设置 → 勾上 → 重新打开本应用)。

压缩包里打包了 LSFG 引擎二进制(liblsfg_metal.dylib / liblsfg_extended.dylib / libMoltenVK.dylib / lsfg-vk.dll),属于第三方专有组件,不在本项目许可证范围内 —— 本项目只打包了本机已有的文件,完整说明见仓库 README 的「第三方来源与许可」。

开发记录(FSR4 / Magpie 调研、MetalFX 落地与离线画质 A/B)

SHA-256:d6cb6608e9da2f479f0cb9b624c41fb7466e45641af79c9057ae4fbe3e72fa3e