Chrome 113 aktiviert WebGPU, eine moderne Grafik-API mit geringem Overhead für das Web.

Chrome 113 aktiviert WebGPU, eine moderne Grafik-API mit geringem Overhead für das Web.

Google gab heute bekannt, dass es die WebGPU-Unterstützung in seinem Standardbrowser Chrome ab Version 113 aktivieren wird, die sich derzeit in der Betaphase befindet. WebGPU befindet sich seit 2017 in der Entwicklung und ist eine Grafik-API der nächsten Generation, die darauf abzielt, APIs mit geringem Overhead wie Microsoft Direct3D 12, Apple Metal und Vulkan in Webbrowsern und anderen Anwendungen zu nutzen.

Die WebGPU-Unterstützung ist schon seit einiger Zeit verfügbar, in Chrome ist sie jedoch standardmäßig deaktiviert, da die API noch nicht finalisiert wurde und es bei jedem Update zu Problemen kommen kann. Google sagt, dass sowohl Mozilla als auch Apple irgendwann WebGPU in Firefox und Safari unterstützen werden, und Browser wie Microsoft Edge und Opera, die auf der Chromium-Browser-Engine basieren, könnten es möglicherweise ermöglichen, wie Google es getan hat.

Chrome 113 unterstützt zunächst WebGPU unter Windows, macOS und ChromeOS, während „Unterstützung für andere Plattformen“ wie Linux und Android „später in diesem Jahr“ kommt. Diese Version des Browsers sollte irgendwann im Mai für alle Chrome-Benutzer verfügbar sein.

Die Unterstützung in Chrome ist ein großer Fortschritt für jeden neuen Standard, egal ob es sich um eine neue oder aktualisierte API, ein Bildformat oder einen Videocodec handelt. Laut StatCounter macht Chrome selbst rund zwei Drittel des Browser-Marktanteils weltweit aus, und fast 80 Prozent des gesamten Browser-Marktanteils, wenn man andere Chromium-basierte Browser mitzählt. Sobald Safari und Firefox die Unterstützung hinzufügen, können praktisch alle Webbrowser auf der ganzen Welt WebGPU-Code ausführen. Daher lohnt es sich, kurz zu erklären, was WebGPU ist und warum es existiert.

Was ist eine Web-GPU?

WebGPU ist sozusagen der Nachfolger von WebGL , einer viel älteren API, die es Ihnen ermöglicht, OpenGL-basierte Grafiken in Ihrem Browser anzuzeigen, ohne dass zusätzliche Plugins von Drittanbietern wie Adobe Flash erforderlich sind. Während WebGL bei seiner Ankündigung im Jahr 2009 revolutionär war, leidet es heute unter vielen der gleichen Probleme wie OpenGL: Es nutzt die Vorteile moderner GPUs nicht voll aus, kann aufgrund des Treiber-Overheads an Leistung verlieren und hat nur begrenzte Möglichkeiten. und umständliche Unterstützung für GPU-Rechenlasten.

„Während WebGL in erster Linie zum Zeichnen von Bildern konzipiert ist, aber (mit mehr Aufwand) für andere Arten von Berechnungen umfunktioniert werden kann, bietet WebGPU erstklassige Unterstützung für die Durchführung allgemeiner Berechnungen auf der GPU“, heißt es in einem Dokumententwurf, der erklärt, warum es WebGPU gibt . Die neue API wird die Grafik in Umgebungen wie Babylon.js und Spiele-Engines wie Unity verbessern; wird GPU-beschleunigte Arbeitslasten unterstützen, wie sie für maschinelles Lernen und künstliche Intelligenz verwendet werden; und kann es Foto- und Video-Web-Apps (unter anderem) erleichtern, die GPU-Beschleunigung zu nutzen, von der native Apps profitieren.

WebGPU wird von einer Arbeitsgruppe entwickelt, der Vertreter von Google, Microsoft, Apple, Mozilla, Intel und vielen anderen Unternehmen angehören . Aus diesem Grund wurde die API so konzipiert, dass sie möglichst weitgehend kompatibel ist. WebGPU ist keine direkte Implementierung einer vorhandenen Grafik-API, sondern eine native API, die auf Direct3D 12, Metal und Vulkan aufbaut und mit diesen interagiert. Dieser Erklärer von Surma, einem Shopify-Ingenieur und ehemaligen Google-Mitarbeiter, fasst es gut zusammen (unser Schwerpunkt):

„Während WebGL nur eine dünne Hülle um OpenGL ist, hat WebGPU einen anderen Ansatz gewählt. Es führt seine eigenen Abstraktionen ein und spiegelt keine dieser nativen APIs direkt wider. Dies liegt zum Teil daran, dass nicht auf allen Systemen eine einzelne API verfügbar ist, aber auch daran, dass viele Konzepte (z. B. Speicherverwaltung auf extrem niedriger Ebene) nicht idiomatisch für die Web-API sind. Stattdessen wurde die WebGPU so konzipiert, dass sie sich „netzähnlich“ anfühlt und bequem auf allen nativen Grafik-APIs sitzt und deren Eigenheiten abstrahiert. Es ist im W3C standardisiert und alle großen Browser-Anbieter sitzen an einem Tisch.“

Dies hat den Vorteil, dass WebGPU-Code sehr portabel wird – schreiben Sie WebGPU-Code und solange Benutzer über Hardware und einen Browser verfügen, der dies unterstützt, sollten Sie auf einem Windows-System mit Direct3D und auf einem Android-Telefon mit Vulkan das gleiche Ergebnis erhalten. Und es vermeidet einige der Hacks, die WebGL am Laufen halten – zum Beispiel verwendet WebGL unter Windows und macOS nicht einmal OpenGL direkt, sondern verwendet stattdessen einen Übersetzer namens ANGLE, der stattdessen OpenGL-API-Aufrufe in Direct3D- und Metal-API-Aufrufe umwandelt . Mit WebGPU ist es nicht nötig, ein völlig separates Projekt zu starten, um eine langsame oder schlecht gewartete Implementierung von OpenGL zu schreiben.

WebGPU verfügt außerdem über eine eigene Shader-Sprache (WGSL), an deren Unterstützung das Chrome-Team noch arbeitet. In der heutigen Ankündigung heißt es, dass Google in einer zukünftigen Version „einen tieferen Zugriff auf Shader-Kerne“ über WGSL ermöglichen will. Wie der Rest der WebGPU-API ist WGSL plattformunabhängig und lässt sich problemlos in die bevorzugte Shader-Sprache des jeweiligen Betriebssystems übersetzen, auf dem Sie es verwenden.

Schließlich ist die WebGPU-API trotz des Wortes „Netzwerk“ im Namen nicht auf Browser beschränkt. Das WGPU-Projekt ist Rusts Version von WebGPU, mit der Sie WebGPU-Anwendungen schreiben und diese außerhalb von Webbrowsern ausführen können.

Wenn Sie jetzt mit WebGPU experimentieren möchten, ist Chrome 113 Beta hier verfügbar . Ein GitHub-Repository mit Codebeispielen ist hier verfügbar , und es gibt offizielle Dokumentation für WebGPU und WGSL .

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert