Firefox-nagtelike bouwerk sluit nou WebGPU-ondersteuning in

В nag Firefox bou verskyn spesifikasie ondersteuning WebGPU, wat 'n programmeringskoppelvlak bied vir 3D grafiese verwerking en GPU-kant rekenaars, konseptueel soortgelyk aan die API vulkaan, Metal и Direk3D 12. Die spesifikasie word ontwikkel deur Mozilla, Google, Apple, Microsoft en gemeenskapslede in werkgroep, geskep deur die W3C-organisasie.

Die sleuteldoel van WebGPU is om 'n veilige, gebruikersvriendelike, draagbare en hoëprestasie-programmeringskoppelvlak vir die webplatform te verskaf om die 3D-grafiese tegnologieë en vermoëns te benut wat deur moderne stelselgrafika-API's, soos Direct3D 12 op Windows, Metal verskaf word. op macOS, en Vulkan op Linux. Konseptueel verskil WebGPU van WebGL op baie dieselfde manier as wat Vulkan van OpenGL verskil, en terselfdertyd is dit nie gebaseer op 'n spesifieke grafiese API nie, maar is dit 'n universele laag wat oor die algemeen dieselfde lae-vlak primitiewe gebruik wat in Vulkan gevind word, Metaal en Direct3D.

WebGPU bied JavaScript-toepassings met laervlakbeheer oor die organisasie, verwerking en oordrag van opdragte na die GPU, bestuur geassosieerde hulpbronne, geheue, buffers, tekstuurvoorwerpe en saamgestelde grafiese shaders. Hierdie benadering laat jou toe om hoër werkverrigting vir grafiese toepassings te bereik deur oorhoofse koste te verminder en die doeltreffendheid van die werk met die GPU te verhoog.

WebGPU maak dit moontlik om volwaardige komplekse 3D-projekte vir die web te skep wat nie slegter werk as selfstandige programme wat direk toegang tot Vulkan, Metal of Direct3D het nie, maar nie aan spesifieke platforms gekoppel is nie. WebGPU bied ook bykomende vermoëns wanneer inheemse grafiese programme oorgedra word na 'n vorm wat op webtegnologieë kan loop, danksy die gebruik van WebAssembly-tegnologie. Benewens 3D-grafika, bevat WebGPU ook vermoëns wat verband hou met die aflaai van berekeninge na die GPU en die ondersteuning van shader-ontwikkeling. Shaders kan geskep word in die WebGPU Shading Language of gespesifiseer in die intermediêre SPIR-V-formaat, en dan vertaal in shader-tale wat deur huidige drywers ondersteun word.

WebGPU gebruik afsonderlike bestuur van hulpbronne, voorbereidingswerk en oordrag van opdragte na die GPU (in WebGL was een voorwerp op een slag verantwoordelik vir alles). Drie afsonderlike kontekste word verskaf:
GPU-toestel vir die skep van hulpbronne soos teksture en buffers; GPUCommandEncoder vir die enkodering van individuele opdragte, insluitend lewering en berekeningstadiums; GPUCommandBuffer om in tou te staan ​​vir uitvoering op die GPU. Die resultaat kan gelewer word in 'n area wat met een of meer doekelemente geassosieer word, of sonder uitset verwerk word (byvoorbeeld wanneer rekenaartake uitgevoer word). Deur die stadiums te skei, maak dit makliker om hulpbronskepping en voorbereidingsbewerkings te skei in verskillende hanteerders wat op verskillende drade kan loop.

Die tweede verskil tussen WebGPU en WebGL is 'n ander benadering tot die hantering van state. WebGPU bied twee voorwerpe - GPURenderPipeline en GPUComputePipeline, wat jou toelaat om verskeie toestande wat vooraf deur die ontwikkelaar gedefinieer is, te kombineer, wat die blaaier toelaat om nie hulpbronne te mors op bykomende werk, soos die hersamestelling van shaders nie. Ondersteunde toestande sluit in: skakerings, hoekpuntbuffer en kenmerkuitlegte, taai groepuitlegte, vermenging, diepte en patrone, en na-weergawe uitsetformate.

Die derde kenmerk van WebGPU word grotendeels die bindingsmodel genoem
herinner aan die hulpbrongroeperingsinstrumente wat in Vulkan voorkom.
Om hulpbronne saam te groepeer, verskaf WebGPU 'n GPUBindGroup-objek, wat met ander soortgelyke voorwerpe geassosieer kan word vir gebruik in shaders terwyl opdragte geskryf word. Die skep van sulke groepe laat die bestuurder toe om vooraf die nodige voorbereidende aksies uit te voer, en laat die blaaier toe om hulpbronbindings tussen trekoproepe baie vinniger te verander. Die uitleg van hulpbronbindings kan vooraf gedefinieer word deur die GPUBindGroupLayout-objek te gebruik.

Firefox-nagtelike bouwerk sluit nou WebGPU-ondersteuning in

In Firefox word die "dom.webgpu.enabled"-instelling verskaf in about:config om WebGPU te aktiveer. CanvasContext-weergawe vereis ook dat samestelling geaktiveer word WebRender ("gfx.webrender.all" in about:config), geskryf in Rust en die uitkontraktering van bladsy-inhoudweergawe-bewerkings na die GPU. WebGPU-implementering is gebaseer op projekkode
wgpu, geskryf in Rust en in staat om bo-op die DX12, Vulkan en Metal API's op Linux, Android, Windows en macOS te loop (DX11 en OpenGL ES 3.0 ondersteuning is ook in ontwikkeling). Terselfdertyd ontwikkel Google nog 'n implementering, wat beskikbaar is in Kanarie tak Chromium en is geaktiveer met die “chrome://flags/#enable-unsafe-webgpu” vlag, maar werk tot dusver net op macOS en Windows.

Bron: opennet.ru

Voeg 'n opmerking