WebGL + WebGPU 网络研讨会
夏季 2024
2024 年 7 月 23 日
WebGL 和 WebGPU 更新
Ken Russell(谷歌)和 Kelsey Gilbert(Mozilla)
代表 WebGL 工作组和 WebGPU 社群
khr.io/web202407
议程
WebGL 更新
- 扩展推广
- ANGLE/Metal 进展
- 上下文丢失的鲁棒性改进
WebGPU 更新
- 标准化
- 实现情况
- Three.js 的 WebGPU 后端
- 合作伙伴关系、资源和贡献
行动呼吁:加入 WebGL 和 WebGPU 社区
扩展推广
自上次聚会以来,有几个扩展被推广为社区批准:
- OES_sample_variables
- OES_shader_multisample_interpolation
- EXT_render_snorm
这完成了 Alexey Knyazev 提出的较小扩展集。特别感谢 Alexey 推动这些扩展!
已在 Chrome 中发布,并将在 Safari 18 中推出。
khr.io/web202407
ANGLE/Metal 进展
- ANGLE 的 Metal 后端仍在持续开发中
- 被 WebKit 的 WebGL 实现在 macOS/iOS 上使用,且即将用于 Chromium 的 macOS 版本。
- Chrome 正在逐步在 Intel CPU 的 Mac 上发布。
- 已在 Apple Silicon 上发布。
- 非阻塞程序链接支持接近完成
- 已作为 KHR_parallel_shader_compile 暴露。
- 修复了不稳定的遮挡查询结果。
- 感谢 Alexey Knyazev 进行的多项修复,ANGLE 的 Metal 后端现已通过完整的 WebGL 2.0.1 合规性测试套件!
- (不包括前端或测试错误)
- 为下一个规范和测试套件快照铺平了道路。 khr.io/web202407
上下文丢失的鲁棒性改进
- Kelsey Gilbert(Mozilla)正在推动 WebGL 规范的更改,使应用程序对 WebGL 上下文丢失/恢复更具鲁棒性。
- 当上下文丢失时,浏览器现在将从 createBuffer 或 createTexture 等操作返回非空对象。
- 这将有助于应用程序更容易正确响应上下文丢失事件,并减少空指针异常的可能性。
- 感谢 Kelsey 提出并推动这一变更,并修订了许多相关的合规性测试! khr.io/web202407
WebGPU
一个“现代”的网页图形 API:
- WebGL 的继任者,而不是替代品。
- 网页上的计算着色器!
- 更低的开销 API
- 未来功能的基础(无绑定、光线追踪、多线程……)
开发在 GitHub 和 W3C 上进行:
- 任何人都可以加入并参与开发! khr.io/web202407
WebGPU 标准化更新
当前 API 和 WGSL 规范基本准备好进行 v1.0 “候选推荐”快照!我们主要处于规范清理阶段,完成待办事项。
核心规范稳步进展。兼容模式的重大进展 - 请参见以下幻灯片。
WGSL 原语的持续进展,使得网页上的 AI 模型更快 - 8 位点积刚刚落地,感谢英特尔在上海的 Web 图形团队!
WGSL 指针改进通过“unrestricted_pointer_parameters”和“pointer_composite_access”语言特性实现。
khr.io/web202407
WebGPU 实现状态
Safari
- 在 Safari 技术预览版中启用 - 请测试!
Firefox
- 在 Windows 和 Linux 的 Nightly 版中启用,供测试和实验使用!
- Mac 版本正在进行中。
- 目标是年底前发布正式版!
Chromium
- 当前在 Windows、ChromeOS、Mac 和 Android 上发布!
- 跟踪最新的 WebGPU 和 WGSL 规范。
- 访问 web.dev/gpu 获取更高级别的细节。
- 期待您的反馈以及基于 WebGPU 构建的应用程序!
- 实现之间已经大部分互操作! khr.io/web202407
Three.js 的 WebGPU 后端
- Three.js 的 WebGPU 后端最近取得了许多进展。
- 在 Three.js 的示例中已有多个 WebGPU 示例。
- 创建了新的 Three.js 着色语言,以简化编写新的基于节点的材质系统。
- TSL 同时生成 WebGPU 和 WebGL 的着色语言。
- 为了帮助开发者过渡到 WebGPU 后端,实际上大多数功能都有 WebGL 2.0 的回退支持!
- 这是 Three.js 的一次重大重构;团队计划在今年晚些时候发布 WebGPURenderer 的第一次正式版本。
- 特别感谢 sunag 推动这项工作!
- 请关注 Three.js 以获取团队的最新更新。 khr.io/web202407
WebGPU 示例
- 经过重构以便于参与。
- 也可以添加外部示例!
- 若干新示例:
- MSDF 文本
- 带骨骼的网格
- 渲染包裁剪
- 点
- 多个画布
- 提交您的示例!!! khr.io/web202407
WebGPU 合作伙伴关系
在流行的网页 3D 库(如 Three.js、Babylon.js)上,WebGPU 后端稳步推进。
与英特尔、TensorFlow.js、谷歌会议、MediaPipe 等团队的持续合作。
PlayCanvas 正在进行重大重构,以支持 WebGPU。
跟踪错误:github.com/playcanvas/…
与 Unity 的反馈和合作非常出色,他们正在研究将现有着色器移植到 WGSL 及我们的新统一性分析要求!
khr.io/web202407
WebGPU 资源
教程:
- WebGPU 基础知识 by Gregg
- WebGPU 最佳实践 by Brandon
khr.io/web202407
WebGPU 贡献!
有多种参与方式!
- 尝试 API 并提供反馈(请参阅后面的幻灯片了解沟通渠道)。
- 尝试使用 WebGPU 发布网站。
- 可以在流行框架(如 Three.js、Babylon.js 和 TF.js)中使用 WebGPU 支持。
- 帮助进行合规性测试。
- 贡献使用 WebGPU 的示例/演示/文章。 khr.io/web202407
加入 WebGL 和 WebGPU 社区
- WebGL 和 WebGPU API 得到了充满活力的在线社区的支持!
- 如果您正在使用这些 API 开发,我们希望听到您的声音!
- 在 WebGL 方面:
- 请加入 WebGL 开发者邮件列表:产品、演示、新工具、职位发布、问题、讨论 - 欢迎所有内容!
- Khronos 的 public_webgl 邮件列表承载较低流量的规范公告。
- WebGL Matrix 聊天室提供了与浏览器实现者和其他开发者交流的方式。
- 您可以通过搜索 Twitter、Mastodon 上的 #webgl 找到很多有趣的内容。
加入 WebGL 和 WebGPU 社区
- 在 WebGPU 方面:
- 有 API 反馈吗?请查看 WebGPU “gpuweb” 仓库,了解与社区小组沟通的选项。
- WebGPU Matrix 聊天室(#WebGPU:matrix.org)也是与浏览器实现者和其他开发者直接交流的绝佳方式。
- 在 Twitter、Mastodon 上的 #webgpu 上,越来越多的有趣内容正在出现。
- 我们期待着您的反馈!
本次演示的录音将可在 www.khronos.org/events/webg… 获得。
有关 WebGL 的更多信息,请访问 www.khronos.org/webgl。
有关 WebGPU 的更多信息,请访问 github.com/gpuweb/gpuw…。