← ClaudeAtlas

verify-pixelslisted

Use when changing PlayCanvas rendering code that must not visibly change the rendered image — draw-call optimization, hardware instancing, shader or material refactors, noise or lightmap bakes, or asset pipeline swaps — before shipping.
playcanvas/skills · ★ 15 · AI & Automation · score 80
Install: claude install-skill playcanvas/skills
# Prove pixels unchanged Choose the gate before building the capture harness. Both classes require controlled captures that cover the affected surfaces. ## Classify the change | Change | Gate | | --- | --- | | Batching, instancing, mesh indexing, chunking, pooling that preserves RNG order, an asset format swap with identical decoded data | Byte-exact matrix | | Re-rolled or re-sampled procedural noise, a changed RNG consumption order, math moved between CPU and GPU, changed precision, fewer octaves or samples | Not byte-gateable: side-by-side review | For the second class, sampled values or precision can change. Report it as "not byte-gateable" and use the side-by-side gate after the shared capture setup below; do not invent uncalibrated perceptual thresholds to approve it. ## Cover every touched surface List every touched material or surface and a capture pose it dominates. Use at least two representative poses, adding as many as coverage requires; a horizon strip does not cover a water shader change. For animated surfaces, include a second phase mid-animation. ## Make the frame deterministic For both gates, load assets fully and match the scene state, camera, canvas size, lighting, and animation time between builds. Seed incidental randomness so only the intended change varies. - Drive every animated shader or vertex effect from one app-owned time value, never `Date.now()` or `performance.now()` read inside the render path, so a captured phase is exactly reproduc