用途:把四类常见 GPGPU 工作负载映射到 WebGPU 计算管线,给出正确的资源、缓冲与同步做法。适用 WebGPU 1.0-stable(Chrome 113+、Safari 26+、Firefox 141+)。
主要能力与用法: 图像处理:输入用采样或存储纹理,输出必须写入单独的存储纹理,纹理需带 GPUTextureUsage.STORAGE_BINDING 且使用可存储格式(如 rgba8unorm、rgba16float、r32float),不可用 -srgb 格式;分块卷积/模糊把 tile 加 halo 缓存到 var<workgroup>,加载与计算之间必须 workgroupBarrier()。 粒子系统:状态放在一个 STORAGE 缓冲,计算通道原地积分,渲染通道用 @builtin(instance_index) 绘制同一缓冲,无需拷贝;GPU 决定数量时用 dispatchWorkgroupsIndirect。 物理模拟:当调用间互相读取状态时必须双缓冲,读 A 写 B 并每步交换;工作组内用 workgroupBarrier(),跨存储内存可见性用 storageBarrier()。 归约/扫描:多趟树形归约,每个工作组把一块归约进 var<workgroup> 并写出一个 partial,第二次 dispatch 归约 partials,树每步都要 workgroupBarrier()。
关键规则:dispatchWorkgroups(x,y,z) 参数是工作组数量而非调用数,N 项在 @workgroup_size(64) 下应 dispatch Math.ceil(N/64);同一帧在 CPU 读取计算写入的缓冲前必须先 await device.queue.onSubmittedWorkDone(),且 STORAGE 缓冲不能直接 map,需先 copyBufferToBuffer 到 COPY_DST | MAP_READ 暂存缓冲;subgroupAdd 等子组内建需 subgroups 特性(Chrome 134+)并加 enable subgroups;,须先特性检测;workgroupBarrier() 不可放在发散控制流中。
限制:不讲解计算管线对象与 WGSL @compute 着色器机制,相关主题见 webgpu-syntax-compute-pipeline 与 webgpu-wgsl-compute-shaders。参考文件包括 references/methods.md、references/examples.md、references/anti-patterns.md。