WebGPU 的新功能 (Chrome 125)

François Beaufort
François Beaufort

這次 WebGPU 功能的數量可能有些微不足道,但有些重大進展才剛起步。日後推出的版本將包含多項功能,例如著色器編譯速度提升,以及使用 WGPUFuture 變更實作的非同步模型。

子群組 (開發中的功能)

子群組功能支援 SIMD 層級的平行處理,讓群組中的執行緒互相溝通並執行集體數學運算 (例如計算 16 個數字的總和)。這提供跨執行緒資料共用的高效率形式。

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

「實驗性網頁平台功能」是基本且未經標準化的子群組實作。標記為 chrome://flags/#enable-experimental-web-platform-features 的旗標,讓開發人員試用這項功能並提供意見回饋,因為在 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):透過與 id 相符的 subgroup_invocation_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 紋理磁碟區,藉此建立 voxel 場景和效果。請參閱問題 dawn:1020

日出最新消息

請參閱完整的修訂版本清單

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