Në ndërtimeve Firefox mbështetje për specifikimin , që ofron një ndërfaqe programuese për përpunimin e grafikës 3D dhe llogaritjeve në anën e GPU, konceptualisht e ngjashme me API , dhe . Specifikimi po zhvillohet nga Mozilla, Google, Apple, Microsoft dhe përfaqësues të komunitetit në , i krijuar nën organizatën W3C.
Objektivi kryesor i WebGPU është krijimi i një ndërfaqe sigurie, miqësore, portabel dhe me performancë të lartë për të përdorur në platformën Web teknologjitë dhe mundësitë e grafikës 3D, që ofrohen nga API-të grafike moderne si Direct3D 12 në Windows, Metal në macOS dhe Vulkan në Linux. Konceptualisht WebGPU i ndan rrugët me WebGL, njësoj si Vulkan ndan me OpenGL, dhe nuk bazohet në një API grafike specifike, por paraqet një ndërfaqe universale që përdor në përgjithësi të njëjtat primitive të ulëta si ato në Vulkan, Metal dhe Direct3D.
WebGPU i jep aplikacioneve në JavaScript mjete për kontroll më të ulët mbi organizimin, përpunimin dhe dërgimin e komandave në GPU, menaxhimin e burimeve të lidhura, kujtesën, buferat, objektet e teksturës dhe shenjuesit e grafikëve të kompiluar. Ky qasje mundëson arritjen e performancës më të lartë të aplikacioneve grafike duke reduktuar shpenzimet dhe duke përmirësuar efektivitetin e punës me GPU.
WebGPU lejon krijimin e projekteve të komplikuara 3D për Web që funksionojnë njësoj si programet e ndara që komunikojnë drejtpërdrejt me Vulkan, Metal ose Direct3D, por që nuk janë të lidhura me platforma të caktuara. WebGPU gjithashtu ofron mundësi shtesë për portimin e programeve grafike native në forma që mund të funksionojnë mbi teknologjitë web, duke përdorur teknologjinë WebAssembly. Përveç grafikës 3D, WebGPU mbulon edhe mundësitë që lidhen me llogaritjet në anën e GPU dhe mbështetje për zhvillimin e shenjuesve. Shenjuesit mund të krijohen në gjuhën WebGPU Shading Language ose të definohen në një format ndërmjetës SPIR-V, pas së cilës do të transmetohen në gjuhët e shenjuesve të mbështetur nga drejtuesit aktualë.
Në WebGPU aplikohet menaxhimi i ndarë i burimeve, punëve përgatitore dhe dërgimin e komandave në GPU (në WebGL një objekt ishte përgjegjës për gjithçka). Ofron tri kontekste të ndara:
GPUDevice për krijimin e burimeve si teksturat dhe buferat; GPUCommandEncoder për kodimin e komandave të veçanta, duke përfshirë fazat e renderimit dhe llogaritjes; GPUCommandBuffer për dërgimin në radhë për ekzekutim në GPU. Rezultati mund të vizatohet në një zonë të lidhur me një ose disa elemente canvas, ose të përpunuar pa dalje (p.sh., kur kryhen detyra llogaritëse). Ndarja e fazave e thjeshton ndarjen e krijimit të burimeve dhe operacioneve përgatitore në trajtues të ndryshëm, të cilat mund të ekzekutohen në tortilla të ndryshme.
Diferenca e dytĂ« midis WebGPU dhe WebGL Ă«shtĂ« njĂ« qasje tjetĂ«r pĂ«r pĂ«rpunimin e gjendjeve. NĂ« WebGPU ofrohen dy objekte â GPURenderPipeline dhe GPUComputePipeline, qĂ« lejojnĂ« kombinimin e gjendjeve tĂ« ndryshme, tĂ« definuara paraprakisht nga zhvilluesi, duke i lejuar shfletuesit tĂ« mos harxhojĂ« burime pĂ«r tĂ« kryer punĂ« shtesĂ« si ripozita e shenjuesve. Mes gjendjeve tĂ« mbĂ«shtetura janĂ«: shenjuesit, disposita e buferave tĂ« vertikĂ«s dhe atyre tĂ« atributeve, disposita e grupeve tĂ« mbĂ«shtetur, pĂ«rzierja, thellĂ«sia dhe format e daljes pas renderimit.
Karakteristika e tretë e WebGPU është modeli i lidhjes, që shumë
shkon përpara me mjetet e grupimit të burimeve në Vulkan.
Për të grupuar burimet në grupe, WebGPU ofron objektin GPUBindGroup, i cili gjatë regjistrimit të komandave mund të lidhet me objekte të tjera të këtij lloji për t'u përdorur në shenjues. Krijimi i këtyre grupeve i mundëson drejtuesit të kryejë paraprakisht veprimet e nevojshme përgatitore, dhe shfletuesit të ndryshojë në mënyrë të ndjeshme lidhjet e burimeve midis thirrjeve të vizatimit. Dispozita e lidhjeve të burimeve mund të definohet paraprakisht përmes objektit GPUBindGroupLayout.

Në Firefox për aktivizimin e WebGPU në about:config ekziston cilësimi 'dom.webgpu.enabled'. Për vizatimin e CanvasContext gjithashtu kërkohet aktivizimi i sistemit të kompozimit ('gfx.webrender.all' në about:config), e shkruar në gjuhën Rust dhe që kalon operacionet e vizatimit të përmbajtjes së faqes në anën e GPU. Implementimi i WebGPU bazohet në kodin e projektit
, i shkruar në gjuhën Rust dhe i aftë të funksionojë mbi API DX12, Vulkan dhe Metal në Linux, Android, Windows dhe macOS (po zhvillohet gjithashtu mbështetje për DX11 dhe OpenGL ES 3.0). Paralelisht, kompania Google po zhvillon një implementim tjetër, që është në dispozitë në Chromium aktivizohet me ndihmën e flamurit «chrome://flags/#enable-unsafe-webgpu», por funksionon vetëm në macOS dhe Windows për momentin.
Burimi: opennet.ru
