Written by Tim Gibson using WebGPU - 2025