这次 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 最新动态