未设置顶点缓冲区
通过 GPURenderPassEncoder
或 GPURenderBundleEncoder
将 null
(而非 GPUBuffer
)传递给 setVertexBuffer()
,您可以取消设置给定槽中之前设置的顶点缓冲区。请参阅问题 dawn:1675。
// Set vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, null);
取消设置 bind 组
通过在 GPURenderPassEncoder
或 GPURenderBundleEncoder
上将 null
(而非 GPUBindGroup
)传递给 setBindGroup()
,您可以取消设置给定槽中之前设置的绑定组。请参阅问题 dawn:1675。
// Set bing group in slot 0.
myRenderPassEncoder.setBindGroup(0, myBindGroup);
// Then later, unset bind group in slot 0.
myRenderPassEncoder.setBindGroup(0, null);
在设备丢失时,忽略异步流水线创建错误
GPUDevice
的 createComputePipelineAsync()
和 createRenderPipelineAsync()
方法会返回一个 promise,该 promise 会在流水线创建完成时解析。从现在起,当 GPUDevice
为 lost
时,系统会忽略异步流水线创建过程中出现的错误,以尽可能让丢失的设备看起来正常运行。请参阅 dawn issue:1874。
SPIR-V 着色器模块创建更新
现在,使用 createShaderModule()
创建 SPIR-V 着色器模块会引发 TypeError,除非您使用“不安全的 WebGPU 支持”标志运行 Chrome,因为 SPIR-V 不属于 WebGPU 规范的一部分。在此更改之前,使用 SPIR-V 会导致系统生成 GPUInternalError。请参阅更改 chromium:4711911。
改进开发者体验
改进了顶点着色器中绑定组布局绑定的验证错误消息,以支持读写存储缓冲区和只写存储纹理绑定。请参阅 issue dawn:1883。
使用自动生成的布局缓存流水线
使用 createRenderPipeline({ layout: "auto" })
创建的流水线现在可以利用 Chrome 中的缓存机制。这意味着,这些流水线将更高效地创建,并会使用更少的内存。请参阅问题 dawn:1933。
Dawn 更新
wgpu::RequestAdapterOptionsBackendType
现在是 wgpu::RequestAdapterOptions
的一部分,可让应用在获取适配器时更轻松地请求特定后端。请参阅以下示例和问题 dawn:1875。
wgpu::RequestAdapterOptions options = {
.backendType = wgpu::BackendType::D3D12};
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
我们还为 Node.js 实现了一些其他方法。请参阅更改 dawn:142465。
webgpu.h C API 已将布尔值的类型从 stdbool
更改为 WGPUBool
,即 uint32_t
。之所以进行此更改,是为了确保该 API 在 C 和 C++ 中具有等效的 ABI。
本文仅介绍了一些主要亮点。查看详尽的提交内容列表。
WebGPU 中的新变化
WebGPU 新变化系列中涵盖的所有内容的列表。
Chrome 131
- 在 WGSL 中剪裁距离
- GPUCanvasContext getConfiguration()
- 点和线基元不得有深度偏差
- 针对子群组的包含性扫描内置函数
- 对多绘制间接的实验性支持
- 着色器模块编译选项“严格数学”
- 移除了 GPUAdapter requestAdapterInfo()
- Dawn 更新
Chrome 130
Chrome 129
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 更新