這次的 WebGPU 功能數量可能不多,但重大進展即將到來!接下來的版本將包含 DP4a、唯讀和讀寫儲存體紋理、獨立的遮罩和深度方面控制項、轉譯為 3D 紋理切片,以及著色器編譯改善等功能。
同時,建議你瞭解如何在 Headless Chrome 中使用 WebGPU 和 WebGL 支援功能,提升 Web AI 模型測試效率,以及瞭解 WebGPU 在 Chrome 中停用或無法運作的原因。
使用相容性模式擴大觸及範圍 (開發中的功能)
WebGPU 與新型圖形 API (Vulkan、Metal 和 D3D12) 相容,但部分裝置不支援這些 API。這樣會限制 WebGPU 的無障礙,特別是在 Windows (31% 的 Chrome 使用者缺乏 D3D11.1 以上版本)、Android (23% 未使用 Vulkan 1.1 以上版本) 和 ChromeOS (越來越多人採用 Vulkan)。
Chrome 團隊正在開發 WebGPU 中的相容性模式,提供可在舊版 API (例如 D3D11 和 OpenGL ES) 上運作的 WebGPU 版本,以解決這個問題。這會擴大 WebGPU 的潛在使用者族群。
重要的是,使用相容性模式的應用程式仍是完全有效的 WebGPU 應用程式。不支援相容性模式的裝置會預設為使用核心 WebGPU 轉接器,確保廣泛的使用性。
提高 maxVertexAttributes 上限
根據預設,建立 GPURenderPipeline 時,緩衝區內屬性總數的上限為 16。在支援的情況下,現在可以使用 maxVertexAttributes 限制,最多要求 30 個。請參閱以下範例和問題 dawn:2223。
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxVertexAttributes < 30) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max vertex attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxVertexAttributes: 30 },
});
黎明更新
新增了名為「expose_wgsl_experimental_features」的新執行個體切換,以確保執行個體僅公開實驗性 WGSL 功能,而非不安全的功能。如此一來,使用者不必啟用「allow_unsafe_apis」切換按鈕,也能使用安全的實驗性 WGSL 功能。請參閱問題 dawn:2260。
Node.js 的 Dawn 繫結最近的改善項目包括:
- 已新增
GPUSupportedFeatures::getSize()
。 - 已實作
GPUAdapter
過時機制。 GPUInternalError
現在可正確回報裝置資訊。- 屬性現在可進行列舉。
這份文件僅涵蓋部分重點。請參閱完整的修訂版本清單。
WebGPU 新功能
以下是「WebGPU 最新消息」系列文章中涵蓋的所有內容。
Chrome 131
- WGSL 中的裁剪距離
- GPUCanvasContext getConfiguration()
- 點和線圖元不得有深度偏差
- 針對子群組的內建函式
- 多重繪製間接交易的實驗性支援
- 著色器模組編譯選項嚴格數學
- 移除 GPUAdapter requestAdapterInfo()
- Dawn 更新
Chrome 130
Chrome 129
Chrome 128
Chrome 127
Chrome 126
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 更新