概述WebGPU 计算管线允许在 GPU 上执行通用计算任务。通过 `GPUBuffer` 作为存储缓冲并编写 WGSL compute 着色器,提交命令获得结果。用法/示例const adapter = await navigator.gpu.requestAdapter() const device = await adapter.requestDevice() const input = device.createBuffer({ size: 1024, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST }) const output = device.createBuffer({ size: 1024, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC }) const shader = ` @group(0) @binding(0) var<storage, read> inp : array<u32>; @group(0) @binding(1) var<storage, read_write> outp : array<u32>; @compute @workgroup_size(64) fn main(@builtin(global_invocation_id) gid : vec3<u32>) { let i = gid.x; outp[i] = inp[i] + 1u; } ` const module = device.createShaderModule({ code: shader }) const pipeline = device.createComputePipeline({ layout: 'auto', compute: { module, entryPoint: 'main' } }) const bind = device.createBindGroup({ layout: pipeline.getBindGroupLayout(0), entries: [ { binding: 0, resource: { buffer: input } }, { binding: 1, resource: { buffer: output } } ] }) const encoder = device.createCommandEncoder() const pass = encoder.beginComputePass() pass.setPipeline(pipeline) pass.setBindGroup(0, bind) pass.dispatchWorkgroups(16) pass.end() device.queue.submit([encoder.finish()]) 工程建议管理缓冲与队列生命周期,避免频繁创建带来的开销;复用资源。根据任务选择 `workgroup_size` 与分派维度;验证边界与对齐约束。在不支持环境回退到 WebGL/CPU 计算与离线处理。参考与验证MDN:WebGPU — https://developer.mozilla.org/docs/Web/API/WebGPU_APIweb.dev:WebGPU — https://web.dev/articles/webgpuW3C GPUWeb — https://www.w3.org/community/gpuweb/

发表评论 取消回复