В Firefox međugradnje podrška za specifikaciju , koji pruža programsko sučelje za obradu 3D grafike i GPU računalstvo, konceptualno slično API-ju , и . Specifikaciju razvijaju Mozilla, Google, Apple, Microsoft i članovi zajednice u , koju je izradila organizacija W3C.
Ključni cilj WebGPU-a je stvaranje sigurnog, praktičnog, prenosivog i visokoučinkovitog softverskog sučelja za korištenje 3D grafičkih tehnologija i mogućnosti koje pružaju moderni API-ji za sistemsku grafiku, poput Direct3D 12 na Web platformi. Windows, Metal u macOS i Vulkan u LinuxKonceptualno, WebGPU se razlikuje od WebGL-a na gotovo isti način na koji se Vulkan razlikuje od OpenGL-a. Ne temelji se na specifičnom grafičkom API-ju, već je univerzalni sloj koji općenito koristi iste niskorazinske primitive koji se nalaze u Vulkanu, Metalu i Direct3D-u.
WebGPU omogućuje JavaScript aplikacijama kontrolu niže razine nad organizacijom, obradom i prijenosom naredbi GPU-u, upravljanje pridruženim resursima, memorijom, međuspremnicima, objektima teksture i sastavljenim grafičkim shaderima. Ovaj vam pristup omogućuje postizanje većih performansi za grafičke aplikacije smanjenjem režijskih troškova i povećanjem učinkovitosti rada s GPU-om.
WebGPU omogućuje stvaranje punopravnih složenih 3D projekata za web koji rade ništa lošije od samostalnih programa koji izravno pristupaju Vulkanu, Metalu ili Direct3D, ali nisu vezani za određene platforme. WebGPU također pruža dodatne mogućnosti prilikom prijenosa izvornih grafičkih programa u obrazac omogućen za web korištenjem tehnologije WebAssembly. Uz 3D grafiku, WebGPU također uključuje mogućnosti koje se odnose na prijenos kalkulacija na GPU i podršku razvoju shadera. Shaderi biti izrađen u WebGPU Shading Language ili specificiran u srednjem SPIR-V formatu, a zatim preveden u shader jezike koje podržavaju trenutni upravljački programi.
WebGPU koristi zasebno upravljanje resursima, pripremnim radom i prijenosom naredbi na GPU (u WebGL-u je jedan objekt bio odgovoran za sve odjednom). Navedena su tri odvojena konteksta:
GPUDuređaj za stvaranje resursa kao što su teksture i međuspremnici; GPUCommandEncoder za kodiranje pojedinačnih naredbi, uključujući faze renderiranja i izračuna; GPUCommandBuffer koji će biti stavljen u red čekanja za izvršenje na GPU-u. Rezultat se može prikazati u području koje je povezano s jednim ili više elemenata platna ili se može obraditi bez izlaza (na primjer, kada se izvode računalni zadaci). Odvajanje faza olakšava razdvajanje operacija stvaranja i pripreme resursa u različite rukovatelje koji se mogu izvoditi na različitim nitima.
Druga razlika između WebGPU-a i WebGL-a je drugačiji pristup rukovanju stanjima. WebGPU nudi dva objekta - GPURenderPipeline i GPUComputePipeline, koji vam omogućuju kombiniranje različitih stanja unaprijed definiranih od strane programera, što omogućuje pregledniku da ne troši resurse na dodatni rad, kao što je ponovno kompajliranje shadera. Podržana stanja uključuju: shadere, međuspremnik vrhova i rasporede atributa, rasporede ljepljivih grupa, miješanje, dubinu i uzorke te izlazne formate nakon renderiranja.
Treća značajka WebGPU-a uglavnom se naziva model vezivanja
podsjeća na alate za grupiranje resursa prisutne u Vulkanu.
Za grupiranje resursa zajedno, WebGPU pruža objekt GPUBindGroup, koji se može povezati s drugim sličnim objektima za korištenje u shaderima prilikom pisanja naredbi. Stvaranje takvih grupa omogućuje vozaču da izvrši potrebne pripremne radnje unaprijed, a pregledniku omogućuje mnogo bržu promjenu veza resursa između poziva crtanja. Raspored povezivanja resursa može se unaprijed definirati pomoću objekta GPUBindGroupLayout.

U Firefoxu, kako biste omogućili WebGPU u about:config, postoji postavka “dom.webgpu.enabled”. CanvasContext renderiranje također zahtijeva da bude omogućeno sastavljanje ("gfx.webrender.all" u about:config), napisan u Rustu i prepušta operacije renderiranja sadržaja stranice GPU-u. Implementacija WebGPU-a temelji se na kodu projekta
, napisan u Rustu i sposoban za rad na DX12, Vulkan i Metal API-jima u Linux, Android, Windows и macOS (Podrška za DX11 i OpenGL ES 3.0 je također u razvoju.) Google također razvija još jednu implementaciju koja je dostupna u Chromium se omogućava pomoću zastavice „chrome://flags/#enable-unsafe-webgpu“, ali radi samo u macOS и Windows.
Izvor: opennet.ru
