In Chrome wird Unterstützung für WebGPU hinzugefügt.

Das Unternehmen Google hat angekündigt, dass die Unterstützung für die Grafik-API WebGPU und die Shadersprache WGSL (WebGPU Shading Language) standardmäßig in der Chrome-Version 113, die am 2. Mai veröffentlicht werden soll, integriert wird. WebGPU bietet eine Programmierschnittstelle, die der von Vulkan, Metal und Direct3D 12 ähnelt, um Operationen auf der GPU wie Rendering und Berechnungen durchzuführen, und ermöglicht es, Shader-Programme zu schreiben, die auf der GPU ausgeführt werden. Die Implementierung von WebGPU wird zunächst nur in den Builds für ChromeOS, macOS und Windows verfügbar sein. Für Linux und Android wird die Unterstützung von WebGPU später aktiviert.

Neben Chrome wird die experimentelle Unterstützung von WebGPU seit April 2020 in Firefox und seit November 2021 in Safari getestet. Um WebGPU in Firefox zu aktivieren, müssen die Flags dom.webgpu.enabled und gfx.webgpu.force-enabled in about:config gesetzt werden. Über Pläne zur standardmäßigen Aktivierung von WebGPU in Firefox und Safari wurde bisher nicht berichtet. Die für Firefox und Chrome entwickelten Implementierungen von WebGPU sind in Form von separaten Bibliotheken verfügbar – Dawn (C++) und wgpu (Rust), die zur Integration der WebGPU-Unterstützung in eigene Anwendungen verwendet werden können. Zudem wird daran gearbeitet, die Unterstützung von WebGPU in populäre JavaScript-Bibliotheken, die ursprünglich WebGL verwendeten, hinzuzufügen. Beispielsweise wird bereits eine vollständige Unterstützung von WebGPU in Babylon.js und eine partielle Unterstützung in Three.js, PlayCanvas und TensorFlow.js bekannt gegeben.

Konzeptionell unterscheidet sich WebGPU von WebGL in etwa so, wie sich die Grafik-API Vulkan von OpenGL unterscheidet. Allerdings basiert WebGPU nicht auf einer bestimmten Grafik-API, sondern stellt eine universelle Schicht dar, die dieselben Low-Level-Primitiven verwendet, die in Vulkan, Metal und Direct3D vorhanden sind. WebGPU bietet Anwendungen in JavaScript Mittel für eine Low-Level-Kontrolle über die Organisation, Verarbeitung und Übertragung von Befehlen an die GPU, das Management von zugehörigen Ressourcen, Speicher, Buffern, Texturobjekten und kompilierten Grafik-Shadern. Ein solcher Ansatz ermöglicht eine höhere Leistung grafischer Anwendungen durch reduzierte Overheadkosten und eine effizientere Nutzung von GPU-Ressourcen.

WebGPU ermöglicht die Erstellung komplexer 3D-Projekte für das Web, die nicht schlechter funktionieren als separate Programme, die direkt Vulkan, Metal oder Direct3D verwenden, aber nicht an spezifische Plattformen gebunden sind. WebGPU bietet auch zusätzliche Möglichkeiten beim Portieren nativ grafischer Programme in eine Form, die auf Web-Technologien arbeiten kann, dank der Kompilierung in WebAssembly. Neben 3D-Grafik deckt WebGPU auch die Möglichkeiten ab, die mit der Auslagerung von Berechnungen auf die GPU und der Ausführung von Shadern verbunden sind.

Wichtige Merkmale von WebGPU:

  • Getrennte Verwaltung von Ressourcen, Vorbereitungsarbeiten und der Übertragung von Befehlen an die GPU (in WebGL war ein Objekt für alles verantwortlich). Es werden drei separate Kontexte bereitgestellt: GPUDevice zur Erstellung von Ressourcen wie Texturen und Puffern; GPUCommandEncoder zur Kodierung einzelner Befehle, einschließlich Rendering- und Berechnungsphasen; GPUCommandBuffer zur Übertragung in die Warteschlange zur Ausführung auf der GPU. Das Ergebnis kann in einem Bereich gerendert werden, der mit einem oder mehreren Elementen canvas verknüpft ist, oder ohne Ausgabe verarbeitet werden (z. B. beim Ausführen von Berechnungsaufgaben). Die Trennung der Phasen erleichtert die Aufteilung der Erstellung von Ressourcen und die Vorbereitungsoperationen in verschiedene Handler, die in unterschiedlichen Threads ausgeführt werden können.
  • Ein anderer Ansatz bei der Verarbeitung von Zuständen. In WebGPU werden zwei Objekte vorgeschlagen - GPURenderPipeline und GPUComputePipeline, die es ermöglichen, verschiedene, vom Entwickler vordefinierte Zustände zu kombinieren, was dem Browser die Ressourcenersparnis bei zusätzlichen Arbeiten wie der Neukompilierung von Shadern ermöglicht. Zu den unterstützten Zuständen gehören: Shader, Layout der Vertex-Puffer und Attribute, Layout der angehängten Gruppen, Mischungen, Tiefe und Vorlagen, Ausgabeformate nach dem Rendering.
  • Ein Bindungsmodell, das stark an die in Vulkan vorhandenen Mittel zur Gruppierung von Ressourcen erinnert. Um Ressourcen in Gruppen zusammenzufassen, stellt WebGPU das Objekt GPUBindGroup bereit, das während der Befehlsaufzeichnung mit anderen gleichartigen Objekten verbunden werden kann, um in Shaders verwendet zu werden. Die Erstellung solcher Gruppen ermöglicht es dem Treiber, die notwendigen Vorbereitungen im Voraus durchzuführen, während der Browser deutlich schneller die Ressourcenzuordnungen zwischen den Renderaufrufen ändern kann. Das Layout der Ressourcenzuordnungen kann im Voraus mit dem Objekt GPUBindGroupLayout definiert werden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4