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

François Beaufort
François Beaufort

取消設定頂點緩衝區

GPURenderPassEncoderGPURenderBundleEncoder 上,將 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);

取消設定繫結群組

GPURenderPassEncoderGPURenderBundleEncoder 上,將 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);

當裝置遺失時,自動略過建立非同步管道的錯誤

GPUDevicecreateComputePipelineAsync()createRenderPipelineAsync() 方法會傳回承諾,表示在管道建立完成後就會解析。從現在起,如果 GPUDevicelost,系統會忽略建立非同步管道的錯誤,盡可能讓遺失的裝置能正常運作。請參閱 dawn 問題:1874

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

現在使用 createShaderModule() 建立 SPIR-V 著色器模組會擲回 TypeError,除非您使用「Unsafe WebGPU Support」執行 Chromeflag。在這項變更之前,使用 SPIR-V 會導致系統改為產生 GPUInternalError。 請參閱變更 chromium:4711911

改善開發人員體驗

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

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

透過 createRenderPipeline({ layout: "auto" }) 建立的管道現已利用 Chrome 的快取機制。這代表這些管道的建立效率會提高,耗用的記憶體也較少。請參閱問題 dawn:1933

日出最新消息

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 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