WebGPU 中的新变化 (Chrome 139)

François Beaufort
François Beaufort

Published: July 30, 2025

支持 BC 和 ASTC 压缩格式的 3D 纹理

通过 "texture-compression-bc-sliced-3d""texture-compression-astc-sliced-3d" WebGPU 功能,可以支持使用块压缩 (BC) 和自适应可伸缩纹理压缩 (ASTC) 格式的 3D 纹理。这样,您就可以利用 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 示例,并参阅 chromestatus 条目

使用 WebGPU 渲染的 3D 脑部扫描图像。
采用 ASTC 压缩格式的 3D 纹理的脑部扫描图像。

新增“核心功能和限制”功能

即将推出的 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 的选择启用、略有限制版本。此模式旨在运行 OpenGL ES 3.1 和 Direct3D11 等旧版图形 API,从而显著扩大应用在不支持核心 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
}

启用该功能

默认情况下,WebGPU 兼容模式在 Chrome 中未启用,但您可以在 Chrome 139 中通过显式启用该功能来试用。您可以通过在 chrome://flags/#enable-experimental-web-platform-features 处启用“实验性 Web 平台功能”标志,在本地激活该功能。

如需为应用的所有访问者启用此功能,我们正在进行源试用,试用期将于 Chrome 145(2026 年 4 月 21 日)结束。如需参与试用,请参阅源试用入门博文。

Dawn 更新

message 实参已添加到 WGPUQueueWorkDoneCallback 函数中,以便与其他也采用状态的回调函数保持一致。请参阅 webgpu-headers PR

当 emdawnwebgpu 与 -sSHARED_MEMORY 关联时,其 webgpu.cpp 文件也会使用此标志进行编译。请参阅 Dawn CL 244075

这仅涵盖了一些关键亮点。请查看提交的完整列表

WebGPU 新变化

列出了 WebGPU 新变化 系列中涵盖的所有内容。

Chrome 149-150

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

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