La libreria WebGPU di Android Jetpack fornisce binding Kotlin idiomatici per lo standard WebGPU, consentendo funzionalità di calcolo e grafica 3D moderne e ad alte prestazioni all'interno delle tue applicazioni Android.
WebGPU è il successore di WebGL e il discendente spirituale di OpenGL, creato da zero per riflettere il funzionamento delle GPU moderne ed esporre le funzionalità della GPU in modo multipiattaforma, sicuro ed ergonomico.
Perché WebGPU?
- Usabilità semplificata: Vulkan è l'API grafica di basso livello principale su Android. WebGPU offre un'API moderna di livello superiore che è più accessibile e molto meno dettagliata da usare rispetto a Vulkan.
- Batching e serializzazione WebGPU registra più comandi in buffer di comando, parte del suo design per ridurre al minimo la comunicazione del protocollo. Inoltre, riduce al minimo la necessità di chiamare metodi esterni quando si utilizzano i binding Kotlin.
- Supporto universale: il codice shader WebGPU (WGSL) può essere condiviso direttamente tra le implementazioni WebGPU su tutte le piattaforme, incluso il web.
- Calcolo ottimizzato: la condivisione del buffer senza copia tra le attività di calcolo e grafica migliora le prestazioni e semplifica lo sviluppo rispetto alle API legacy.
Destinatari della libreria
Questa libreria è progettata per creare applicazioni ad alte prestazioni che richiedono l'accesso diretto alla GPU:
- Filtri di elaborazione di immagini e video
- Visualizzazioni dati
- Inferenza di machine learning
- Giochi e simulazioni
Obiettivi non raggiunti: questa è un'API grafica, non un motore di gioco. Sei responsabile della gestione del ciclo di rendering, delle matrici della videocamera e del grafico della scena.
Concetti principali di WebGPU
Comprendere gli oggetti WebGPU di base e il modo in cui interagiscono è essenziale per lo sviluppo di WebGPU.
Concept |
Descrizione |
Istanza |
Il punto di accesso a WebGPU, che consente di accedere ad adattatori e superfici |
Alimentatore |
Rappresenta una GPU specifica sul dispositivo |
Dispositivo |
La connessione logica alla GPU in cui vengono create le risorse |
Coda |
Il meccanismo utilizzato per inviare comandi alla GPU |
Modulo Shader |
Il codice della GPU, scritto nel linguaggio di shading WebGPU (WGSL) |
Pipeline |
Oggetti che descrivono l'intero stato della GPU (shader, blending) per un'attività |
Bind Groups |
Collega i buffer di dati (ad es. le texture) agli shader |
Command Encoder |
Un oggetto utilizzato per creare una sequenza di comandi GPU in un buffer di comandi |