W3C ha presentato una bozza dello standard WebGPU

Il consorzio W3C ha presentato le prime bozze delle specifiche WebGPU e WebGPU Shading Language (WGSL), che definiscono un'API per eseguire operazioni su GPU, come rendering e calcoli, e un linguaggio di shading per scrivere programmi che operano lato GPU, concettualmente simile alle API Vulkan, Metal e Direct3D 12. Le specifiche sono state preparate da un gruppo di lavoro che comprende ingegneri di Mozilla, Google, Apple e Microsoft.

Concettualmente, WebGPU si differenzia da WebGL in modo simile a come l'API grafica Vulkan si differenzia da OpenGL, ma non si basa su un'API grafica specifica, rappresentando piuttosto un'interfaccia universale che utilizza gli stessi primitivi a basso livello presenti in Vulkan, Metal e Direct3D. WebGPU offre alle applicazioni JavaScript 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 prestazioni superiori nelle applicazioni grafiche riducendo l'overhead e migliorando l'efficienza del lavoro con la GPU.

WebGPU permette di creare complessi progetti 3D per il web che funzionano altrettanto bene di programmi autonomi che interagiscono direttamente con Vulkan, Metal o Direct3D, senza essere legati a piattaforme specifiche. WebGPU fornisce anche funzionalità aggiuntive per il porting di programmi grafici nativi in una forma capace di funzionare con tecnologie web, grazie alla compilazione in WebAssembly. Oltre alla grafica 3D, WebGPU include anche funzionalità relative all'estensione dei calcoli verso la 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 hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster