Firefoxi igaõhtused versioonid sisaldavad nüüd WebGPU tuge

В öö Firefox ehitab ilmus spetsifikatsiooni tugi WebGPU, mis pakub programmeerimisliidest 3D-graafika töötlemiseks ja GPU-poolseks andmetöötluseks, mis on kontseptuaalselt sarnane API-ga Vulkan, Metal и Otsene3D 12. Spetsifikatsiooni töötavad välja Mozilla, Google, Apple, Microsoft ja kogukonna liikmed töögrupp, mille on loonud W3C organisatsioon.

WebGPU põhieesmärk on pakkuda veebiplatvormile turvalist, kasutajasõbralikku, kaasaskantavat ja suure jõudlusega programmeerimisliidest, et kasutada ära 3D-graafika tehnoloogiaid ja võimalusi, mida pakuvad kaasaegsed süsteemigraafika API-d, nagu Direct3D 12 Windowsis, Metal. macOS-is ja Vulkan Linuxis. Põhimõtteliselt erineb WebGPU WebGL-ist samamoodi, nagu Vulkan erineb OpenGL-ist, ja samal ajal ei põhine see konkreetsel graafika API-l, vaid on universaalne kiht, mis üldiselt kasutab samu madala taseme primitiive, mida leidub Vulkanis, Metall ja Direct3D.

WebGPU pakub JavaScripti rakendustele madalama taseme juhtimist GPU-le käskude korraldamise, töötlemise ja edastamise üle, seotud ressursside, mälu, puhvrite, tekstuuriobjektide ja kompileeritud graafikavarjutajate haldamisega. See lähenemisviis võimaldab teil saavutada graafikarakenduste suurema jõudluse, vähendades üldkulusid ja suurendades GPU-ga töötamise tõhusust.

WebGPU võimaldab luua veebi jaoks täieõiguslikke keerulisi 3D-projekte, mis ei tööta halvemini kui eraldiseisvad programmid, millel on otsene juurdepääs Vulkanile, Metallile või Direct3D-le, kuid mis pole seotud konkreetsete platvormidega. WebGPU pakub tänu WebAssembly tehnoloogia kasutamisele ka lisavõimalusi, kui natiivsed graafikaprogrammid teisaldatakse vormile, mis on võimeline töötama veebitehnoloogiates. Lisaks 3D-graafikale sisaldab WebGPU ka võimalusi, mis on seotud arvutuste mahalaadimisega GPU-le ja varjutajate arendamise toetamisega. Varjutajad võib luuakse WebGPU varjutuskeeles või määratakse vahepealses SPIR-V vormingus ja seejärel tõlgitakse varjundite keeltesse, mida toetavad praegused draiverid.

WebGPU kasutab eraldi ressursside haldamist, ettevalmistustööd ja GPU-le käskude edastamist (WebGL-is vastutas kõige eest korraga üks objekt). Pakutakse kolm erinevat konteksti:
GPUseade 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.

Teine erinevus WebGPU ja WebGL-i vahel on erinev lähenemine olekute käsitlemisele. 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.

WebGPU kolmandat funktsiooni nimetatakse suures osas sidumismudeliks
meenutab Vulkanis olemasolevaid ressursside rühmitamise tööriistu.
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.

Firefoxi igaõhtused versioonid sisaldavad nüüd WebGPU tuge

Firefoxis on WebGPU lubamiseks failis about:config säte "dom.webgpu.enabled". CanvasContexti renderdamine nõuab ka kompositsiooni lubamist Veebirender ("gfx.webrender.all" keeles about:config), kirjutatud Rust ja lehe sisu renderdamistoimingute allhange GPU-le. WebGPU juurutamine põhineb projekti koodil
wgpu, mis on kirjutatud Rust ja mis on võimeline töötama DX12, Vulkani ja Metalli API-de peal Linuxis, Androidis, Windowsis ja macOS-is (arenduses on ka DX11 ja OpenGL ES 3.0 tugi). Paralleelselt töötab Google välja teist rakendust, mis on saadaval Kanaari haru Chromium ja see on lubatud lipu „chrome://flags/#enable-unsafe-webgpu” abil, kuid töötab seni ainult macOS-is ja Windowsis.

Allikas: opennet.ru

Lisa kommentaar