本次 WebGPU 功能的数量可能有点稀疏,但一些重大改进即将到来!未来的版本将加入一些功能,例如着色器编译速度的提升以及对使用 WGPUFuture 的实现的异步模型所做的更改。
子群组(功能尚处于开发阶段)
子组功能可实现 SIMD 级别的并行处理,从而允许组内的线程进行通信并执行集数学运算(例如,计算 16 个数字的总和)。这提供了一种高效的跨线程数据共享形式。
现代 GPU API 支持子组操作,但命名和实现细节有所不同。Chrome 团队已找出共性,目前正在努力实现此功能的标准化。如果您有任何疑问,请查看提案和评论。
“实验性 Web 平台功能”背后只有最低限度且非标准化的子群组实现标志位于 chrome://flags/#enable-experimental-web-platform-features
上,以便开发者试用一下并分享反馈,因为 WebGPU 尚未证明它的实际优势。
当 GPUAdapter
中提供 "chromium-experimental-subgroups"
功能时,请求具有此功能的 GPUDevice
以获取 WGSL 中的实验性子群组支持,并检查其 minSubgroupSize
和 maxSubgroupSize
限制。
您还需要在 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_id
与id
匹配)广播到子组中的所有调用。注意: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 128
Chrome 127
Chrome 126
Chrome 125
Chrome 124
Chrome 123
Chrome 122
Chrome 121
- 在 Android 上支持 WebGPU
- 在 Windows 上使用 DXC(而非 FXC)进行着色器编译
- 计算通道和渲染通道中的时间戳查询
- 着色器模块的默认入口点
- 支持 display-p3 作为 GPUExternalTexture 颜色空间
- 内存堆信息
- Dawn 最新动态
Chrome 120
Chrome 119
Chrome 118
Chrome 117
Chrome 116
- WebCodecs 集成
- GPUAdapter 返回的设备丢失
requestDevice()
- 如果调用
importExternalTexture()
,则保持视频播放流畅 - 规范合规性
- 改善开发者体验
- Dawn 最新动态