Fix blocky WebGPU sky: view inputs refresh when the camera moves (t91)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-28 17:46:52 -04:00
co-authored by Claude Opus 5.5
parent fbc3b07be2
commit f7ec8af791
12 changed files with 108 additions and 9 deletions
+11 -7
View File
@@ -79,17 +79,21 @@ checks waking within eight ticks separately from the probabilistic consumption o
`shots/play/`. Pixel look by default; `python3 test/play.py shots/play smooth` uses the smooth
look.
- `test/t_smooth.py` checks WebGPU smooth shapes, seams, joins, fog and the thermal lens.
- `test/t_gpu_golden.py` compares 28 cropped legacy reference PNGs (384x288, under
- `test/t_gpu_golden.py` compares 28 cropped frozen reference PNGs (384x288, under
`test/fixtures/golden/`) against WebGPU: renderer, joins, sky and four light scenes,
both looks at zoom 12 and 2. ImageMagick decodes RGB; the per-channel tolerance is 8,
mean RGB error must stay below 0.5/255 and fewer than 0.3% of pixels may exceed 8
(smooth AO/edge rounding). These are frozen pre-removal legacy images, not generated
from the new renderer. The compressed `golden-world-640x*.json.gz` fixtures retain the
Phase 2 world bytes that produced them, isolating renderer checks from worldgen RNG changes. Inspect the matching `shots/golden-*.png` after visible changes.
(smooth AO/edge rounding). Seven smooth crops were refreshed for t91 (renderer 12/2,
joins 2, sky 12/2, lamp 12, magma 12): the old noise had seams in the references too.
The remaining crops are frozen pre-removal legacy images. The compressed
`golden-world-640x*.json.gz` fixtures retain the Phase 2 world bytes that produced them,
isolating renderer checks from worldgen RNG changes. Inspect the matching
`shots/golden-*.png` after visible changes.
- `test/t_gpu.py` checks default limits (four storage textures per stage), dirty-upload
readback after 240 busy ticks with scrolling and both looks, exact dirty/full image equality
with a frozen clock, world replacement, transparent overlays, drill contours, shader compilation timing, successful device recreation and failed recovery with
an autosave and Reload. `gpuCheckUploads()` reads actual resident GPU texture bytes and
readback after 240 busy ticks with scrolling and both looks, exact dirty/full image equality,
noise continuity and pan/zoom equality against fresh view textures/full uploads with a
frozen clock, world replacement, transparent overlays, drill contours, shader compilation
timing, successful device recreation and failed recovery with an autosave and Reload. `gpuCheckUploads()` reads actual resident GPU texture bytes and
compares them to the full CPU arrays, including Float32 temperatures, machine and block data.
- `test/t_render_dirty.js` checks invalidation of sleeping chunks, heat edges, swaps, fog and trees.
- The old CPU light checks now run as `test/t_gpu_light.py` / `test/light-cases.js`, reading the