В
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
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.
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
Source: opennet.ru