В
Ključni cilj WebGPU je zagotoviti varen, uporabniku prijazen, prenosljiv in visoko zmogljiv programski vmesnik za spletno platformo za izkoriščanje 3D grafičnih tehnologij in zmogljivosti, ki jih ponujajo sodobni sistemski grafični API-ji, kot so Direct3D 12 v sistemu Windows, Metal na macOS in Vulkan na Linuxu. Konceptualno se WebGPU razlikuje od WebGL na skoraj enak način, kot se Vulkan razlikuje od OpenGL, hkrati pa ne temelji na specifičnem grafičnem API-ju, ampak je univerzalna plast, ki na splošno uporablja iste primitive nizke ravni kot v Vulkanu, Metal in Direct3D.
WebGPU omogoča aplikacijam JavaScript nadzor na nižji ravni nad organizacijo, obdelavo in prenosom ukazov v GPE, upravljanje povezanih virov, pomnilnika, vmesnih pomnilnikov, objektov teksture in sestavljenih grafičnih senčil. Ta pristop vam omogoča doseganje višje zmogljivosti za grafične aplikacije z zmanjšanjem režijskih stroškov in povečanjem učinkovitosti dela z GPE.
WebGPU omogoča ustvarjanje polnopravnih kompleksnih 3D projektov za splet, ki delujejo nič slabše od samostojnih programov, ki neposredno dostopajo do Vulkan, Metal ali Direct3D, vendar niso vezani na določene platforme. WebGPU ponuja tudi dodatne zmogljivosti pri prenosu izvornih grafičnih programov v spletno omogočeno obliko z uporabo tehnologije WebAssembly. Poleg 3D grafike WebGPU pokriva tudi zmožnosti, povezane z razbremenitvijo izračunov na GPE in podporo razvoju senčil. Senčniki
WebGPU uporablja ločeno upravljanje virov, pripravljalno delo in prenos ukazov v GPU (v WebGL je bil en objekt odgovoren za vse hkrati). Na voljo so trije ločeni konteksti:
GPUDevice za ustvarjanje virov, kot so teksture in medpomnilniki; GPUCommandEncoder za kodiranje posameznih ukazov, vključno s stopnjami upodabljanja in izračuna; GPUCommandBuffer, ki bo postavljen v čakalno vrsto za izvajanje na GPE. Rezultat je mogoče upodobiti v območju, povezanem z enim ali več elementi platna, ali obdelati brez izhoda (na primer pri izvajanju računalniških nalog). Ločevanje stopenj olajša ločevanje operacij ustvarjanja in priprave virov v različne upravljalnike, ki se lahko izvajajo v različnih nitih.
Druga razlika med WebGPU in WebGL je drugačen pristop k obravnavanju stanj. WebGPU ponuja dva predmeta - GPURenderPipeline in GPUComputePipeline, ki omogočata kombiniranje različnih stanj, ki jih vnaprej določi razvijalec, kar omogoča brskalniku, da ne zapravlja sredstev za dodatno delo, kot je ponovno prevajanje senčil. Podprta stanja vključujejo: senčila, vmesni pomnilnik vozlišč in postavitve atributov, lepljive postavitve skupin, mešanje, globino in vzorce ter izhodne formate po upodabljanju.
Tretja značilnost WebGPU se večinoma imenuje vezni model
ki spominja na orodja za združevanje virov, ki so prisotna v Vulkanu.
Za združevanje virov WebGPU ponuja objekt GPUBindGroup, ki ga je mogoče povezati z drugimi podobnimi objekti za uporabo v senčilih pri pisanju ukazov. Ustvarjanje takšnih skupin omogoča gonilniku, da vnaprej izvede potrebna pripravljalna dejanja, brskalniku pa omogoča veliko hitrejše spreminjanje vezav virov med klici risanja. Postavitev povezav virov je mogoče vnaprej določiti z uporabo predmeta GPUBindGroupLayout.
V Firefoxu je za omogočanje WebGPU v about:config nastavitev »dom.webgpu.enabled«. Upodabljanje CanvasContext zahteva tudi, da je omogočeno sestavljanje
Vir: opennet.ru