WebGL + WebGPU 网络研讨会 夏季 2024 年 7 月 23 日 WebGL 和 WebGPU 更新

226 阅读5分钟

来源: www.khronos.org/assets/uplo…

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 社区

khr.io/web202407


扩展推广

自上次聚会以来,有几个扩展被推广为社区批准:

  • 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 上进行:


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 示例

webgpu.github.io/webgpu-samp…

  • 经过重构以便于参与。
  • 也可以添加外部示例!
  • 若干新示例:
    • 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 贡献!

有多种参与方式!

  • 尝试 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…