Die Zukunft von WebGPU

François Beaufort
François Beaufort
Corentin Wallez
Corentin Wallez

Veröffentlicht: 21. November 2024

Die WebGPU-Spezifikation befindet sich ständig in der Entwicklung. Große Unternehmen wie Google, Mozilla, Apple, Intel und Microsoft treffen sich wöchentlich, um die Entwicklung zu besprechen. Die letzte Arbeitsgruppensitzung von GPU for the Web gab einen Einblick in die wichtigsten Ziele und Funktionen, die für die nächste Iteration von WebGPU geplant sind. In diesem Blogpost werden einige der wichtigsten Erkenntnisse aus dem Treffen erläutert.

Status „Empfohlener Kandidat“ erreichen

Ein Schwerpunkt des Treffens war die Besprechung des Fortschritts bei Meilenstein 0 und die abschließende Behebung der Probleme, die behoben werden müssen, bevor der Status „Empfehlung für die W3C-Kandidatur“ erreicht werden kann. Dies ist der nächste Schritt im Standardisierungsprozess und bietet stärkere Garantien für Stabilität und Schutz des geistigen Eigentums.

Die Teilnehmer der Videokonferenz waren sich einig, dass diese Probleme keine Hindernisse darstellen und zeitnah behoben werden können. Damit wurde der Weg für die W3C-Empfehlung für WebGPU geebnet.

Priorisierung neuer Funktionen

Die Teilnehmer der Videokonferenz haben auch neue Funktionen priorisiert. Er begann mit einer Liste von Funktionsanfragen, die aus dem Feedback von Entwicklern, Implementierern und Stakeholdern zusammengestellt wurde.

Ein Whiteboard mit einer handgeschriebenen Liste von Begriffen zu Computergrafik-APIs, darunter „Bindless“, „Subgroups“, „MDI“, „Push Constants“, „UMA“ und „Subgroup Matrix“.

Nach der Diskussion wurden die folgenden wichtigen WebGPU-Funktionen für KI identifiziert:

  • Untergruppen und Untergruppenmatrizen: Anwendungen können die schnelle lokale Kommunikation zwischen GPU-Threads nutzen und neben Shaderkernen auch Hardware für die Matrixmultiplikation mit fester Größe verwenden. Weitere Informationen finden Sie im Vorschlag für Untergruppen.

  • Texel-Buffer: Bieten eine effizientere Möglichkeit, kleine Datentypen wie 16‑Bit- oder 8‑Bit-Werte auf plattformübergreifende Weise zu speichern und darauf zuzugreifen. Das ist für einige ML-Algorithmen zur Bildverarbeitung wichtig. Sehen Sie sich die Folien zum Texel-Puffer an.

  • UMA-Pufferzuordnung: Verbessert die Leistung des Datenuploads, indem Kopien und Synchronisierungsoverhead reduziert oder eliminiert werden. Weitere Informationen finden Sie unter Spezifikationsproblem 2388.

Außerdem werden die folgenden WebGPU-Funktionen geprüft und priorisiert, um neue Arten von Rendering-Algorithmen zu ermöglichen:

  • Bindless: Dieser mit Spannung erwartete Funktionsvorschlag ist eine Voraussetzung für die meisten modernen Rendering-Algorithmen, da sie szenenweite Informationen benötigen. Mit Bindless können Shader im Vergleich zu den derzeit relativ strengen Limits eine unbegrenzte Anzahl von Ressourcen, einschließlich Texturen, verwenden.

  • Multi-Draw Indirect: Mit dieser Option können vorherige Berechnungen auf der GPU mehrere statt nur eine Zeichnung erstellen, wie es bei drawIndirect zuvor der Fall war. Dies ist eine wichtige Funktion für das GPU-gestützte Rendering, z. B. für das GPU-Culling von Objekten. Weitere Informationen finden Sie im Pull-Request 2315.

  • 64‑Bit-Atomare: Entweder in Buffers oder Texturen sind sie für die „Software-Rasterung“ auf der GPU erforderlich, indem der Tiefentest und das Schreiben einer 32‑Bit-Nutzlast in einem einzigen atomicMax-Vorgang zusammengefasst werden. Siehe Problem 4329.

Um die Funktionen von WebGPU und die Integration in die Webplattform zu verbessern, wurden die folgenden WebGPU-Funktionen diskutiert:

  • Kompatibilitätsmodus: Dieser Modus soll es ermöglichen, WebGPU auf einer größeren Anzahl von Geräten auszuführen, einschließlich Geräten, die nur OpenGL ES 3.1 unterstützen. Weitere Informationen finden Sie im Vorschlag für den Kompatibilitätsmodus.

  • WebXR: Ermöglicht die Verknüpfung des vorhandenen WebXR-Layers-Moduls mit WebGPU durch Bereitstellung von WebGPU-Swapchains für jeden Ebenentyp. Weitere Informationen finden Sie in den Folien zur WebGPU/WebXR-Integration.

  • Canvas2D: Verbesserte Interoperabilität zwischen Canvas 2D und WebGPU, was sowohl Leistungs- als auch Ergonomieprobleme angeht. Mit diesem WebGPU-Übertragungsvorschlag können Sie in WebGPU auf Text- und Pfadzeichnungen zugreifen und WebGPU-Rendering auf Canvas 2D anwenden.

Außerdem gab es Präsentationen und Diskussionen über die Bemühungen zur Verbesserung der WGSL-Tools und ‑Bibliotheken. Eine bemerkenswerte Initiative ist die Entwicklung von WESL (WGSL Extended Shading Language), mit der eine von der Community getriebene Reihe von Erweiterungen für WGSL bereitgestellt werden soll.

Weitere Informationen finden Sie in den ungefilterten Notizen zur Videokonferenz.

Gedanken

Bei diesem Treffen wurde die Bedeutung der Zusammenarbeit zwischen der WebGPU-Arbeitsgruppe, Entwicklern und der breiteren Grafik-Community bei der Gestaltung der Zukunft von WebGPU hervorgehoben. Die Arbeitsgruppe sucht aktiv nach Feedback zu den vorgeschlagenen Funktionen und ist bestrebt, mit Entwicklern zusammenzuarbeiten, damit WebGPU ihren Anforderungen entspricht.

Die nächsten Weiterentwicklungen von WebGPU versprechen einen bedeutenden Fortschritt. Sie eröffnen neue Möglichkeiten für Webgrafiken und ermöglichen es Entwicklern, noch immersivere und ansprechendere Web-KI-Erlebnisse zu schaffen.