WGSL image filters vs JS baseline
The same filter, twice: a WGSL compute shader and a plain JS loop at the same kernel size. GPU time is measured from submit to queue completion; the cold run that includes shader compilation is shown separately.

Reduced motion is on — showing the poster instead of the live scene.
Pick a filter and press Run. Bilateral shows the biggest gap.