WebGPU 新功能 (Chrome 139)

François Beaufort
François Beaufort

發布日期:2025 年 7 月 30 日

支援 BC 和 ASTC 壓縮格式的 3D 紋理

"texture-compression-bc-sliced-3d""texture-compression-astc-sliced-3d" WebGPU 功能新增了對 3D 紋理的支援,可使用區塊壓縮 (BC) 和自動調整可擴充紋理壓縮 (ASTC) 格式。這可讓您充分運用 BC 和 ASTC 格式的有效壓縮功能,處理體積紋理資料,大幅減少記憶體用量和頻寬需求,同時盡量降低對視覺品質的影響。這在科學視覺化、醫學影像和進階算繪技術等領域特別有價值。

下列程式碼片段會檢查轉接器是否支援 BC 和 ASTC 壓縮格式的 3D 紋理,並在這些功能可用時要求裝置。

const adapter = await navigator.gpu.requestAdapter();

const requiredFeatures = [];
if (adapter?.features.has("texture-compression-bc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-bc",
    "texture-compression-bc-sliced-3d",
  );
}
if (adapter?.features.has("texture-compression-astc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-astc",
    "texture-compression-astc-sliced-3d",
  );
}
const device = await adapter?.requestDevice({ requiredFeatures });

// Later on...
if (device.features.has("texture-compression-astc-sliced-3d")) {
  // Create a 3D texture using ASTC compression
} else if (device.features.has("texture-compression-bc-sliced-3d")) {
  // Create a 3D texture using BC compression
} else {
  // Fallback: Create an uncompressed 3D texture
}

如要探索 3D 腦部掃描,請查看「Volume Rendering - Texture 3D WebGPU sample」,並參閱 chromestatus 項目

使用 WebGPU 轉譯的 3D 腦部掃描影像。
以 ASTC 壓縮格式呈現的 3D 紋理腦部掃描圖像。

新增「core-features-and-limits」功能

即將推出的 WebGPU 相容模式將導入新的 "core-features-and-limits" 功能。這項功能表示轉接器或裝置支援 WebGPU 規格的核心功能和限制。目前只有「核心」WebGPU 版本,因此所有 WebGPU 實作項目都必須在支援的功能中加入 "core-features-and-limits"

日後推出 WebGPU 相容性模式時,配接器或裝置可能不會有這項功能,表示這是相容性模式配接器或裝置,而非核心配接器或裝置。在裝置上啟用這項功能後,所有相容模式限制 (功能和限制) 都會解除。

如需詳細說明和 WebGPU 相容模式的使用方式,請參閱說明文件和下節內容。請參閱問題 418025721

WebGPU 相容模式的來源試用

WebGPU 是專為現代圖形設計的強大 API,與 Vulkan、Metal 和 Direct3D 12 等技術一致。不過,仍有大量裝置不支援這些較新的 API。舉例來說,在 Windows 上,有 31% 的 Chrome 使用者沒有 Direct3D 11.1 以上版本。在 Android 裝置上,有 15% 的 Android 使用者沒有 Vulkan 1.1,其中 10% 的使用者完全沒有 Vulkan。

這對想盡量擴大應用程式觸及範圍的開發人員來說,是一大挑戰。他們通常必須開發多種實作方式 (例如 WebGPU 和 WebGL),接受核心 WebGPU 的受眾較少,或是繼續使用 WebGL,錯過 WebGPU 的進階功能 (例如 GPU 運算)。

WebGPU 相容模式的視覺化表示。
WebGPU 相容模式的適用範圍擴大。

WebGPU 相容模式提供解決方案,讓您選擇使用略有限制的 WebGPU API 版本。這個模式專為執行舊版圖形 API (例如 OpenGL ES 3.1 和 Direct3D11) 而設計,可大幅擴展應用程式的觸及範圍,讓不支援核心 WebGPU 所需新式明確圖形 API 的裝置也能使用。

由於相容性模式是 WebGPU 的子集,因此使用相容性模式建構的應用程式也是有效的 WebGPU「核心」應用程式。也就是說,即使瀏覽器不支援相容模式,也能順暢執行。

對於許多基本應用程式,啟用相容模式就像呼叫 requestAdapter() 時傳遞 featureLevel: "compatibility" 一樣簡單。較複雜的應用程式可能需要稍微調整,才能符合模式的限制。Generate Mipmap WebGPU 範例就是個好例子。

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({
  featureLevel: "compatibility",
});

const hasCore = adapter?.features.has("core-features-and-limits");
const device = await adapter?.requestDevice({
  requiredFeatures: (hasCore ? ["core-features-and-limits"] : []),
});

if (device?.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions will apply
}

啟用這項功能

Chrome 預設不會啟用 WebGPU 相容模式,但您可以在 Chrome 139 中明確啟用這項功能,進行實驗。如要在本機啟用這項功能,請前往 chrome://flags/#enable-experimental-web-platform-features 啟用「Experimental Web Platform Features」旗標

如要為應用程式的所有訪客啟用這項功能,目前正在進行原始碼試用,預計在 Chrome 145 (2026 年 4 月 21 日) 結束。如要參加試用,請參閱「開始使用來源試用計畫」一文。

黎明更新

WGPUQueueWorkDoneCallback 函式中新增 message 引數,以便與其他也會採用狀態的回呼函式保持一致。請參閱 webgpu-headers PR

將 emdawnwebgpu 連結至 -sSHARED_MEMORY 時,系統也會使用這個標記編譯 webgpu.cpp 檔案。請參閱 Dawn CL 244075

這僅涵蓋部分重點。請參閱完整的提交清單

WebGPU 最新消息

WebGPU 最新消息」系列涵蓋的所有主題清單。

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

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