In Chrome sarà attivato il supporto per WebGPU

Google ha annunciato l'attivazione predefinita del supporto per l'API grafico WebGPU e per il linguaggio di shader WGSL (WebGPU Shading Language) nella versione di Chrome 113, il cui rilascio è previsto per il 2 maggio. WebGPU offre un'interfaccia di programmazione simile a Vulkan, Metal e Direct3D 12 per l'esecuzione di operazioni lato GPU, come il rendering e i calcoli, e permette di utilizzare un linguaggio di shader per scrivere programmi che operano sulla GPU. L'implementazione di WebGPU sarà inizialmente inclusa solo nelle build per ChromeOS, macOS e Windows. Il supporto per WebGPU su Linux e Android sarà attivato successivamente.

Oltre a Chrome, il supporto sperimentale per WebGPU è in fase di test in Firefox dal aprile 2020 e in Safari dal novembre 2021. Per attivare WebGPU in Firefox, è necessario impostare i flag dom.webgpu.enabled e gfx.webgpu.force-enabled in about:config. Attualmente non ci sono notizie sui piani per abilitare WebGPU di default in Firefox e Safari. Le implementazioni di WebGPU sviluppate per Firefox e Chrome sono disponibili come librerie separate: Dawn (C++) e wgpu (Rust), che possono essere utilizzate per integrare il supporto di WebGPU nelle proprie applicazioni. È anche in corso il lavoro per aggiungere il supporto di WebGPU a popolari librerie JavaScript originariamente basate su WebGL. Ad esempio, il supporto completo per WebGPU è già stato annunciato in Babylon.js, mentre un supporto parziale è disponibile in Three.js, PlayCanvas e TensorFlow.js.

Concettualmente, WebGPU si distingue da WebGL in modo simile a quanto fa l'API grafico Vulkan con OpenGL, ma WebGPU non si basa su un API grafico specifico; piuttosto, funge da strato universale che utilizza gli stessi primitivi a basso livello presenti in Vulkan, Metal e Direct3D. WebGPU offre alle applicazioni JavaScript gli strumenti per un controllo a basso livello sull'organizzazione, l'elaborazione e l'invio di comandi alla GPU, gestendo risorse correlate, memoria, buffer, oggetti texture e shader grafici compilati. Questo approccio consente di ottenere performance superiori nelle applicazioni grafiche riducendo le spese generali e migliorando l'efficienza del lavoro con la GPU.

WebGPU consente di creare progetti 3D complessi per il Web, funzionanti altrettanto bene quanto le applicazioni autonome che utilizzano direttamente Vulkan, Metal o Direct3D, ma non legate a piattaforme specifiche. WebGPU offre anche ulteriori vantaggi nella portabilità delle applicazioni grafiche native in una forma in grado di funzionare basata su tecnologie web, grazie alla compilazione in WebAssembly. Oltre alla grafica 3D, WebGPU include anche funzionalità relative all'elaborazione dei calcoli sulla GPU e all'esecuzione di shader.

Caratteristiche principali di WebGPU:

  • Gestione separata delle risorse, dei lavori preparatori e della trasmissione dei comandi alla GPU (in WebGL un oggetto gestiva tutto contemporaneamente). Vengono forniti tre contesti separati: GPUDevice per la creazione di risorse come texture e buffer; GPUCommandEncoder per la codifica di comandi singoli, comprese le fasi di rendering e calcolo; GPUCommandBuffer per l'inserimento in coda per l'esecuzione sulla GPU. Il risultato può essere disegnato in un'area associata a uno o più elementi canvas, oppure elaborato senza output (ad esempio, durante l'esecuzione di compiti di calcolo). La separazione delle fasi semplifica la distribuzione della creazione delle risorse e delle operazioni preparatorie in diversi gestori, che possono essere eseguiti in thread separati.
  • Un approccio diverso nella gestione degli stati. In WebGPU sono proposti due oggetti — GPURenderPipeline e GPUComputePipeline, che consentono di combinare vari stati definiti in precedenza dallo sviluppatore, permettendo al browser di non sprecare risorse per eseguire ulteriori lavori, come la ricompilazione degli shader. Tra gli stati supportati ci sono: shader, layout dei buffer dei vertici e degli attributi, layout dei gruppi allegati, miscelazione, profondità e modelli, formati di output dopo il rendering.
  • Un modello di binding, simile agli strumenti di raggruppamento delle risorse presenti in Vulkan. Per raggruppare le risorse in WebGPU è disponibile un oggetto GPUBindGroup, che può essere collegato ad altri oggetti simili durante la registrazione dei comandi per l'uso negli shader. La creazione di tali gruppi consente al driver di eseguire in anticipo le operazioni preparatorie necessarie e al browser di cambiare rapidamente i binding delle risorse tra le chiamate di rendering. Il layout dei binding delle risorse può essere definito in anticipo tramite l'oggetto GPUBindGroupLayout.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster