What's WebGPU 新功能 (Chrome 117 版)

François Beaufort
François Beaufort

取消設定頂點緩衝區

透過將 null (而非 GPUBuffer) 傳遞至 GPURenderPassEncoderGPURenderBundleEncoder 上的 setVertexBuffer(),可讓您取消設定特定運算單元中先前設定的頂點緩衝區。請參閱問題發生時間:1675

// Set vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, myVertexBuffer);

// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, null);

取消設定繫結群組

透過將 null (而非 GPUBindGroup) 傳遞至 GPURenderPassEncoderGPURenderBundleEncoder 上的 setBindGroup(),您可以在指定運算單元中取消設定先前設定的繫結群組。請參閱問題發生時間:1675

// Set bing group in slot 0.
myRenderPassEncoder.setBindGroup(0, myBindGroup);

// Then later, unset bind group in slot 0.
myRenderPassEncoder.setBindGroup(0, null);

在裝置遺失時,讓系統透過建立非同步管道的方式修正錯誤

GPUDevicecreateComputePipelineAsync()createRenderPipelineAsync() 方法會傳回承諾,在管道建立完成後即可解決。從現在起,當 GPUDevicelost 時,來自非同步管道建立的錯誤會靜音,盡可能讓遺失的裝置能正常運作。請參閱 dawn 問題:1874

SPIR-V 著色器模組建立更新

現在使用 createShaderModule() 建立 SPIR-V 著色器模組,除非使用「Unsafe WebGPU Support」旗標執行 Chrome,因為 SPIR-V 不屬於 WebGPU 規格,否則會擲回 TypeError。在此變更之前,使用 SPIR-V 會導致系統改為產生 GPUInternalError。 請參閱變更 chromium:4711911

改善開發人員體驗

我們改善了 vertex 著色器中繫結群組版面配置繫結的驗證錯誤訊息,針對讀寫儲存空間緩衝區和僅供寫入的儲存空間紋理繫結。請參閱問題發生時間:1883

使用自動產生的版面配置快取管道

透過「createRenderPipeline({ layout: "auto" })」建立的管道現在可運用 Chrome 的快取機制。這表示這些管道的建立效率會更高,且能減少使用的記憶體。請參閱問題發生時間:1933

黎明更新

wgpu::RequestAdapterOptionsBackendType 現已併入 wgpu::RequestAdapterOptions,方便應用程式在取得轉接器時要求特定後端。請參閱以下範例和問題發生時間: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 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