Dopo anni di sviluppo, il team di Chrome annuncia che la prima release di WebGPU è ora disponibile per impostazione predefinita in Chrome su ChromeOS, macOS e Windows. Per scoprire di più, consulta l'articolo Chrome supporta WebGPU.
Abbiamo anche iniziato ad aggiungere documentazione completa per WebGPU su MDN.
E non è finita qui.
Utilizzare l'origine VideoFrame
di WebCodecs in importExternalTexture()
WebGPU espone un'API per creare oggetti "texture esterna" opachi da HTMLVideoElement
a importExternalTexture()
. Puoi utilizzare questi oggetti per campionare i fotogrammi video in modo efficiente, potenzialmente senza copie direttamente dai dati YUV di origine.
Tuttavia, la specifica WebGPU iniziale non consente di creare oggetti GPUExternalTexture
dagli oggetti WebCodecs VideoFrame
. Questa funzionalità è importante per le app di elaborazione video avanzate che utilizzano già WebCodecs e vogliono integrare WebGPU nella pipeline di elaborazione video. La discussione è attualmente in corso nel problema gpuweb/gpuweb#1380.
Attivare la funzionalità
Per impostazione predefinita, questa funzionalità non è attivata in Chrome, ma è possibile sperimentarla in Chrome 113 attivandola esplicitamente. Puoi attivarlo localmente attivando il flag "Funzionalità per sviluppatori WebGPU" in chrome://flags/#enable-webgpu-developer-features
.
Per attivarlo per tutti i visitatori della tua app, è attualmente in corso una prova dell'origine che dovrebbe terminare in Chrome 118 (8 dicembre 2023). Per partecipare alla prova, registrati e includi un elemento meta con il token di prova dell'origine nell'intestazione HTML o HTTP. Per ulteriori informazioni, consulta il post Guida introduttiva ai trial delle origini.
Codice di esempio
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
Dai un'occhiata all'esempio sperimentale Caricamento di video con WebCodecs per provare questa funzionalità.
Novità di WebGPU
Un elenco di tutto ciò che è stato trattato nella serie Novità di WebGPU.
Chrome 131
- Tagliare le distanze in WGSL
- GPUCanvasContext getConfiguration()
- Gli elementi primitivi punto e linea non devono avere bias di profondità
- Funzioni integrate di scansione inclusiva per i sottogruppi
- Supporto sperimentale per l'indirizzamento multi-draw
- Opzione di compilazione del modulo shader matematica rigorosa
- Rimuovi requestAdapterInfo() di GPUAdapter
- Aggiornamenti di Dawn
Chrome 130
- Combinazione di due origini
- Miglioramenti ai tempi di compilazione degli shader su Metal
- Obsoletezza di requestAdapterInfo() di GPUAdapter
- Aggiornamenti di Dawn
Chrome 129
- Supporto HDR con modalità di mappatura tonale della tela
- Supporto dei sottogruppi ampliato
- Aggiornamenti di Dawn
Chrome 128
- Sperimentazione con i sottogruppi
- Ritiro dell'impostazione della bias di profondità per linee e punti
- Nascondere l'avviso DevTools relativo a un errore non rilevato se preventDefault
- WGSL esegue prima l'interpolazione del campionamento e poi
- Aggiornamenti di Dawn
Chrome 127
- Supporto sperimentale per OpenGL ES su Android
- Attributo info di GPUAdapter
- Miglioramenti all'interoperabilità di WebAssembly
- Errori dell'encoder dei comandi migliorati
- Aggiornamenti di Dawn
Chrome 126
- Aumentare il limite di maxTextureArrayLayers
- Ottimizzazione del caricamento del buffer per il backend Vulkan
- Miglioramenti ai tempi di compilazione degli shader
- Gli spazi dei comandi inviati devono essere univoci
- Aggiornamenti di Dawn
Chrome 125
- Sottogruppi (funzionalità in fase di sviluppo)
- Eseguire il rendering di una sezione della texture 3D
- Aggiornamenti di Dawn
Chrome 124
- Texture di archiviazione di sola lettura e di lettura e scrittura
- Supporto di worker di servizio e worker condivisi
- Nuovi attributi delle informazioni sull'adattatore
- Correzioni di bug
- Aggiornamenti di Dawn
Chrome 123
- Supporto delle funzioni integrate DP4a in WGSL
- Parametri del cursore non soggetti a restrizioni in WGSL
- Sintassi alternativa per il dereferenziamento dei compositi in WGSL
- Stato di sola lettura separato per gli aspetti di stencil e profondità
- Aggiornamenti di Dawn
Chrome 122
- Ampliare la copertura con la modalità di compatibilità (funzionalità in fase di sviluppo)
- Aumentare il limite di maxVertexAttributes
- Aggiornamenti di Dawn
Chrome 121
- Supporto di WebGPU su Android
- Utilizzare DXC anziché FXC per la compilazione degli shader su Windows
- Query sui timestamp nei passaggi di calcolo e rendering
- Punti di contatto predefiniti per i moduli shader
- Supporto di display-p3 come spazio colore GPUExternalTexture
- Informazioni sugli heap di memoria
- Aggiornamenti di Dawn
Chrome 120
- Supporto dei valori in virgola mobile a 16 bit in WGSL
- Spingere i limiti al massimo
- Modifiche allo stato della maschera di profondità
- Aggiornamenti delle informazioni sugli adattatori
- Quantizzazione delle query sui timestamp
- Funzionalità per le pulizie di primavera
Chrome 119
- Texture con formato a virgola mobile 32 bit filtrabili
- Formato vertice unorm10-10-10-2
- Formato texture rgb10a2uint
- Aggiornamenti di Dawn
Chrome 118
- Supporto di HTMLImageElement e ImageData in
copyExternalImageToTexture()
- Supporto sperimentale per le texture di archiviazione in lettura/scrittura e di sola lettura
- Aggiornamenti di Dawn
Chrome 117
- Buffer di vertici non impostato
- Reimpostare il gruppo di associazione
- Ignorare gli errori della creazione della pipeline asincrona quando il dispositivo viene smarrito
- Aggiornamenti sulla creazione di moduli shader SPIR-V
- Miglioramento dell'esperienza degli sviluppatori
- Pipeline di memorizzazione nella cache con layout generato automaticamente
- Aggiornamenti di Dawn
Chrome 116
- Integrazione di WebCodecs
- Dispositivo smarrito restituito da GPUAdapter
requestDevice()
- Mantenere la riproduzione video fluida se viene chiamato
importExternalTexture()
- Conformità alle specifiche
- Miglioramento dell'esperienza degli sviluppatori
- Aggiornamenti di Dawn
Chrome 115
- Estensioni di lingua WGSL supportate
- Supporto sperimentale per Direct3D 11
- Ottenere una GPU discreta per impostazione predefinita con alimentazione CA
- Miglioramento dell'esperienza degli sviluppatori
- Aggiornamenti di Dawn
Chrome 114
- JavaScript di Optimize
- getCurrentTexture() su canvas non configurato genera un errore InvalidStateError
- Aggiornamenti WGSL
- Aggiornamenti di Dawn