Nel rilascio notturno di Firefox è stata aggiunta la supporto per WebGPU

In notturne assemblaggi Firefox è comparso supporto della specifica WebGPU, fornendo un'interfaccia di programmazione per la gestione della grafica 3D e dei calcoli sul lato GPU, concettualmente simile all'API Vulkan, Metal e Direct3D 12. La specifica è sviluppata da Mozilla, Google, Apple, Microsoft e dai rappresentanti della comunità nel gruppo di lavoro, creato nell'ambito dell'organizzazione W3C.

L'obiettivo principale di WebGPU è creare un'interfaccia di programmazione sicura, conveniente, portabile e ad alte prestazioni per l'utilizzo nella piattaforma web delle tecnologie e delle capacità grafiche 3D fornite dagli moderni API grafici di sistema, come Direct3D 12 su Windows, Metal su macOS e Vulkan su Linux. Concettualmente, WebGPU si differenzia da WebGL più o meno come Vulkan si differenzia da OpenGL e non è basato su un API grafico specifico, ma rappresenta un'interfaccia universale che in linea di massima utilizza gli stessi primitivi a basso livello già presenti in Vulkan, Metal e Direct3D.

WebGPU offre alle applicazioni JavaScript strumenti per un controllo a basso livello nell'organizzazione, nell'elaborazione e nella trasmissione di comandi alla GPU, nella gestione delle risorse correlate, della memoria, dei buffer, degli oggetti texture e degli shader grafici compilati. Questo approccio consente di ottenere prestazioni più elevate per le applicazioni grafiche grazie alla riduzione dei costi generali e al miglioramento dell'efficienza nell'uso della GPU.

WebGPU consente di creare progetti 3D complessi per il Web che funzionano altrettanto bene delle applicazioni autonome che interagiscono direttamente con Vulkan, Metal o Direct3D, ma non sono vincolati a piattaforme specifiche. WebGPU fornisce inoltre opportunità aggiuntive per il porting di applicazioni grafiche native in una forma in grado di funzionare con le tecnologie web, grazie all'uso della tecnologia WebAssembly. Oltre alla grafica 3D, WebGPU copre anche le possibilità legate all'uso della GPU per elaborazioni e il supporto allo sviluppo di shader. Gli shader possono possono essere creati nel linguaggio WebGPU Shading Language o specificati in un formato intermedio SPIR-V, per poi essere tradotti nei linguaggi di shader supportati dai driver attuali.

In WebGPU è applicata una gestione separata delle risorse, delle operazioni preparatorie e della trasmissione di comandi alla GPU (in WebGL un oggetto rispondeva a tutto contemporaneamente). Sono forniti tre contesti distinti:
GPUDevice per la creazione di risorse come texture e buffer; GPUCommandEncoder per codificare singole istruzioni, incluse le fasi di rendering e calcolo; GPUCommandBuffer per la messa in coda all'esecuzione sulla GPU. Il risultato può essere disegnato in un'area associata a uno o più elementi canvas, o elaborato senza output (ad esempio, durante l'esecuzione di compiti di calcolo). La separazione delle fasi semplifica la suddivisione della creazione delle risorse e delle operazioni preparatorie in diversi gestori, che possono essere eseguiti in thread differenti.

La seconda differenza tra WebGPU e WebGL è un diverso approccio nella gestione degli stati. In WebGPU sono proposti due oggetti — GPURenderPipeline e GPUComputePipeline, che consentono di combinare vari stati definiti in anticipo dagli sviluppatori, permettendo al browser di non sprecare risorse in ulteriori elaborazioni, come la ricompilazione degli shader. Tra gli stati supportati ci sono: shader, layout di buffer di vertici e attributi, layout di gruppi allegati, mescolamento, profondità e modelli, formati di output dopo il rendering.

La terza caratteristica di WebGPU è il modello di binding, che in gran parte
ricorda gli strumenti di raggruppamento delle risorse presenti in Vulkan.
Per raggruppare le risorse in WebGPU è disponibile l'oggetto GPUBindGroup, che durante la scrittura dei comandi può essere associato ad altri oggetti simili per l'uso negli shader. Creare tali gruppi consente al driver di eseguire in anticipo le necessarie operazioni preparatorie e al browser di cambiare le associazioni delle risorse tra le chiamate di rendering in modo significativamente più veloce. Il layout delle associazioni delle risorse può essere definito in anticipo utilizzando l'oggetto GPUBindGroupLayout.

Nel rilascio notturno di Firefox è stata aggiunta la supporto per WebGPU

In Firefox, per attivare WebGPU in about:config è prevista l'impostazione "dom.webgpu.enabled". Per il rendering del CanvasContext è inoltre necessario attivare il sistema di composizione WebRender ("gfx.webrender.all" in about:config), scritto in Rust e che delega alla GPU le operazioni di rendering del contenuto della pagina. L'implementazione di WebGPU si basa sul codice del progetto
wgpu, scritto in Rust e capace di funzionare sopra le API DX12, Vulkan e Metal su Linux, Android, Windows e macOS (è in fase di sviluppo anche il supporto per DX11 e OpenGL ES 3.0). Parallelamente, Google sta sviluppando un'altra implementazione, disponibile nella versione Canary Chromium è attivato tramite il flag «chrome://flags/#enable-unsafe-webgpu», ma attualmente funziona solo su macOS e Windows.

Fonte: opennet.ru

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