E custruzzioni di notte di Firefox includenu avà u supportu WebGPU

В notte Firefox crea apparsu supportu di specificazione WebGPU, chì furnisce una interfaccia di prugrammazione per l'elaborazione gràfica 3D è l'informatica GPU-side, conceptualmente simili à l'API Vulkan, Metal и Direct3D 12. A specificazione hè sviluppata da Mozilla, Google, Apple, Microsoft è membri di a cumunità gruppu di travagliu, creatu da l'urganisazione W3C.

L'obiettivu chjave di WebGPU hè di furnisce una interfaccia di prugrammazione sicura, amichevule, portatile è d'alta prestazione per a piattaforma Web per sfruttà e tecnulugia è e capacità grafiche 3D furnite da l'API di grafica di u sistema mudernu, cum'è Direct3D 12 in Windows, Metal. in macOS, è Vulkan in Linux. Conceptually, WebGPU difiere da WebGL in u listessu modu chì Vulkan difiere da OpenGL, è à u stessu tempu ùn hè micca basatu annantu à una API grafica specifica, ma hè una strata universale chì generalmente usa i stessi primitivi di pocu livellu truvati in Vulkan. Metallu è Direct3D.

WebGPU furnisce l'applicazioni JavaScript cun un cuntrollu di livellu più 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 un rendimentu più altu per l'applicazioni grafiche riducendu i costi generali è aumentendu l'efficienza di travaglià cù a GPU.

WebGPU permette di creà prughjetti cumplessi cumplessi 3D per u Web chì ùn funziona micca peggiu di i prugrammi standalone chì accede direttamente à Vulkan, Metal o Direct3D, ma ùn sò micca ligati à e plataforme specifiche. WebGPU furnisce ancu capacità supplementari quandu si portanu prugrammi grafici nativi in ​​una forma attivata per u web per mezu di l'usu di a tecnulugia WebAssembly. In più di i grafici 3D, WebGPU copre ancu e capacità relative à i calculi di scaricamentu à a GPU è u sustegnu di u sviluppu di shader. Shaders pudete esse creatu in u WebGPU Shading Language o specificatu in u formatu SPIR-V intermediu, è dopu traduttu in lingue shader supportate da i driver attuali.

WebGPU usa una gestione separata di risorse, u travagliu preparatoriu è a trasmissione 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 fasi di rendering è di calculu; GPUCommandBuffer per esse in fila per l'esecuzione nantu à a GPU. U risultatu pò esse resu in una zona assuciata à unu o più elementi di tela, o processatu senza output (per esempiu, quandu eseguite compiti di compute). A separazione di e tappe facilita a separà l'operazioni di creazione è preparazione di risorse in diverse manipolazioni chì ponu eseguisce nantu à diversi fili.

A seconda diferenza trà WebGPU è WebGL hè un accostu sfarente per trattà i stati. WebGPU prupone dui ogetti - GPURenderPipeline è GPUComputePipeline, chì permettenu di cumminà diversi stati predefiniti da u sviluppatore, chì permette à u navigatore di ùn perdi risorse in u travagliu supplementu, cum'è recompiling shaders. I stati supportati includenu: shaders, buffer di vertice è layout di attributi, layout di gruppu appiccicosu, blending, prufundità è mudelli, è formati di output post-render.

A terza funzione di WebGPU hè chjamata u mudellu di ubligatoriu, largamente
reminiscente di i strumenti di raggruppamentu di risorse prisenti in Vulkan.
Per aggrupà e risorse, WebGPU furnisce un ughjettu GPUBindGroup, chì pò esse assuciatu cù altri oggetti simili per l'usu in shaders mentre scrive cumandamenti. 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.

E custruzzioni di notte di Firefox includenu avà u supportu WebGPU

In Firefox, per attivà WebGPU in about:config, ci hè un paràmetru "dom.webgpu.enabled". A rendering CanvasContext richiede ancu chì a cumpusizioni sia attivata WebRender ("gfx.webrender.all" in about:config), scrittu in Rust è l'outsourcing di l'operazioni di rendering di cuntenutu di a pagina à a GPU. L'implementazione WebGPU hè basatu annantu à u codice di u prugettu
wgpu, scrittu in Rust è capaci di curriri nantu à l'API DX12, Vulkan è Metal in Linux, Android, Windows è macOS (u supportu DX11 è OpenGL ES 3.0 hè ancu in sviluppu). In parallelu, Google sviluppa una altra implementazione, chì hè dispunibule in Branca canaria Chromium è hè attivatu cù a bandiera "chrome://flags/#enable-unsafe-webgpu", ma finu à avà funziona solu in macOS è Windows.

Source: opennet.ru

Add a comment