U supportu WebGPU serà attivatu in Chrome

Google hà annunziatu u supportu predeterminatu per l'API grafica WebGPU è u WebGPU Shading Language (WGSL) in a branche Chrome 113, chì hè prevista per a liberazione u 2 di maghju. WebGPU furnisce una API simile à Vulkan, Metal, è Direct3D 12 per eseguisce operazioni GPU-side cum'è rendering è calculu, è permette ancu di utilizà una lingua shader per scrive prugrammi GPU-side. L'implementazione WebGPU serà attivata inizialmente solu in e versioni per ChromeOS, macOS è Windows. Per Linux è Android, u supportu WebGPU serà attivatu in una data dopu.

In più di Chrome, u supportu WebGPU sperimentale hè statu pruvatu da aprile 2020 in Firefox è da nuvembre 2021 in Safari. Per attivà WebGPU in Firefox, stabilisce e bandiere dom.webgpu.enabled è gfx.webgpu.force-enabled in about:config. Ùn ci sò micca piani per attivà WebGPU per difettu in Firefox è Safari. L'implementazioni WebGPU sviluppate per Firefox è Chrome sò dispunibili in forma di biblioteche separati - Dawn (C++) è wgpu (Rust), chì pudete aduprà per integrà u supportu WebGPU in e vostre applicazioni. U travagliu hè ancu in corso per aghjunghje u supportu WebGPU à e librerie JavaScript populari in modu nativu utilizendu WebGL. Per esempiu, u supportu tutale per WebGPU hè digià statu annunziatu in Babylon.js, è un supportu parziale in Three.js, PlayCanvas è TensorFlow.js.

Conceptually, WebGPU differisce da WebGL in u listessu modu chì l'API grafica Vulkan difiere da OpenGL, ma WebGPU ùn hè micca basatu annantu à una API grafica specifica, ma hè una strata generale chì usa i stessi primitivi di pocu livellu truvati in Vulkan. Metal, è Direct3D. WebGPU furnisce l'applicazioni JavaScript cun un cuntrollu di livellu bassu nantu à l'urganizazione, u trasfurmazioni è a trasmissione di cumandamenti à a GPU, gestionendu risorse associate, memoria, buffers, oggetti di texture è sfumaturi grafici compilati. Stu approcciu permette di ottene applicazioni grafiche di rendiment più altu riducendu l'overhead è aumentendu l'efficienza di a GPU.

WebGPU permette di creà prughjetti 3D cumplessi per u Web chì travaglianu cum'è prugrammi standalone chì utilizanu direttamente Vulkan, Metal o Direct3D, ma ùn sò micca ligati à e plataforme specifiche. A WebGPU furnisce ancu opzioni supplementari per portà i prugrammi di grafica nativa à una forma attivata per u web cumpilendu à WebAssembly. In più di i grafici 3D, WebGPU copre ancu e pussibulità assuciate cù i calculi di scaricamentu à u latu GPU è l'esekzione di shaders.

Caratteristiche principali di WebGPU:

  • Gestione separata di risorse, travagliu preparatori è trasmissioni di cumandamenti à a GPU (in WebGL, un ughjettu era rispunsevuli di tuttu in una volta). Trè cuntesti separati sò furniti: GPUDevice per creà risorse cum'è textures è buffers; GPUCommandEncoder per codificà i cumandamenti individuali, cumprese e fasi di rendering è calculu; GPUCommandBuffer per passà à a fila di run GPU. U risultatu pò esse resu in una zona assuciata cù unu o più elementi di tela, o resu senza output (per esempiu, quandu eseguite tarei di calculu). A separazione di e tappe facilita a separà l'operazioni di creazione di risorse è di pruvisione in diversi gestori chì ponu eseguisce in diversi fili.
  • Un approcciu sfarente per trattà i stati. WebGPU furnisce dui ogetti - GPURenderPipeline è GPUComputePipeline, chì permettenu di cumminà diverse stati predefiniti da u sviluppatore, chì permette chì u navigatore ùn perde risorse in u travagliu supplementu, cum'è recompiling shaders. I stati supportati includenu: shaders, buffer di vertice è layout di attributi, layout di gruppu appiccicosu, fusione, prufundità è mudelli, formati di output post-render.
  • Un mudellu di ubligatoriu, cum'è l'arnesi di raggruppamentu di risorse di Vulkan. Per aggrupà e risorse in gruppi, u WebGPU furnisce un ughjettu GPUBindGroup, chì, à u mumentu di scrive cumandamenti, pò esse assuciatu cù altri oggetti simili per l'usu in shaders. A creazione di tali gruppi permette à u cunduttore di realizà l'azzioni preparatori necessarii in anticipu, è permette à u navigatore di cambià l'associazioni di risorse trà e chjama di sorte assai più veloce. U layout di i risorsi di risorsa pò esse predefinitu cù l'ughjettu GPUBindGroupLayout.

Source: opennet.ru

Add a comment