Nelle versioni notturne di Firefox è stata aggiunta la supporto per WebGPU

In notturne versioni di Firefox è stata introdotta supporto della specifica WebGPU, che fornisce un'interfaccia di programmazione per l'elaborazione di grafica 3D e calcoli lato GPU, concettualmente simile all'API Vulkan, Metallo e Direct3D 12. La specifica viene sviluppata da Mozilla, Google, Apple, Microsoft e rappresentanti della comunità nel gruppo di lavoro, creato sotto l'organizzazione W3C.

L'obiettivo principale di WebGPU è creare un'interfaccia di programmazione sicura, conveniente, portabile e ad alte prestazioni per l'uso nella piattaforma web delle tecnologie e delle capacità di grafica 3D fornite dagli attuali API grafici di sistema, come Direct3D 12 in Windows, Metal in macOS e Vulkan in Linux. Concettualmente WebGPU si differenzia da WebGL in modo simile a come Vulkan si differenzia da OpenGL, e non si basa su un'API grafica specifica, ma rappresenta uno strato universale che utilizza, in generale, gli stessi primitivi a basso livello disponibili in Vulkan, Metal e Direct3D.

WebGPU fornisce alle applicazioni JavaScript strumenti per un controllo a livello più basso dell'organizzazione, elaborazione e invio di comandi alla GPU, gestione delle risorse correlate, della memoria, dei buffer, degli oggetti texture e degli shader grafici compilati. Questo approccio consente prestazioni superiori nelle applicazioni grafiche riducendo l'overhead e aumentando l'efficienza del lavoro con la GPU.

WebGPU consente di creare progetti 3D complessi e completi per il Web, che funzionano altrettanto bene quanto applicazioni isolate che interagiscono direttamente con Vulkan, Metal o Direct3D, ma senza essere legati a piattaforme specifiche. WebGPU offre anche funzionalità aggiuntive per il porting di programmi grafici nativi in una forma utilizzabile sulle tecnologie web, grazie all'uso di WebAssembly. Oltre alla grafica 3D, WebGPU comprende anche funzionalità relative all'elaborazione GPU e supporto per la creazione di shader. possono essere creati nel linguaggio WebGPU Shading Language o definiti in un formato intermedio SPIR-V, dopodiché tradotti nei linguaggi degli shader supportati dai driver attuali.

In WebGPU viene applicato un controllo separato delle risorse, dei lavori di preparazione e della trasmissione di comandi al GPU (in WebGL un singolo oggetto gestiva tutto simultaneamente). Sono forniti tre contesti distinti:
GPUDevice per la creazione di risorse, come texture e buffer; GPUCommandEncoder per la codifica di singoli comandi, incluse le fasi di rendering e calcolo; GPUCommandBuffer per la messa in coda per l'esecuzione nel GPU. Il risultato può essere visualizzato in un'area associata a uno o più elementi canvas, o elaborato senza output (ad esempio, durante l'esecuzione di calcoli). La separazione delle fasi semplifica la distribuzione della creazione delle risorse e delle operazioni preparatorie in gestori diversi, che possono essere eseguiti in thread separati.

La seconda differenza tra WebGPU e WebGL è l'approccio diverso nella gestione degli stati. WebGPU offre due oggetti — GPURenderPipeline e GPUComputePipeline — che permettono di combinare vari stati, definiti in anticipo dallo sviluppatore, consentendo così al browser di non sprecare risorse per effettuare lavori aggiuntivi, 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 post-rendition.

La terza caratteristica di WebGPU è il modello di binding, che ricorda molto
gli strumenti di raggruppamento delle risorse presenti in Vulkan.
Per raggruppare le risorse in WebGPU, è fornito un oggetto GPUBindGroup, che può essere associato ad altri oggetti simili durante la registrazione dei comandi per l'uso nei shader. La creazione di tali gruppi consente al driver di eseguire in anticipo le operazioni preparatorie necessarie e permette al browser di modificare rapidamente i legami delle risorse tra le chiamate di rendering. La disposizione delle risorse può essere definita in anticipo mediante l'oggetto GPUBindGroupLayout.

Nelle versioni notturne di Firefox è stata aggiunta la supporto per WebGPU

In Firefox, per abilitare WebGPU in about:config, è presente l'impostazione "dom.webgpu.enabled". Per il rendering di CanvasContext è anche necessaria l'attivazione del sistema di composizione WebRender ("gfx.webrender.all" in about:config), scritto in linguaggio Rust e che delega al GPU le operazioni di rendering del contenuto della pagina. L'implementazione di WebGPU si basa sul codice del progetto
wgpu, scritto in linguaggio 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 ramo Canary Chromium viene abilitato tramite il flag «chrome://flags/#enable-unsafe-webgpu», ma funziona attualmente 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