In Chrome wird die Unterstützung von WebGPU aktiviert.

Google hat angekündigt, dass die Unterstützung für die grafische API WebGPU und die Shading-Sprache WGSL (WebGPU Shading Language) in der Chrome-Version 113 standardmäßig aktiviert wird, die am 2. Mai veröffentlicht werden soll. WebGPU bietet eine ähnliche Programmierschnittstelle wie Vulkan, Metal und Direct3D 12, um Operationen auf der GPU durchzuführen, wie z. B. Rendering und Berechnungen, und ermöglicht die Verwendung einer Shading-Sprache zum Schreiben von Programmen, die auf der GPU ausgeführt werden. Die Implementierung von WebGPU wird zunächst nur in Builds für ChromeOS, macOS und Windows verfügbar sein. Die Unterstützung für Linux und Android wird 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 in about:config die Flags dom.webgpu.enabled und gfx.webgpu.force-enabled gesetzt werden. Informationen zum planmäßigen Standard-Enablement von WebGPU in Firefox und Safari sind bisher nicht bekannt. Die für Firefox und Chrome entwickelten Implementierungen von WebGPU sind als separate Bibliotheken erhältlich – Dawn (C++) und wgpu (Rust), die zur Integration der Unterstützung für WebGPU in eigene Anwendungen verwendet werden können. Außerdem wird an der Unterstützung von WebGPU in beliebten JavaScript-Bibliotheken gearbeitet, die ursprünglich WebGL nutzen. Beispielsweise ist die vollständige Unterstützung von WebGPU bereits in Babylon.js angekündigt, während teilweise Unterstützung in Three.js, PlayCanvas und TensorFlow.js besteht.

Konzeptionell unterscheidet sich WebGPU von WebGL ungefähr 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 die gleichen niedrigleveligen Primitiven verwendet, die in Vulkan, Metal und Direct3D vorhanden sind. WebGPU bietet JavaScript-Anwendungen die Möglichkeit, niedriglevelige Kontrolle über die Organisation, Verarbeitung und Übergabe von Befehlen an die GPU, das Management verwandter Ressourcen, Speicher, Puffer, Texturobjekte und kompilierte grafische Shader zu übernehmen. Dieser Ansatz ermöglicht eine höhere Leistung grafischer Anwendungen, indem die Overheadkosten gesenkt und die Effizienz der GPU-Nutzung verbessert wird.

WebGPU ermöglicht die Erstellung komplexer 3D-Projekte für das Web, die in ihrer Leistung den separaten Programmen, die direkt Vulkan, Metal oder Direct3D nutzen, in nichts nachstehen, jedoch nicht an spezifische Plattformen gebunden sind. WebGPU bietet zudem zusätzliche Möglichkeiten beim Portieren nativer Grafikprogramme in eine Form, die auf Web-Technologien basiert, dank der Kompilierung in WebAssembly. Neben 3D-Grafik umfasst WebGPU auch Funktionen, die mit der Auslagerung von Berechnungen auf die GPU und der Ausführung von Shadern verbunden sind.

Hauptmerkmale von WebGPU:

  • Die getrennte Verwaltung von Ressourcen, Vorbereitungsarbeiten und das Übertragen von Befehlen an die GPU (in WebGL war ein Objekt für alles verantwortlich). Es stehen drei separate Kontexte zur Verfügung: GPUDevice zur Erstellung von Ressourcen wie Texturen und Buffern; GPUCommandEncoder für das Codieren einzelner Befehle, einschließlich der Render- und Berechnungsphasen; GPUCommandBuffer zum Anstehen von Aufgaben zur Ausführung auf der GPU. Das Ergebnis kann in einem Bereich, der mit einem oder mehreren Canvas-Elementen verbunden ist, gerendert oder ohne Ausgabe verarbeitet werden (z. B. bei der Ausführung von Berechnungsaufgaben). Die Trennung der Phasen vereinfacht die Aufteilung von Ressourcencreation und Vorbereitungsarbeiten auf verschiedene Handler, die in unterschiedlichen Threads ausgeführt werden können.
  • Ein anderer Ansatz zur Verarbeitung von Zuständen. In WebGPU werden zwei Objekte angeboten – GPURenderPipeline und GPUComputePipeline, die es ermöglichen, verschiedene vom Entwickler vordefinierte Zustände zu kombinieren. Dadurch kann der Browser Ressourcen sparen, indem er zusätzliche Aufgaben wie die Neukompilierung von Shadern vermeidet. Unterstützte Zustände umfassen: Shader, Layouts von Vertex-Puffern und Attributen, Layouts von angehängten Gruppen, Mischen, Tiefe und Vorlagen sowie Ausgabeformate nach dem Rendering.
  • Das Bindungsmodell erinnert stark an die in Vulkan vorhandenen Mittel zur Gruppierung von Ressourcen. Um Ressourcen in Gruppen zu bündeln, bietet WebGPU das Objekt GPUBindGroup, das während des Kommandoschreibens mit anderen ähnlichen Objekten verknüpft werden kann, um in Shadern verwendet zu werden. Die Erstellung solcher Gruppen ermöglicht es dem Treiber, die erforderlichen Vorbereitungen im Voraus zu treffen, und ermöglicht es dem Browser, die Bindungen von Ressourcen zwischen den Renderaufrufen erheblich schneller zu wechseln. Das Layout der Ressourcenbindungen kann im Voraus mit dem Objekt GPUBindGroupLayout definiert werden.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster