这次 WebGPU 功能的数量可能看起来有点少,但重大进展即将到来!后续版本将包含 DP4a、只读和读写存储纹理、单独的模板和深度方面控制、渲染到 3D 纹理切片以及着色器编译改进等功能。
与此同时,不妨了解如何在无头模式下使用 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 的兼容模式,以提供功能略受限制的 WebGPU 版本,该版本适用于 D3D11 和 OpenGL ES 等旧版 API,从而解决此问题。这将扩大 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 },
});
Dawn 更新
添加了一个名为“expose_wgsl_experimental_features”的新实例切换开关,以使实例仅公开实验性 WGSL 功能,而非不安全的 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 更新