Uues Firefoxi versioonides spetsiifikate tugi , pakkudes 3D-graafika ja GPU-poolsete arvutustega tegelemiseks programmeerimise liidest, mis on mÔistetavalt sarnane API-ga , ja . Spetsiifikatsiooni arendavad Mozilla, Google, Apple, Microsoft ja kogukonna esindajad , mis on loodud W3C organisatsiooni raames.
WebGPU peamine eesmĂ€rk on luua turvaline, mugav, ĂŒlekantav ja kĂ”rge jĂ”udlusega programmeerimise liides, mida saab kasutada veebiplatvormide 3D-graafika tehnoloogiate ja vĂ”imaluste jaoks, mida pakuvad kaasaegsed sĂŒsteemigraafika API-d, nagu Direct3D 12 Windowsis, Metal macOS-is ja Vulkan Linuxis. MĂ”istetavalt erineb WebGPU WebGL-st umbes sama palju nagu Vulkan erineb OpenGL-st, see ei pĂ”hine konkreetsetel graafika API-del, vaid esindab universaalset kihistust, mis kasutab ĂŒldiselt samu madala taseme primitiive, mis on saadaval Vulkanis, Metal-is ja Direct3D-s.
WebGPU annab JavaScripti rakendustele madalamate tasemete kontrolli GPU-le kĂ€skude andmise, kĂ€sureeglite haldamise, mĂ€lu, puhversalvestite, tekstuuri objektide ja kompileeritud graafikaseente ĂŒle. Selline lĂ€henemine vĂ”imaldab saavutada suuremat graafikarakenduste jĂ”udlust, vĂ€hendades ĂŒleĂŒldist koormust ja parandades GPU efektiivsust.
WebGPU vÔimaldab luua veebis tÀielikult keerulisi 3D-projekte, mis toimivad sama hÀsti kui iseseisvad programmid, mis suhtlevad otse Vulkaniga, Metaliga vÔi Direct3D-ga, kuid ei ole seotud konkreetsete platvormidega. WebGPU pakub ka tÀiendavaid vÔimalusi natiivsete graafikarakenduste portimiseks vormi, mis suudab töötada veebitehnoloogiate alusel, kasutades WebAssembly tehnoloogiat. Lisaks 3D-graafikale hÔlmab WebGPU ka GPU-le arvutuste viimise ja shaderite arendamisega seotud vÔimalusi. Shaderid saab luua WebGPU Shading Language keeles vÔi esitada vaheformaadis SPIR-V, mille jÀrel tÔlgitakse need praeguste draiverite toetatavate shadereike keeltesse.
WebGPU rakendab eraldi ressursside, ettevalmistamise ja GPU-le kĂ€skude edastamise juhtimist (WebGL-is vastutas ĂŒks objekt kĂ”igi eest). Pakutakse kolme eraldi konteksti:
GPUDevice ressursside, nagu tekstuuride ja puhverite loomine; GPUCommandEncoder individuaalsete kĂ€skude kodeerimiseks, sealhulgas renderdamise ja arvutamise etappid; GPUCommandBuffer, et saata tĂ€itmiseks GPU-sse. Tulemuse saab joonistada ala, mis on seotud ĂŒhe vĂ”i mitme canvas elementiga, vĂ”i töödelda ilma vĂ€ljastamiseta (nĂ€iteks arvutusĂŒlesannete kĂ€ivitamisel). Etappide eraldamine lihtsustab ressursside loomise ja ettevalmistusoperatsioonide jagamist erinevatesse töötlejatesse, mis vĂ”ivad toimida erinevates lĂ”imedes.
Teine erinevus WebGPU ja WebGL vahel on teine lĂ€henemine olekute töötlemisel. WebGPU-s on pakkuda kaks objekti â GPURenderPipeline ja GPUComputePipeline, mis vĂ”imaldavad arendajal kombineerida erinevaid olekuid, et vĂ€hendada brauseri ressursikasutust, vĂ€ltides tĂ€iendavat tööd, nagu shaderite uuesti kompileerimine. Toetatud olekute hulka kuuluvad: shaderid, vertex-bufri ja atribuutide paigutused, kinnitatud gruppide paigutused, segamine, sĂŒgavus ja mustrid, vĂ€ljundiformaadid pĂ€rast renderdamist.
Kolmas omadus WebGPU-st on sidumise mudel, mis sarnaneb palju
Vulkani grupi ressursside gruppimise vahenditega.
Ressursside gruppidesse ĂŒhendamiseks pakub WebGPU objekti GPUBindGroup, mida saab kĂ€skude kirjutamise ajal siduda teiste sarnaste objektidega shaderites kasutamiseks. Selliste gruppide loomine vĂ”imaldab draiveril ette valmistada vajalikud ettevalmistustööd ja brauseril vĂ”imaldab kiiremini muuta ressursside sidumisi renderdamise kutse vahel. Ressursside sidumiste paigutuse vĂ”ib eelnevalt mÀÀratleda objekti GPUBindGroupLayout abil.

Firefoxis WebGPU aktiveerimiseks about:config-is on seadistus «dom.webgpu.enabled». CanvasContext'i renderdamiseks on samuti vajalik aktiveerida komposiitimisĂŒsteem «gfx.webrender.all» about:config-is, mis on kirjutatud Rusti keeles ja viib GPU-le lehe sisu renderdamise toimingud. WebGPU rakendamine pĂ”hineb projekti koodil
, mis on kirjutatud Rusti keeles ja töötab DX12, Vulkani ja Metali API peal Linuxis, Androidis, Windowsis ja macOS-is (DX11 ja OpenGL ES 3.0 toetamine on samuti arendamisel). Samal ajal arendab Google teise rakenduse, mis on saadaval Chromium aktiveerub lipuga «chrome://flags/#enable-unsafe-webgpu», kuid töötab hetkel ainult macOS ja Windowsis.
Allikas: opennet.ru
