V Firefoxi kogumites spetsifikatsiooni tugi , pakkudes rakendusliidest 3D-graafika ja GPU-arvutuste töötlemiseks, kontseptuaalselt sarnane API-le , ja . Spetsifikatsiooni arendavad Mozilla, Google, Apple, Microsoft ja kogukonna esindajad , mis on loodud W3C organisatsiooni raames.
WebGPU peamine ülesanne on luua turvaline, mugav, ülekantav ja kõrge jõudlusega rakendusliides, mida saab kasutada veebitehnoloogia platvormil 3D-graafika ja kaasaegsete süsteemide graafika API-d, nagu Direct3D 12 Windowsis, Metal macOS-is ja Vulkan Linuxis. Kontseptuaalselt erineb WebGPU WebGL-ist sama palju kui Vulkan erineb OpenGL-ist ja see ei põhine konkreetse graafika API-l, vaid esindab universaalset kihti, mis üldiselt kasutab samu madalama taseme primitives, mis on olemas Vulkanis, Metal-is ja Direct3D-s.
WebGPU pakub JavaScripti rakendustele madalama taseme kontrolli GPU korraldamise, töötlemise ja komandide edastamise, seotud ressursside, mälu, puhversalvede, tekstuuriobjektide ja kompileeritud graafiliste shaderite üle. Selline lähenemine võimaldab saavutada kõrgemat graafikarakenduste jõudlust, vähendades kulusid ja tõstes GPU töötamise efektiivsust.
WebGPU annab võimaluse luua veebis täisfunktsionaalseid keerukaid 3D-projekte, mis töötavad võrdselt hästi kui iseseisvad programmid, mis otse suhtlevad Vulkan'i, Metal'i või Direct3D-ga, kuid ei ole seotud konkreetsete platvormidega. WebGPU pakub samuti lisavõimalusi kohandamisel natiivsete graafikaprogrammide kujule, mis suudab töötada veebitehnoloogiate põhjal, tänu WebAssembly tehnoloogia rakendamisele. Lisaks 3D-graafikale hõlmab WebGPU ka võimekusi, mis on seotud arvutuste edasiviimisega GPU-le ja shaderite arendamise toega. saama luua WebGPU Shading Language keeles või määratlemiseks SPIR-V vaheformaadis, seejärel tõlgitakse see praeguste draiverite toetatud shaderi keeltesse.
WebGPU-s kasutatakse eraldi ressursside haldust, ettevalmistustöid ja käskude edastamist GPU-le (WebGL-is vastutas kõik ühe objekti eest). Pakutakse kolme eraldi konteksti:
GPUDevice ressursside, nagu tekstuuride ja pubufferite, loomiseks; GPUCommandEncoder eraldi käskude kodeerimiseks, sealhulgas renderdamise ja arvutuse etapid; GPUCommandBuffer GPU-le täitmiseks järjekorda edastamiseks. Tulemuse saab joonistada ala, mis on seotud ühe või mitme canvas elemendiga, või seda saab töödelda ilma väljundita (näiteks arvutusülesannete käivitamisel). Etappide jagamine lihtsustab ressursside loomise ja ettevalmistustööde jaotamist erinevatesse töötlejatesse, mida saab käivitada erinevates juhtmetes.
WebGPU teine erinevus WebGL-ist on lähenemine olekute töötlemisele. WebGPU-s on ette nähtud kaks objekti — GPURenderPipeline ja GPUComputePipeline, mis võimaldavad kombineerida erinevaid olekuid, mis on arendaja poolt eelnevalt määratud, andes brauserile võimaluse mitte raisata ressursse lisatöödeks, nagu näiteks shader'ite taaskomplekteerimine. Toetatud olekute hulka kuuluvad: shader'id, vertex-bufferite ja atribuutide paigutused, kinnitatud gruppide paigutused, segamine, sügavus ja malle, renderdamise väljundvormid.
WebGPU kolmas omadus on sidumismudel, mis sarnaneb suuresti
Vulkanis olemasolevatele ressursirühmitamise vahenditele.
WebGPU-s ressursside gruppide ühendamiseks on olemas GPUBindGroup objekt, mille saab käskude kirjutamisel siduda teiste sarnaste objektidega shaderites kasutamiseks. Selliste gruppide loomine võimaldab draiveril eelnevalt teha vajalikud ettevalmistavad toimingud ja kiirendab brauseri ressursside sidumise vahetamist joonistamise kutsumiste vahel. Ressursi sidumise paigutus saab eelnevalt määratleda GPUBindGroupLayout objekti abil.

Firefoxis WebGPU aktiveerimiseks on about:config-is seadistus „dom.webgpu.enabled“. CanvasContext'i joonistamiseks on samuti vajalik aktiveerida komposiitimise süsteem („gfx.webrender.all“ about:config-is), mis on kirjutatud Rust keeles ja viib GPU-le joonistusoperatsioonid, et täita lehe sisu joonistamine. WebGPU rakendus põhineb projektikoodi
, mis on kirjutatud Rust keeles ja suudab töötada DX12, Vulkan ja Metal API peal Linuxis, Androidis, Windowsis ja macOS-is (samuti on arendamisel tugi DX11 ja OpenGL ES 3.0). Samal ajal arendab Google teist rakendust, mis on saadaval Chromiumi aktiveerimine toimub lipu abil «chrome://flags/#enable-unsafe-webgpu», kuid töötab hetkel ainult macOS-i ja Windowsi korral.
Allikas: opennet.ru
