Firefox ja Safari saavad WebGPU tuge

Mozilla on otsustanud Firefoxis lubada WebGPU API ja WGSL-i (WebGPU varjunduskeele) toe. Platvormi jaoks Windows WebGPU tugi lubatakse Firefox 141-s vaikimisi, see on planeeritud 22. juuliks. Seejärel on WebGPU tugi plaanis lubada järgmiste kuude järkudes: Linux и macOSja mõne aja pärast platvormi versioonis AndroidWebGPU käsitsi lubamiseks saate kasutada parameetreid "dom.webgpu.enabled" ja "gfx.webrender.all" lehel about:config.

Chrome'is pakuti WebGPU tuge vaikimisi versioonis 113, mis avaldati 2023. aasta mais. Safaris plaanitakse WebGPU tugi vaikimisi lubada sel sügisel (eksperimentaalne tugi on olnud saadaval alates 2021. aasta novembrist). Firefoxis on eksperimentaalne WebGPU tugi olnud olemas alates 2020. aastast, kuid see oli vaikimisi lubatud ainult Firefoxi öistes järkudes. Firefoxi WebGPU implementatsioon põhineb WGPU projektikoodil, mis on kirjutatud Rustis ja võimeline töötama Direct3D 12, Vulkani, OpenGLi ja Metali graafika API-de peal.

WebGPU pakub GPU poolel toimingute tegemiseks sarnast API-t nagu Vulkan, Metal ja Direct3D 12. Lisaks 3D-graafikale hõlmab WebGPU ka arvutuste GPU poolele ümberpaigutamise ja varjutajate käivitamisega seotud võimalusi. Kontseptuaalselt erineb WebGPU vanast WebGL-spetsifikatsioonist sarnaselt sellele, kuidas Vulkani graafika API erineb OpenGL-ist. Samal ajal ei põhine WebGPU konkreetsel graafika API-l, vaid on universaalne kiht, mis kasutab samu madala taseme primitiive, mis on saadaval Vulkanis, Metalis ja Direct3D-s.

WebGPU võimaldab JavaScripti rakendustel juhtida käskude korraldamist, töötlemist ja edastamist GPU-le ning hallata seotud ressursse, mälu, puhvreid, tekstuuriobjekte ja kompileeritud graafikavarjundajaid. See lähenemisviis võimaldab graafikarakenduste suuremat jõudlust, vähendades üldkulusid ja suurendades GPU-ga töötamise efektiivsust.

WebGPU abil saate luua platvormist sõltumatuid keerukaid 3D-projekte, mis toimivad sama hästi kui iseseisvad programmid, mis kasutavad otse Vulkanit, Metali või Direct3D-d. WebGPU pakub ka lisavõimalusi natiivsete graafikaprogrammide portimiseks brauserites töötavale vormingule tänu WebAssembly kompileerimisele.

WebGPU põhijooned ja erinevused WebGL-ist:

  • Eraldi ressursside haldamine, ettevalmistustööd ja käskude edastamine GPU-le (WebGL-is vastutas kõige eest korraga üks objekt). Pakutakse kolm erinevat konteksti: GPUDevice ressursside (nt tekstuurid ja puhvrid) loomiseks; GPUCommandEncoder üksikute käskude kodeerimiseks, sealhulgas renderdamise ja arvutamise etapid; GPUCommandBuffer, mis tuleb GPU-s täitmiseks järjekorda panna. Tulemust saab renderdada alal, mis on seotud ühe või mitme lõuendielemendiga, või töödelda ilma väljundita (näiteks arvutusülesannete täitmisel). Etappide eraldamine hõlbustab ressursside loomise ja ettevalmistamise toimingute eraldamist erinevateks töötlejateks, mis võivad töötada erinevatel lõimedel.
  • Teistsugune lähenemine olekute töötlemisele. WebGPU pakub kahte objekti – GPURenderPipeline ja GPUComputePipeline, mis võimaldavad kombineerida erinevaid arendaja poolt eelnevalt defineeritud olekuid, mis võimaldab brauseril mitte raisata ressursse lisatööle, näiteks varjutajate ümberkompileerimisele. Toetatud olekud hõlmavad varjutajaid, tipupuhvri ja atribuutide paigutust, kleepuvate rühmade paigutust, segamist, sügavust ja mustreid ning renderdamisjärgseid väljundvorminguid.
  • Siduv mudel, mis sarnaneb paljuski Vulkani ressursside rühmitamise funktsioonidega. Ressursside rühmitamiseks pakub WebGPU GPUBindGroupi objekti, mida saab käskude kirjutamise ajal varjutajates kasutamiseks seostada teiste sarnaste objektidega. Selliste rühmade loomine võimaldab draiveril eelnevalt vajalikud ettevalmistavad toimingud teha ning brauseril saab palju kiiremini ressursside sidumist joonistuskutsete vahel muuta. Ressursisidemete paigutust saab eelnevalt määratleda, kasutades objekti GPUBindGroupLayout.

Allikas: opennet.ru

Ostke DDoS-kaitsega saitide jaoks usaldusväärne hostimine, VPS VDS-serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster