/* Crafter.Graphics WebGPU bridge — DOM mode UI compute pipeline. Surface model (high-level, deliberately not 1:1 with WebGPU): - JS owns the GPUDevice/queue/compute pipelines/bind-group cache. - C++ owns slot allocation and per-frame logic; it calls into ~15 imports. - Standard UI shaders are embedded as WGSL strings at the bottom of this file and compiled once at startup. Ping-pong output strategy (per Decision 2 in plan): - Two rgba8unorm storage textures sized to the canvas. - Each Dispatch reads `prev` (sampled), writes `out` (storage, write-only). - JS swaps the two between dispatches, so item-order overdraw works. - At frame end, the current `out` is blitted to the canvas via copyTextureToTexture (canvas configured as rgba8unorm to match). This file is loaded as