Firefox nakts versijās tagad ir iekļauts WebGPU atbalsts

Š’ nakts Firefox bÅ«vē parādÄ«jās specifikāciju atbalsts WebGPU, kas nodroÅ”ina programmÄ“Å”anas saskarni 3D grafikas apstrādei un GPU puses skaitļoÅ”anai, kas konceptuāli ir lÄ«dzÄ«ga API Vulkan, metāls Šø Direct3D 12. Specifikāciju izstrādā Mozilla, Google, Apple, Microsoft un kopienas locekļi darba grupa, ko izveidojusi W3C organizācija.

WebGPU galvenais mērÄ·is ir nodroÅ”ināt droÅ”u, lietotājam draudzÄ«gu, pārnēsājamu un augstas veiktspējas programmÄ“Å”anas interfeisu tÄ«mekļa platformai, lai izmantotu 3D grafikas tehnoloÄ£ijas un iespējas, ko nodroÅ”ina mÅ«sdienu sistēmas grafikas API, piemēram, Direct3D 12 operētājsistēmā Windows, Metal. operētājsistēmā macOS un Vulkan operētājsistēmā Linux. Konceptuāli WebGPU atŔķiras no WebGL tādā paŔā veidā, kā Vulkan atŔķiras no OpenGL, un tajā paŔā laikā tas nav balstÄ«ts uz konkrētu grafikas API, bet ir universāls slānis, kas parasti izmanto tos paÅ”us zema lÄ«meņa primitÄ«vus, kas atrodami Vulkan, Metāls un Direct3D.

WebGPU nodroÅ”ina JavaScript lietojumprogrammām zemāka lÄ«meņa kontroli pār komandu organizÄ“Å”anu, apstrādi un pārsÅ«tÄ«Å”anu uz GPU, pārvaldot saistÄ«tos resursus, atmiņu, buferus, tekstÅ«ras objektus un apkopotos grafikas ēnotājus. Å Ä« pieeja ļauj sasniegt augstāku veiktspēju grafikas lietojumprogrammām, samazinot pieskaitāmās izmaksas un palielinot darba ar GPU efektivitāti.

WebGPU ļauj izveidot pilnvērtÄ«gus sarežģītus 3D projektus tÄ«meklim, kas darbojas ne sliktāk kā atseviŔķas programmas, kas tieÅ”i piekļūst Vulkan, Metal vai Direct3D, bet nav piesaistÄ«tas noteiktām platformām. WebGPU nodroÅ”ina arÄ« papildu iespējas, pārnesot vietējās grafikas programmas tÄ«meklÄ« iespējotā formā, izmantojot WebAssembly tehnoloÄ£iju. Papildus 3D grafikai WebGPU aptver arÄ« iespējas, kas saistÄ«tas ar aprēķinu pārsÅ«tÄ«Å”anu uz GPU un ēnotāju izstrādes atbalstÄ«Å”anu. Ēnotāji var jāveido WebGPU ēnoÅ”anas valodā vai jānorāda vidējā SPIR-V formātā un pēc tam jātulko ēnotāju valodās, kuras atbalsta paÅ”reizējie draiveri.

WebGPU izmanto atseviŔķu resursu pārvaldību, sagatavoŔanās darbus un komandu pārsūtīŔanu uz GPU (WebGL viens objekts bija atbildīgs par visu uzreiz). Tiek nodroŔināti trīs atseviŔķi konteksti:
GPUDevice resursu, piemēram, tekstÅ«ru un buferu, izveidei; GPUCommandEncoder atseviŔķu komandu kodÄ“Å”anai, ieskaitot renderÄ“Å”anas un aprēķināŔanas posmus; GPUCommandBuffer, kas jāievieto rindā izpildei GPU. Rezultātu var atveidot apgabalā, kas saistÄ«ts ar vienu vai vairākiem audekla elementiem, vai apstrādāt bez izvades (piemēram, palaižot skaitļoÅ”anas uzdevumus). Atdalot posmus, ir vieglāk nodalÄ«t resursu izveides un sagatavoÅ”anas darbÄ«bas dažādos apstrādātājos, kas var darboties dažādos pavedienos.

Otrā atŔķirÄ«ba starp WebGPU un WebGL ir atŔķirÄ«ga pieeja stāvokļu apstrādei. WebGPU piedāvā divus objektus ā€“ GPURenderPipeline un GPUComputePipeline, kas ļauj apvienot dažādus izstrādātāja iepriekÅ” definētus stāvokļus, kas ļauj pārlÅ«kprogrammai netērēt resursus papildu darbam, piemēram, ēnotāju pārkompilÄ“Å”anai. AtbalstÄ«tie stāvokļi ir: ēnotāji, virsotņu bufera un atribÅ«tu izkārtojumi, lipÄ«go grupu izkārtojumi, sajaukÅ”ana, dziļums un modeļi, kā arÄ« pēcrenderÄ“Å”anas izvades formāti.

TreŔo WebGPU funkciju lielākoties sauc par saistoŔo modeli
atgādina Vulkan pieejamos resursu grupÄ“Å”anas rÄ«kus.
Lai grupētu resursus, WebGPU nodroÅ”ina GPUBindGroup objektu, ko var saistÄ«t ar citiem lÄ«dzÄ«giem objektiem, lai tos izmantotu ēnotājos, rakstot komandas. Šādu grupu izveide ļauj draiverim iepriekÅ” veikt nepiecieÅ”amās sagatavoÅ”anas darbÄ«bas, kā arÄ« ļauj pārlÅ«kprogrammai daudz ātrāk mainÄ«t resursu piesaisti starp izsaukumiem. Resursu saiÅ”u izkārtojumu var iepriekÅ” definēt, izmantojot objektu GPUBindGroupLayout.

Firefox nakts versijās tagad ir iekļauts WebGPU atbalsts

Lai pārlÅ«kprogrammā Firefox iespējotu WebGPU failā about:config, ir iestatÄ«jums ā€œdom.webgpu.enabledā€. CanvasContext renderÄ“Å”anai ir jāiespējo arÄ« kompozÄ«cija WebRender (ā€œgfx.webrender.allā€ in about:config), kas rakstÄ«ts Rust un lapas satura renderÄ“Å”anas darbÄ«bu ārpakalpojums GPU. WebGPU ievieÅ”ana ir balstÄ«ta uz projekta kodu
wgpu, rakstÄ«ts Rust un spēj darboties virs DX12, Vulkan un Metal API operētājsistēmās Linux, Android, Windows un macOS (tiek izstrādāts arÄ« DX11 un OpenGL ES 3.0 atbalsts). Paralēli Google izstrādā citu ievieÅ”anu, kas ir pieejama Kanāriju zars Chromium un ir iespējots, izmantojot karogu ā€œchrome://flags/#enable-unsafe-webgpuā€, taču lÄ«dz Å”im darbojas tikai operētājsistēmās macOS un Windows.

Avots: opennet.ru

Pievieno komentāru