Podpora za WebGPU je dodana nočnim izdelavam Firefoxa

В noč Zgradbe Firefoxa pojavil podpora za specifikacije WebGPE, ki zagotavlja programski vmesnik za obdelavo 3D grafike in računalništvo na strani GPE, ki je konceptualno podoben API-ju Vulkan, Metal и Direct3D 12. Specifikacijo razvijajo Mozilla, Google, Apple, Microsoft in člani skupnosti v delovna skupina, ki ga je ustvarila organizacija W3C.

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 lahko ustvariti v jeziku senčenja WebGPU ali določiti v vmesnem formatu SPIR-V in nato prevesti v jezike senčil, ki jih podpirajo trenutni gonilniki.

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.

Podpora za WebGPU je dodana nočnim izdelavam Firefoxa

V Firefoxu je za omogočanje WebGPU v about:config nastavitev »dom.webgpu.enabled«. Upodabljanje CanvasContext zahteva tudi, da je omogočeno sestavljanje WebRender (»gfx.webrender.all« v about:config), napisano v Rust in zunanje izvajanje operacij upodabljanja vsebine strani v GPE. Izvedba WebGPU temelji na kodi projekta
wgpu, napisan v Rust in zmožen delovati na API-jih DX12, Vulkan in Metal v sistemih Linux, Android, Windows in macOS (podpora za DX11 in OpenGL ES 3.0 je tudi v razvoju). Vzporedno Google razvija drugo izvedbo, ki je na voljo v Kanarsko vejo Chromium in je omogočen z zastavico »chrome://flags/#enable-unsafe-webgpu«, vendar zaenkrat deluje samo v sistemih macOS in Windows.

Vir: opennet.ru

Dodaj komentar