Kompania Google shpalli përfshirjen automatikisht të mbështetjes për API-në grafike WebGPU dhe gjuhën e shenjave WGSL (WebGPU Shading Language) në versionin Chrome 113, i cili pritet të lansohet më 2 maj. WebGPU ofron një ndërfaqe programimi të ngjashme me Vulkan, Metal dhe Direct3D 12 për kryerjen e operacioneve në anën e GPU, siç janë renderimi dhe llogaritjet, si dhe lejon përdorimin e gjuhës së shenjave për të shkruar programe që funksionojnë në anën e GPU. Zbatimi i WebGPU do të përfshihet fillimisht vetëm në ndërtimet për ChromeOS, macOS dhe Windows. Mbështetja për WebGPU për Linux dhe Android do të aktivizohet më vonë.
PĂ«rveç Chrome, mbĂ«shtetjes eksperimentale tĂ« WebGPU po dĂ«shmohet qĂ« nga prilli i vitit 2020 nĂ« Firefox dhe qĂ« nga nĂ«ntori i vitit 2021 nĂ« Safari. PĂ«r tĂ« aktivizuar WebGPU nĂ« Firefox, duhet tĂ« vendosen flags dom.webgpu.enabled dhe gfx.webgpu.force-enabled nĂ« about:config. PĂ«r planet pĂ«r tĂ« ndarĂ« WebGPU si opsion tĂ« paracaktuar nĂ« Firefox dhe Safari, ende nuk ka informacion. Implementimet e WebGPU qĂ« po zhvillohen pĂ«r Firefox dhe Chrome janĂ« tĂ« disponueshme nĂ« formĂ«n e bibliotekave tĂ« veçanta â Dawn (C++) dhe wgpu (Rust), tĂ« cilat mund tĂ« pĂ«rdoren pĂ«r tĂ« integruar mbĂ«shtetje pĂ«r WebGPU nĂ« aplikacionet tuaja. Po ashtu, po punohet pĂ«r tĂ« shtuar mbĂ«shtetje pĂ«r WebGPU nĂ« bibliotekat e njohura JavaScript, qĂ« fillimisht pĂ«rdorin WebGL. PĂ«r shembull, mbĂ«shtetje e plotĂ« pĂ«r WebGPU Ă«shtĂ« shpallur tashmĂ« nĂ« Babylon.js, ndĂ«rsa mbĂ«shtetje e pjesshme nĂ« Three.js, PlayCanvas dhe TensorFlow.js.
Konceptualisht, WebGPU ndryshon nga WebGL njëlloj siç ndryshon API grafike Vulkan nga OpenGL, por WebGPU nuk bazohet në një API grafik specifik; ai përfaqëson një ndërfaqe universale që përdor të njëjtat primitive të nivelit të ulët si Vulkan, Metal dhe Direct3D. WebGPU u ofron aplikacioneve në JavaScript mjete për kontrollin në nivel të ulët mbi organizimin, përpunimin dhe dërgimin e komandave në GPU, si dhe menaxhimin e burimeve të lidhura, memories, buffer-eve, objekteve të teksturave dhe shenjuesve grafikë të përpunuar. Ky qasje lejon arritjen e performancës më të lartë të aplikacioneve grafike përmes reduktimit të shpenzimeve dhe rritjes së efikasitetit të punës me GPU.
WebGPU ofron mundësinë për të krijuar projekte komplekse 3D për Web, që funksionojnë po aq mirë sa programet e ndara që përdorin drejtpërdrejt Vulkan, Metal ose Direct3D, por që nuk janë të lidhura me platforma të caktuara. WebGPU gjithashtu ofron mundësi të mëtejshme për portimin e programeve native grafike në një formë që mund të funksionojë mbi teknologjitë web, falë kompilimit në WebAssembly. Përveç grafikes 3D, WebGPU mbulon edhe mundësitë e lidhura me transferimin e llogaritjeve në anën e GPU dhe ekzekutimin e shenjave.
Karakteristikat kryesore të WebGPU:
- Menaxhimi i ndarë i burimeve, punëve përgatitore dhe transferimit të komandave në GPU (në WebGL, një objekt përgjigjej për gjithçka). Ofron tre kontekste të veçanta: GPUDevice për krijimin e burimeve, si teksturat dhe tamponët; GPUCommandEncoder për kodimin e komandave të veçanta, duke përfshirë fazat e renderimit dhe llogarisë; GPUCommandBuffer për radhitjen për ekzekutim në GPU. Rezultati mund të vizatohet në një zonë të lidhur me një ose më shumë elemente canvas, ose të përpunohen pa dalje (p.sh., kur kryhen detyra llogaritur). Ndarja e fazave lehtëson ndarjen e krijimit të burimeve dhe operacioneve përgatitore në trajtues të ndryshëm, të cilët mund të ekzekutohen në thesare të ndryshme.
- NjĂ« qasje e ndryshme pĂ«r pĂ«rpunimin e gjendjeve. NĂ« WebGPU ofrohen dy objekte â GPURenderPipeline dhe GPUComputePipeline, tĂ« cilat lejojnĂ« kombinimin e gjendjeve tĂ« ndryshme, tĂ« pĂ«rcaktuara paraprakisht nga zhvilluesi, duke i dhĂ«nĂ« mundĂ«si shfletuesit tĂ« mos harxhojĂ« burime nĂ« kryerjen e punĂ«ve tĂ« tjera, siç Ă«shtĂ« ripompimi i shaderĂ«ve. Disa nga gjendjet e mbĂ«shtetura pĂ«rfshijnĂ«: shaderat, vendosjet e bufferave tĂ« pikĂ«ve dhe atributet, vendosjet e grupeve tĂ« lidhura, pĂ«rzierja, thellĂ«sia dhe modelet, format e daljes pas renderimit.
- Modeli i lidhjes, i ngjashĂ«m nĂ« masĂ« me mjetet e grupit tĂ« burimeve qĂ« gjenden nĂ« Vulkan. PĂ«r tĂ« bashkuar burimet nĂ« grupe, WebGPU ofron objektin GPUBindGroup, i cili gjatĂ« shkrimit tĂ« komandave mund tĂ« lidhet me objekte tĂ« tjera tĂ« ngjashme pĂ«r tâu pĂ«rdorur nĂ« shader. Krijimi i grupeve tĂ« tilla i jep mundĂ«si drejtuesit tĂ« kryejĂ« paraprakisht veprimet e nevojshme, ndĂ«rsa shfletuesit i lejon tĂ« ndryshojĂ« lidhjet e burimeve shumĂ« mĂ« shpejt midis thirrjeve tĂ« renderimit. Vendosja e lidhjeve tĂ« burimeve mund tĂ« pĂ«rcaktohet paraprakisht me ndihmĂ«n e objektit GPUBindGroupLayout.
Burimi: opennet.ru
