Diese Spezifikationen sind konzeptionell ähnlich wie die Vulkan-, Metal- und Direct3D 12-APIs. Die Spezifikationen wurden von einer Arbeitsgruppe erarbeitet, der Ingenieure von Mozilla, Google, Apple und Microsoft angehörten.
„Das Ziel der GPU for Web Workgroup ist es, eine Schnittstelle zwischen der Web-Plattform und modernen 3D-Grafik– und Rechenfähigkeiten zu schaffen, die in nativen Systemplattformen zu finden sind. Erfahren Sie mehr über die Ziele, den Umfang und die Ergebnisse.
Die GPU for Web Community Group entwickelte die Spezifikationen, die von dieser Arbeitsgruppe angenommen wurden. Die Community Group treibt die technische Arbeit an den Spezifikationen weiter voran und bringt neue Funktionen hervor. Diese Arbeitsgruppe arbeitet mit der Community Group zusammen, um die Spezifikationen für den Empfehlungspfad zu gestalten.“
Konzeptionell unterscheidet sich WebGPU von WebGL auf die gleiche Weise, wie sich die Vulkan-Grafik-API von OpenGL unterscheidet, aber es basiert nicht auf einer spezifischen Grafik-API, sondern ist eine universelle Schicht, die die gleichen Low-Level-Primitive verwendet, die in Vulkan, Metal und Direct3D zu finden sind.
WebGPU bietet JavaScript-Anwendungen für die Low-Level-Kontrolle über die Orchestrierung, Verarbeitung und Übertragung von Befehlen an die GPU, die Verwaltung der zugehörigen Ressourcen, Speicher, Puffer, Texturobjekte und kompilierte Grafik-Shader. Mit diesem Ansatz können Sie eine höhere Leistung für Grafikanwendungen erzielen, indem Sie den Overhead reduzieren und die GPU-Effizienz erhöhen.
Mit WebGPU können Sie komplexe 3D-Projekte für das Web erstellen, die nicht auf die gleiche Weise funktionieren wie eigenständige Programme, die direkt auf Vulkan, Metal oder Direct3D zugreifen, aber nicht an bestimmte Plattformen gebunden sind.
WebGPU bietet außerdem zusätzliche Möglichkeiten zur Portierung nativer Grafikprogramme in eine webbasierte Form durch Kompilieren in WebAssembly. Neben 3D-Grafik deckt WebGPU auch die Möglichkeiten ab, die mit GPU-seitigem Compute-Outsourcing und Shader-Ausführung verbunden sind.
Charakteristika von WebGPU:
Getrennte Verwaltung von Ressourcen, Vorarbeiten und Befehlsübertragung an die GPU. Es werden drei separate Kontexte bereitgestellt: GPUDevice, um Ressourcen wie Texturen und Puffer zu erstellen; GPUCommandEncoder, um einzelne Befehle zu kodieren, einschließlich Verarbeitungs- und Berechnungsschritte; GPUCommandBuffer, um die Ausführung auf der GPU in eine Warteschlange zu stellen. Das Ergebnis kann in einem Bereich gerendert werden, der mit einer oder mehreren Canvases verbunden ist oder ohne Rendering gerendert werden. Die Stufentrennung macht es einfach, die Ressourcenerstellung und die vorbereitenden Operationen in verschiedene Controller aufzuteilen, die in verschiedenen Threads ausgeführt werden können.
Ein anderer Ansatz für den Umgang mit dem Zustand. WebGPU bietet zwei Objekte, GPURenderPipeline und GPUComputePipeline, die es ermöglichen, verschiedene vom Entwickler vordefinierte Zustände zu kombinieren, so dass der Browser keine Ressourcen für zusätzliche Arbeiten wie das Neukompilieren von Shadern verschwendet. Zu den unterstützten Zuständen gehören Shader, Vertex-Puffer- und Attribut-Layouts, angehängte Gruppen-Layouts, Merge, Tiefe und Vorlagen sowie Post-Process-Ausgabeformate.
Ein Bindungsmodell, das den Ressourcengruppierungstools von Vulkan sehr ähnlich ist. Um Ressourcen in Gruppen zu gruppieren, stellt WebGPU ein GPUBindGroup-Objekt zur Verfügung, das bei der Eingabe von Befehlen an andere Objekte desselben Typs zur Verwendung in Shadern gebunden werden kann. Durch das Erstellen solcher Gruppen kann der Treiber die notwendigen vorbereitenden Aktionen im Voraus durchführen und der Browser kann die Ressourcenbindungen zwischen den Zeichenaufrufen viel schneller umschalten. Das Layout von Ressourcenbindungen kann mit dem Objekt GPUBindGroupLayout vordefiniert werden.
Vielen Dank für Ihren Besuch.