Die Android Jetpack-WebGPU-Bibliothek bietet idiomatische Kotlin-Bindungen für den WebGPU-Standard und ermöglicht so leistungsstarke, moderne 3D-Grafiken und Rechenfunktionen in Ihren Android-Anwendungen.
WebGPU ist der Nachfolger von WebGL und der geistige Nachkomme von OpenGL. Es wurde von Grund auf neu entwickelt, um die Funktionsweise moderner GPUs widerzuspiegeln und GPU-Funktionen plattformübergreifend, sicher und ergonomisch verfügbar zu machen.
Warum WebGPU?
- Optimierte Nutzerfreundlichkeit: Vulkan ist die primäre Low-Level-Grafik-API auf Android. WebGPU bietet eine moderne API auf höherer Ebene, die einfacher zu verwenden und deutlich weniger ausführlich als Vulkan ist.
- Batching und Serialisierung: WebGPU zeichnet mehrere Befehle in Command Buffers auf, was Teil des Designs ist, um die Protokollkommunikation zu minimieren. Außerdem wird so die Notwendigkeit minimiert, externe Methoden aufzurufen, wenn Kotlin-Bindungen verwendet werden.
- Universelle Unterstützung: WebGPU-Shadercode (WGSL) kann direkt für WebGPU-Implementierungen auf verschiedenen Plattformen, einschließlich des Webs, freigegeben werden.
- Optimized Compute: Durch die nahtlose, kopierfreie gemeinsame Nutzung von Puffern zwischen Rechen- und Grafikaufgaben wird die Leistung gesteigert und die Entwicklung im Vergleich zu Legacy-APIs vereinfacht.
Zielgruppe
Diese Bibliothek wurde für die Entwicklung leistungsstarker Anwendungen entwickelt, die direkten Zugriff auf die GPU erfordern:
- Filter für die Bild- und Videoverarbeitung
- Datenvisualisierung
- Inferenz für maschinelles Lernen
- Spiele und Simulationen
Nicht-Ziele: Dies ist eine Grafik-API, keine Game-Engine. Sie sind für die Verwaltung Ihres eigenen Renderings, Ihrer Kameramatrizen und Ihres Szenengraphen verantwortlich.
Wichtige WebGPU-Konzepte
Es ist wichtig, die grundlegenden WebGPU-Objekte und ihre Interaktion zu verstehen, um WebGPU-Anwendungen zu entwickeln.
Konzept |
Beschreibung |
Instanz |
Der Einstiegspunkt für WebGPU, der Zugriff auf Adapter und Oberflächen ermöglicht |
Adapter |
Stellt eine bestimmte GPU auf dem Gerät dar. |
Gerät |
Ihre logische Verbindung zur GPU, auf der Ressourcen erstellt werden |
Warteschlange |
Der Mechanismus, der zum Senden von Befehlen an die GPU verwendet wird |
Shader-Modul |
Ihr GPU-Code, geschrieben in der WebGPU Shading Language (WGSL) |
Pipelines |
Objekte, die den gesamten GPU-Status (Shader, Blending) für eine Aufgabe beschreiben |
Bind Groups |
Verknüpft Datenpuffer (z. B. Texturen) mit Shadern |
Command Encoder |
Ein Objekt, mit dem eine Sequenz von GPU-Befehlen in einen Befehlspuffer erstellt wird. |