WebGPU の新機能(Chrome 117)

François Beaufort
François Beaufort

頂点バッファの設定を解除

GPUBuffer ではなく nullGPURenderPassEncoder または GPURenderBundleEncodersetVertexBuffer() に渡すと、特定のスロットで以前に設定した頂点バッファの設定を解除できます。issue dawn:1675 をご覧ください。

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

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

バインド グループの設定を解除

GPUBindGroup ではなく nullGPURenderPassEncoder または GPURenderBundleEncodersetBindGroup() に渡すと、特定のスロットで以前に設定したバインド グループの設定を解除できます。issue 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() メソッドは、パイプラインの作成が完了すると解決される Promise を返します。今後は、GPUDevicelost の場合に非同期パイプライン作成によるエラーがミュートされ、紛失したデバイスが可能な限り機能しているように見えるようになります。dawn issue:1874 をご覧ください。

SPIR-V シェーダー モジュール作成の更新

createShaderModule() を使用して SPIR-V シェーダー モジュールを作成すると、SPIR-V は WebGPU 仕様の一部ではないため、「Unsafe WebGPU Support」フラグを指定して Chrome を実行しない限り、TypeError がスローされるようになりました。この変更以前は SPIR-V を使用すると、GPUInternalError が生成されていました。 詳しくは、chromium:4711911 の変更をご覧ください。

デベロッパー エクスペリエンスの向上

頂点シェーダーのバインド グループ レイアウト バインディングの検証エラー メッセージが、読み取り / 書き込みストレージ バッファと書き込み専用のストレージ テクスチャ バインディングで改善されました。issue dawn:1883 をご覧ください。

自動生成されたレイアウトを使用したキャッシュ パイプラインのキャッシュ

createRenderPipeline({ layout: "auto" }) を使用して作成されたパイプラインで、Chrome のキャッシュ メカニズムが使用されるようになりました。つまり、パイプラインがより効率的に作成され、使用するメモリが少なくなるということです。issue dawn:1933 をご覧ください。

夜明けの更新情報

wgpu::RequestAdapterOptionsBackendTypewgpu::RequestAdapterOptions の一部となり、アプリケーションがアダプタを取得するときに特定のバックエンドを簡単にリクエストできるようになりました。次の例と issue dawn:1875 をご覧ください。

wgpu::RequestAdapterOptions options = {
    .backendType = wgpu::BackendType::D3D12};

// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);

Node.js には、いくつかの追加メソッドが実装されています。change dawn:142465 をご覧ください。

webgpu.h C API のブール値の型が stdbool から WGPUBooluint32_t)に変更されました。この変更は、API が C と C++ で同等の ABI を持つようにするために行われました。

ここでは、重要なハイライトの一部についてのみ説明します。commit の完全なリストを確認する。

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