這次的 WebGPU 功能數量可能有些微不足之處,但也有一些重大進展!日後推出的版本將包含著色器編譯速度等功能,以及使用 WGPUFuture 的實作非同步模型異動。
子群組 (功能開發中)
子群組功能會啟用 SIMD 層級的平行處理,讓群組中的執行緒能夠通訊及執行綜合數學運算 (例如計算 16 個數字的總和)。這提供了非常有效率的跨執行緒資料分享方式。
現代 GPU API 支援子群組作業,但命名和實作細節有所不同。Chrome 小組已找出這些共通點,目前正在努力將這項功能標準化。如有任何問題,請參閱提案和留言。
在 chrome://flags/#enable-experimental-web-platform-features
的「Experimental Web Platform 功能」標記後方,子群組最基本且未標準化的實作方式,讓開發人員可以試用並提供意見回饋,因為 WebGPU 尚未介紹實際的優點。
當 GPUAdapter
提供 "chromium-experimental-subgroups"
功能時,請要求具備此功能的 GPUDevice
在 WGSL 中取得實驗性子群組支援,並查看其 minSubgroupSize
和 maxSubgroupSize
限制。
您也必須使用 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
- 在 Android 上支援 WebGPU
- 在 Windows 上使用 DXC (而非 FXC) 進行著色器編譯
- 運算和轉譯傳遞中的時間戳記查詢
- 著色器模組的預設進入點
- 支援 display-p3 做為 GPUExternalTexture 色域
- 記憶體堆積資訊
- Dawn 最新消息
Chrome 120
Chrome 119
Chrome 118
Chrome 117
Chrome 116
- WebCodecs 整合
- GPUAdapter
requestDevice()
退回的裝置遺失 - 在呼叫
importExternalTexture()
的情況下,讓影片能夠流暢播放 - 規格符合程度
- 改善開發人員體驗
- Dawn 最新消息