WebGPU

From HandWiki
(Redirected from WebGPU Shading Language)
Short description: Web standard and API
WebGPU
StatusWorking Draft (WD)
Year started18 May 2021 (2021-05-18)
First published18 May 2021 (2021-05-18)
Latest versionW3C Working Draft
(As of 2023) ((As of 2023))
OrganizationW3C
Committee
  • GPU for the Web WG
  • GPU for the Web CG
Editors
  • Justin Fan
  • Brandon Jones
  • Dzmitry Malyshau
  • Myles C. Maxfield
  • Kai Ninomiya
Related standards
Domain
Websitewww.w3.org/TR/webgpu/

WebGPU is the working name for a potential web standard and JavaScript API for accelerated graphics and compute, aiming to provide "modern 3D graphics and computation capabilities". It is developed by the W3C GPU for the Web Community Group with engineers from Apple, Mozilla, Microsoft, Google, and others.[1]

Unlike WebGL, WebGPU is not a direct port of any existing native API. It is based on APIs provided by Vulkan, Metal, and Direct3D 12 and is intended to provide high performance across mobile and desktop platforms.[2] Mobile platforms will be limited in creation of WebGPUDevice objects that will require modern graphics APIs (mentioned above).[note 1]

The first conceptual prototype called NXT was showcased in early 2017 by the Chromium team.[3] The Google Chrome Development Team has named it as a "successor" to the WebGL/2 JavaScript APIs.[4][5] On April 6, 2023, Google announced that the Chromium and Google Chrome browsers will ship with WebGPU support enabled on ChromeOS devices with Vulkan support, macOS, and Windows devices with Direct3D 12 starting with Chromium/Chrome 113. WebGPU support for other platforms including Linux and Android will be added at a later date.[6]

History

On June 8, 2016, Google showed "Explicit web graphics API" presentation to the WebGL working group (during the bi-annual face to face meeting).[7] The presentation explored the basic ideas and principles of building a new API to eventually replace WebGL, aka "WebGL Next".

On January 24, 2017, Khronos hosted an IP-free meeting dedicated to discussion of "WebGL Next" ideas, collided with WebGL working group meeting in Vancouver.[8] Google team presented the NXT prototype implementing a new API that could run in Chromium with OpenGL, or standalone with OpenGL and Metal. NXT borrowed concepts from all of Vulkan, Direct3D 12, and Metal native APIs. Apple and Mozilla representatives also showed their prototypes built on Safari and Servo correspondingly, both of which closely replicated the Metal API.

W3C Working Group

On February 7, 2017, Apple's WebKit team proposed the creation of the W3C community group to design the API. At the same time they announced a technical proof of concept and proposal under the name "WebGPU", based on concepts in Apple's Metal.[9][10][11] The WebGPU name was later adopted by the community group as a working name for the future standard rather than just Apple's initial proposal.[2] The initial proposal has been renamed to "WebMetal" to avoid further confusion.[12]

The W3C "GPU for the Web" Community Group was launched on February 16, 2017. At this time, all of Apple, Google, and Mozilla had experiments in the area, but only Apple's proposal was officially submitted to the "gpuweb-proposals" repository.[13][14][15] Shortly after, on March 21, 2017, Mozilla submitted a proposal for WebGL Next within Khronos repository, based on the Vulkan design.[16][17]

On June 1, 2018, citing "resolution on most-high level issues" in the cross-browser standardization effort, Google's Chrome team announced intent to implement the future WebGPU standard.[2]

Technology

WebGPU uses its own shading language called WGSL that was designed to be trivially translatable to SPIR-V, until complaints caused redirection into a more traditional design, similar to other shading languages. The syntax is similar to Rust.[18] Tint is a Google-made compiler for WGSL.[19] Naga is a similar project developed for the needs of wgpu-rs.[20]

Implementation

Both Chrome and Firefox support WebGPU with SPIR-V, with work ongoing for the WGSL front-end. Firefox and Deno use the Rust wgpu library.[21] Safari uses it via WebKit implementation that follows upstream specifications of both WebGPU and WGSL.[22]

On April 6, 2023, Google announced Chromium support for WebGPU on ChromeOS, macOS, and Windows.[6]

See also

Notes

  1. "[...] WebGPUDevice will require the native platform to expose a modern graphics API: [...]"[2]

References

  1. "GPU for the Web Community Group". https://www.w3.org/community/gpu/. 
  2. ((Google)) (2019-08-01). "googlearchive/nxt-standalone: DO NOT USE, UPSTREAM REPO IS https://dawn.googlesource.com/dawn". https://github.com/googlearchive/nxt-standalone. 
  3. "Origin Trials". https://developer.chrome.com/origintrials/#/view_trial/118219490218475521. 
  4. "WebGPU - Chrome Platform Status". https://chromestatus.com/feature/6213121689518080. 
  5. 6.0 6.1 "Chrome ships WebGPU" (in en). https://developer.chrome.com/blog/webgpu-release/. 
  6. Wallez, Corentin. "Explicit web graphics API". https://docs.google.com/presentation/d/1FkfvYgwlFmdrx8GhqomFgL0B0ppb6LNXBPT9DyQE0qY. 
  7. Wallez, Corentin; Ninomiya, Kai. "WebGL Next investigations". https://docs.google.com/presentation/d/1mLQEM__twfivV7nJLDBIomS9pegOYkJQWyM6lTse4PQ. 
  8. "Next-generation 3D Graphics on the Web". WebKit. 2017-02-07. https://webkit.org/blog/7380/next-generation-3d-graphics-on-the-web/. 
  9. "Apple seeks to position Metal as part of new 3D graphics standard for web" (in en-US). http://appleinsider.com/articles/17/02/07/apple-seeks-to-position-metal-as-part-of-new-3d-graphics-standard-for-web. 
  10. Claburn, Thomas (2017-02-08). "Web-standards-allergic Apple unveils WebGPU, a web graphics standard". https://www.theregister.co.uk/2017/02/08/apple_webgpu/. 
  11. "WebGPU Prototype and Demos". 2017-04-05. https://webkit.org/blog/7504/webgpu-prototype-and-demos/. 
  12. Jackson, Dean (2017-02-16). "Welcome and Getting Started". public-gpu (Mailing list). Retrieved 2018-09-11.
  13. Jackson, Dean. "Add Apple's WebGPU proposal". https://github.com/gpuweb/proposals/commit/e608653babcc038c54212e99c941d5511bf76dc2. 
  14. Malyshau, Dzmitry. "Prototyping a new 3D API for the Web". https://kvark.github.io/3d/api/2016/12/17/webmetal.html. 
  15. Malyshau, Dzmitry (2017-03-21). "Defining the Web platform". https://kvark.github.io/web/3d/api/mozilla/2017/03/21/web-platform.html. 
  16. Malyshau, Dzmitry. "Mozilla's contribution: Obsidian API". https://github.com/KhronosGroup/WebGLNext-Proposals/pull/2. 
  17. WebGPU Shading Language specification
  18. Tint source code
  19. Naga source code
  20. wgpu, Rust Graphics Mages, 2024-01-03, https://github.com/gfx-rs/wgpu, retrieved 2024-01-03 
  21. "Implementation Status" (in en). gpuweb. https://github.com/gpuweb/gpuweb/wiki/Implementation-Status. 

External links