Firefox e Safari riceveranno il supporto WebGPU

Mozilla ha deciso di abilitare il supporto per l'API WebGPU e WGSL (WebGPU Shading Language) in Firefox. Per la piattaforma Windows Il supporto WebGPU sarà abilitato di default in Firefox 141, la cui uscita è prevista per il 22 luglio. L'abilitazione del supporto WebGPU è poi prevista anche nelle build dei mesi successivi: Linux и macOSe dopo un po' di tempo nella versione per la piattaforma AndroidPer abilitare manualmente WebGPU, è possibile utilizzare i parametri "dom.webgpu.enabled" e "gfx.webrender.all" nella pagina about:config.

In Chrome, il supporto WebGPU era offerto di default nella versione 113, rilasciata a maggio 2023. In Safari, si prevede che il supporto WebGPU venga abilitato di default questo autunno (il supporto sperimentale è disponibile da novembre 2021). In Firefox, il supporto WebGPU sperimentale è presente dal 2020, ma era abilitato di default solo nelle build nightly di Firefox. L'implementazione WebGPU di Firefox si basa sul codice del progetto WGPU, scritto in Rust e in grado di funzionare con le API grafiche Direct3D 12, Vulkan, OpenGL e Metal.

WebGPU fornisce un'API simile a Vulkan, Metal e Direct3D 12 per l'esecuzione di operazioni lato GPU. Oltre alla grafica 3D, WebGPU offre anche funzionalità relative all'offload dei calcoli alla GPU e all'esecuzione degli shader. Concettualmente, WebGPU differisce dalla vecchia specifica WebGL in modo molto simile a come l'API grafica Vulkan differisce da OpenGL. Allo stesso tempo, WebGPU non si basa su un'API grafica specifica, ma è un layer universale che utilizza le stesse primitive di basso livello disponibili in Vulkan, Metal e Direct3D.

WebGPU consente alle applicazioni JavaScript di controllare l'organizzazione, l'elaborazione e la trasmissione dei comandi alla GPU e di gestire risorse, memoria, buffer, oggetti texture e shader grafici compilati associati. Questo approccio consente prestazioni più elevate delle applicazioni grafiche riducendo il sovraccarico e aumentando l'efficienza di utilizzo della GPU.

Con WebGPU, è possibile creare progetti 3D complessi, indipendenti dalla piattaforma, che offrono le stesse prestazioni di programmi standalone che utilizzano direttamente Vulkan, Metal o Direct3D. WebGPU offre anche funzionalità aggiuntive per il porting di programmi di grafica nativa in un formato eseguibile nei browser, grazie alla compilazione in WebAssembly.

Caratteristiche principali di WebGPU e differenze rispetto a WebGL:

  • Gestione separata delle risorse, lavoro preparatorio e trasmissione dei comandi alla GPU (in WebGL, un oggetto era responsabile di tutto in una volta). Vengono forniti tre contesti separati: GPUDevice per la creazione di risorse come texture e buffer; GPUCommandEncoder per la codifica di singoli comandi, comprese le fasi di rendering e calcolo; GPUCommandBuffer da passare alla coda di esecuzione della GPU. Il risultato può essere visualizzato in un'area associata a uno o più elementi canvas o visualizzato senza output (ad esempio, durante l'esecuzione di attività computazionali). La separazione delle fasi semplifica la separazione delle operazioni di creazione e provisioning delle risorse in diversi gestori che possono essere eseguiti su thread diversi.
  • Un approccio diverso alla gestione degli stati. WebGPU fornisce due oggetti: GPURenderPipeline e GPUComputePipeline, che consentono di combinare diversi stati predefiniti dallo sviluppatore, il che consente al browser di non sprecare risorse per lavoro aggiuntivo, come la ricompilazione degli shader. Gli stati supportati includono: shader, vertex buffer e layout di attributi, layout di gruppo appiccicoso, blending, profondità e pattern, formati di output post-rendering.
  • Un modello vincolante, molto simile agli strumenti di raggruppamento delle risorse di Vulkan. Per raggruppare le risorse in gruppi, WebGPU fornisce un oggetto GPUBindGroup che, al momento della scrittura dei comandi, può essere associato ad altri oggetti simili da utilizzare negli shader. La creazione di tali gruppi consente al driver di eseguire le azioni preparatorie necessarie in anticipo e consente al browser di modificare i binding delle risorse tra le chiamate draw molto più velocemente. Il layout delle associazioni di risorse può essere predefinito utilizzando l'oggetto GPUBindGroupLayout.

Fonte: opennet.ru

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