WebGPU 的新功能 (Chrome 125)

François Beaufort
François Beaufort

這次的 WebGPU 功能數量可能有些微不足之處,但也有一些重大進展!日後推出的版本將包含著色器編譯速度等功能,以及使用 WGPUFuture 的實作非同步模型異動。

子群組 (功能開發中)

子群組功能會啟用 SIMD 層級的平行處理,讓群組中的執行緒能夠通訊及執行綜合數學運算 (例如計算 16 個數字的總和)。這提供了非常有效率的跨執行緒資料分享方式。

現代 GPU API 支援子群組作業,但命名和實作細節有所不同。Chrome 小組已找出這些共通點,目前正在努力將這項功能標準化。如有任何問題,請參閱提案留言

chrome://flags/#enable-experimental-web-platform-features 的「Experimental Web Platform 功能」標記後方,子群組最基本且未標準化的實作方式,讓開發人員可以試用並提供意見回饋,因為 WebGPU 尚未介紹實際的優點。

GPUAdapter 提供 "chromium-experimental-subgroups" 功能時,請要求具備此功能的 GPUDevice 在 WGSL 中取得實驗性子群組支援,並查看其 minSubgroupSizemaxSubgroupSize 限制。

您也必須使用 enable chromium_experimental_subgroups,在 WGSL 程式碼中明確啟用這項擴充功能。啟用後,您可以存取下列附加功能:

  • subgroup_invocation_id:子群組中執行緒索引的內建值。
  • subgroup_size:子群組大小存取權的內建值。
  • subgroupBallot(value): 傳回一組位元欄位,如果已啟用叫用的 value 為 true,則與 subgroup_invocation_id 的位元對應為 1,否則傳回 0。
  • subgroupBroadcast(value, id):從叫用使用 subgroup_invocation_id 相符的 id,向子群組中的所有叫用播送 value。注意: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 紋理切片

您現在可以在算繪傳遞中直接算繪 3D 紋理的切片,運用 GPURenderPassColorAttachment 中的新的 depthSlice 成員,將自身的功能超越常見的 2D 紋理算繪。舉例來說,您可以把這個附加元件直接算繪成 3D 紋理磁碟區,建立立體攝影的場景和效果。請參閱問題發生時間:1020

黎明更新

查看完整的修訂版本清單

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