mcpField
V
verify-pixels

verify-pixels

github.com/playcanvas测试与质量31285 次安装1 周前更新
代码仓库

关于 verify-pixels

此测试 Skill 用于检查图形变更是否保留原有渲染像素。它指导如何确定性地捕获帧、选择逐像素比较或并排审查,并报告测得的差异。

主要功能

  1. 01选择精确或视觉比较方式
  2. 02确定性地捕获帧
  3. 03捕获 WebGL 和 WebGPU 输出
  4. 04检查基线捕获的重复性
  5. 05报告像素差异

适用场景

  1. 01测试渲染变更
  2. 02比较新旧构建结果
  3. 03检查动画场景的指定姿态
  4. 04发现捕获测试框架中的噪声

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/playcanvas/skills --skill verify-pixels

安装后在 Claude Code 中输入/verify-pixels确认已加载。

详细介绍

证明像素未发生变化

选择关卡

  • 字节级精确:改动保持相同的解码数据和相同的着色计算,因此每个像素 都必须匹配。
  • 并排评审:改动会改变采样值、随机顺序、精度或数学运算的执行位置。将其报告为“无法进行字节级把关”,并在每个姿态下展示旧版和新版;不要凭空捏造 阈值。

让帧具备确定性

  • 加载每个资源,并在各构建之间匹配相机、画布尺寸、光照和动画时间。为 偶发的随机性设置种子。
  • 用应用自身持有的单一时间值驱动动画 shader,而不是 Date.now() 或 performance.now()。
  • app.timeScale = 0 会让 dt 变为零,但 update 仍会运行;任何按帧计数或读取 挂钟时间的东西仍会推进。
  • 设置 app.autoRender = false,然后在每一帧之前设置 app.renderNextFrame = true 以进行捕获。

捕获并比较

  • WebGL:await (device as WebglGraphicsDevice).readPixelsAsync(x, y, w, h, pixels)。WebGPU: 渲染到一个 RenderTarget 中,并用 Texture#read() 读取其 colorBuffer。避免颜色 转换和有损编码。
  • 先对未修改的构建捕获两次。这些捕获必须完全匹配,否则测试框架本身 就是有噪声的。
  • 在至少两个姿态下覆盖每个被触及的表面,并在相关时额外覆盖一个动画中间阶段。
  • 报告计数,例如“65536 个像素中有 0 个不同”,或报告计数以及差异 所在的位置。“看起来一样”不是结果。

将测试框架代码排除在发布的 bundle 之外;通过 inspect-runtime 附加它。

评论

支持 Markdown