Mbështetja WebGPU do të aktivizohet në Chrome

Google ka njoftuar përfshirjen e mbështetjes së paracaktuar për API grafike WebGPU dhe WGSL (WebGPU Shading Language) në Chrome 113, i cili është planifikuar të dalë 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-së, si renderimi dhe llogaritja, dhe gjithashtu lejon përdorimin e një gjuhe shader për të shkruar programe që funksionojnë në anën e GPU-së. Zbatimi i WebGPU fillimisht do të aktivizohet vetëm në pajisjet ChromeOS, macOS dhe Windows. Për Linux dhe Android, mbështetja WebGPU do të aktivizohet në një datë të mëvonshme.

Përveç Chrome, mbështetja eksperimentale për WebGPU është testuar që nga prilli 2020 në Firefox dhe që nga nëntori 2021 në Safari. Për të aktivizuar WebGPU në Firefox, duhet të vendosni flamujt dom.webgpu.enabled dhe gfx.webgpu.force në about:config. Nuk ka ende plane për të aktivizuar WebGPU si parazgjedhje në Firefox dhe Safari. Implementimet e WebGPU të zhvilluara 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'i përdorni për të integruar mbështetjen e WebGPU në aplikacionet tuaja. Puna është gjithashtu duke u zhvilluar për të shtuar mbështetjen e WebGPU në bibliotekat e njohura JavaScript që përdorin në mënyrë origjinale WebGL. Për shembull, mbështetja e plotë për WebGPU tashmë është shpallur në Babylon.js dhe mbështetje e pjesshme në Three.js, PlayCanvas dhe TensorFlow.js.

Konceptualisht, WebGPU ndryshon nga WebGL në të njëjtën mënyrë që API grafike Vulkan ndryshon nga OpenGL, por WebGPU nuk bazohet në një API specifike grafike, por është një shtresë universale që përdor të njëjtat primitivë të nivelit të ulët që gjenden në Vulkan, Metal dhe Direct3D. WebGPU ofron aplikacione JavaScript me kontroll të nivelit të ulët mbi organizimin, përpunimin dhe transmetimin e komandave në GPU, menaxhimin e burimeve të lidhura, memorien, buferët, objektet e teksturës dhe shaderët e përpiluar grafikë. Kjo qasje ju lejon të arrini performancë më të lartë për aplikacionet grafike duke ulur kostot e përgjithshme dhe duke rritur efikasitetin e punës me GPU.

WebGPU bën të mundur krijimin e projekteve komplekse 3D për Ueb që nuk performojnë më keq se programet e pavarura që përdorin drejtpërdrejt Vulkan, Metal ose Direct3D, por nuk janë të lidhura me platforma specifike. WebGPU ofron gjithashtu aftësi shtesë për transferimin e programeve grafike vendase në një formë të aktivizuar në ueb përmes përpilimit në WebAssembly. Përveç grafikës 3D, WebGPU përfshin gjithashtu aftësi që lidhen me shkarkimin e llogaritjeve në GPU dhe ekzekutimin e shaderëve.

Karakteristikat kryesore të WebGPU:

  • Menaxhimi i veçantë i burimeve, puna përgatitore dhe transmetimi i komandave në GPU (në WebGL një objekt ishte përgjegjës për gjithçka menjëherë). Janë dhënë tre kontekste të veçanta: GPUPajisja për krijimin e burimeve të tilla si teksturat dhe buferët; GPUCommandEncoder për kodimin e komandave individuale, duke përfshirë fazat e interpretimit dhe llogaritjes; GPUCommandBuffer do të vihet në radhë për ekzekutim në GPU. Rezultati mund të jepet në një zonë të lidhur me një ose më shumë elementë të kanavacës, ose të përpunohet pa dalje (për shembull, kur ekzekutohen detyrat llogaritëse). Ndarja e fazave e bën më të lehtë ndarjen e operacioneve të krijimit dhe përgatitjes së burimeve në mbajtës të ndryshëm që mund të funksionojnë në fije të ndryshme.
  • Një qasje e ndryshme ndaj gjendjeve të përpunimit. WebGPU ofron dy objekte - GPURenderPipeline dhe GPUComputePipeline, të cilat ju lejojnë të kombinoni gjendje të ndryshme të paracaktuara nga zhvilluesi, gjë që lejon shfletuesin të mos harxhojë burime për punë shtesë, siç është rikompilimi i shaderëve. Gjendjet e mbështetura përfshijnë: shader, faqosje të tamponit të kulmit dhe atributeve, paraqitje të grupeve ngjitëse, përzierje, thellësi dhe modele dhe formate të daljes pas paraqitjes.
  • Një model i detyrueshëm i ngjashëm me tiparet e grupimit të burimeve të Vulkan. Për të grupuar burimet së bashku, WebGPU ofron një objekt GPUBindGroup, i cili mund të shoqërohet me objekte të tjera të ngjashme për t'u përdorur në shader gjatë shkrimit të komandave. Krijimi i grupeve të tilla i lejon drejtuesit të kryejë paraprakisht veprimet e nevojshme përgatitore dhe i lejon shfletuesit të ndryshojë lidhjet e burimeve midis thirrjeve të tërheqjes shumë më shpejt. Paraqitja e lidhjeve të burimeve mund të paracaktohet duke përdorur objektin GPUBindGroupLayout.

Burimi: opennet.ru

Shto një koment