WebGPU 的新变化 (Chrome 125)

François Beaufort
François Beaufort

本次 WebGPU 功能的数量可能有点稀疏,但一些重大改进即将到来!未来版本将包含着色器编译速度的改进,以及对使用 WGPUFuture 的实现的异步模型进行的更改。

子群组(功能尚处于开发阶段)

子组功能可实现 SIMD 级别的并行处理,从而允许组内的线程进行通信并执行集数学运算(例如,计算 16 个数字的总和)。这提供了一种高效的跨线程数据共享形式。

现代 GPU API 支持子组操作,但命名和实现细节有所不同。Chrome 团队已找出共性,目前正在努力实现此功能的标准化。如果您有任何疑问,请查看提案评论

“实验性 Web 平台功能”背后只有最低限度且非标准化的子群组实现标志位于 chrome://flags/#enable-experimental-web-platform-features 上,以便开发者试用一下并分享反馈,因为 WebGPU 尚未证明它的实际优势。

GPUAdapter 中提供 "chromium-experimental-subgroups" 功能时,请求具有此功能的 GPUDevice 以获取 WGSL 中的实验性子群组支持,并检查其 minSubgroupSizemaxSubgroupSize 限制。

您还需要在 WGSL 代码中使用 enable chromium_experimental_subgroups 明确启用此扩展。启用后,您将可以访问以下附加内容:

  • subgroup_invocation_id:子组中线程的索引的内置值。
  • subgroup_size:用于访问子组大小的内置值。
  • subgroupBallot(value): 返回一组位字段,如果当前调用的 value 为 true,则与 subgroup_invocation_id 对应的位为 1,否则为 0。
  • subgroupBroadcast(value, id):将调用中的 value(其中 subgroup_invocation_idid 匹配)广播到子组中的所有调用。注意:id 必须是编译时常量。

以下代码段提供了一个基础来改进和发现子群组的潜力。

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-subgroups")) {
  throw new Error("Experimental subgroups support is not available");
}
// Explicitly request experimental subgroups support.
const device = await adapter.requestDevice({
  requiredFeatures: ["chromium-experimental-subgroups"],
});

const shaderModule = device.createShaderModule({ code: `
  enable chromium_experimental_subgroups;

  @compute @workgroup_size(64) fn main(
      @builtin(global_invocation_id) global_id : vec3u,
      @builtin(subgroup_size) sg_size : u32,
      @builtin(subgroup_invocation_id) sg_id : u32) {
    // TODO: Use subgroupBallot() and subgroupBroadcast().
  }`,
});

渲染到 3D 纹理切片

现在,借助 GPURenderPassColorAttachment 中的新 depthSlice 成员,您可以在渲染通道中直接渲染到 3D 纹理切片,从而扩展其功能,不再局限于常见的 2D 纹理渲染。例如,通过添加此元素,您可以通过直接渲染到 3D 纹理体内,来创建基于体素的场景和效果。请参阅问题 dawn:1020

Dawn 最新动态

查看详尽的提交内容列表

WebGPU 的新变化

WebGPU 新变化系列涵盖的所有内容的列表。

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113