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 anche un linguaggio di shader per scrivere programmi che operano sul lato GPU, concettualmente simile alle API Vulkan, Metal e Direct3D 12. Le specifiche sono state preparate da un gruppo di lavoro che include 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 e rappresenta uno strato universale che utilizza gli stessi primitivi a basso livello presenti in Vulkan, Metal e Direct3D. WebGPU fornisce alle applicazioni JavaScript strumenti per il controllo a basso livello della organizzazione, elaborazione e 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 aumentando l'efficienza del lavoro con la GPU.

WebGPU consente di creare progetti 3D complessi per il Web che funzionano altrettanto bene quanto i programmi autonomi che interagiscono direttamente con Vulkan, Metal o Direct3D, ma non sono vincolati a piattaforme specifiche. WebGPU offre anche ulteriori possibilità per il porting di programmi grafici nativi in una forma in grado di funzionare con tecnologie web, grazie alla compilazione in WebAssembly. Oltre alla grafica 3D, WebGPU copre anche le possibilità di esternalizzazione dei calcoli sulla GPU e l'esecuzione di shader.

Caratteristiche principali di WebGPU:

  • Gestione separata delle risorse, dei lavori di preparazione e dell'invio di comandi alla GPU (in WebGL un singolo oggetto gestiva tutto insieme). Sono forniti tre contesti separati: GPUDevice per la creazione di risorse, come texture e buffer; GPUCommandEncoder per la codifica di comandi separati, inclusi stadi di rendering e calcolo; GPUCommandBuffer per l'invio in coda per l'esecuzione sulla GPU. Il risultato può essere visualizzato in un'area associata a uno o più elementi canvas, oppure può essere elaborato senza output (ad esempio, durante l'esecuzione di compiti di calcolo). La separazione degli stadi semplifica la distribuzione della creazione delle risorse e delle operazioni preparatorie in gestori diversi, che possono essere eseguiti in thread differenti.
  • Un diverso approccio nella gestione degli stati. In WebGPU vengono proposti due oggetti — GPURenderPipeline e GPUComputePipeline — che consentono di combinare diversi stati definiti in anticipo dallo sviluppatore, permettendo al browser di non sprecare risorse per lavori supplementari, come la ricompilazione degli shader. Tra gli stati supportati ci sono: shader, layout dei buffer dei vertici e degli attributi, layout dei gruppi associati, miscelazione, profondità e maschere, formati di output dopo il rendering.
  • Un modello di binding che ricorda molto i mezzi di raggruppamento delle risorse presenti in Vulkan. Per raggruppare le risorse in insiemi, WebGPU fornisce un oggetto GPUBindGroup, che può essere collegato ad altri oggetti simili durante la scrittura dei comandi per essere utilizzato negli shader. La creazione di tali gruppi consente al driver di eseguire in anticipo le necessarie operazioni preparatorie e permette al browser di cambiare molto più rapidamente i binding delle risorse tra le chiamate di rendering. La disposizione dei binding delle risorse può essere definita in anticipo utilizzando l'oggetto GPUBindGroupLayout.

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