Ndërtimet e natës së Firefox-it tani përfshijnë mbështetje WebGPU

В natën Firefox-i ndërton u shfaq mbështetje për specifikimet WebGPU, e cila ofron një ndërfaqe programimi për përpunimin e grafikës 3D dhe llogaritjen nga ana e GPU-së, konceptualisht e ngjashme me API-në Vulkan, Metal и Direkt3D 12. Specifikimi po zhvillohet nga Mozilla, Google, Apple, Microsoft dhe anëtarët e komunitetit në grupi i punës, krijuar nga organizata W3C.

Qëllimi kryesor i WebGPU është të sigurojë një ndërfaqe programimi të sigurt, miqësore, portative dhe me performancë të lartë për platformën e Uebit për të shfrytëzuar teknologjitë dhe aftësitë e grafikës 3D të ofruara nga API-të moderne të grafikës së sistemit, si Direct3D 12 në Windows, Metal. në macOS dhe Vulkan në Linux. Konceptualisht, WebGPU ndryshon nga WebGL në të njëjtën mënyrë që Vulkan ndryshon nga OpenGL, dhe në të njëjtën kohë nuk bazohet në një API specifike grafike, por është një shtresë universale që përdor përgjithësisht të njëjtat primitivë të nivelit të ulët që gjenden në Vulkan. Metal dhe Direct3D.

WebGPU ofron aplikacione JavaScript me kontroll të nivelit më 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 të plota për Ueb që nuk funksionojnë më keq se programet e pavarura që aksesojnë drejtpërdrejt Vulkan, Metal ose Direct3D, por nuk janë të lidhura me platforma specifike. WebGPU ofron gjithashtu aftësi shtesë kur transferoni programe grafike vendase në një formë të aktivizuar në ueb përmes përdorimit të teknologjisë WebAssembly. Përveç grafikës 3D, WebGPU mbulon gjithashtu aftësitë që lidhen me shkarkimin e llogaritjeve në GPU dhe mbështetjen e zhvillimit të shader. Shaders mund të krijohet në gjuhën e hijeve WebGPU ose të specifikohet në formatin e ndërmjetëm SPIR-V dhe më pas të përkthehet në gjuhët shader të mbështetura nga drejtuesit aktualë.

WebGPU përdor menaxhimin e veçantë të burimeve, punën përgatitore dhe transmetimin e 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.

Dallimi i dytë midis WebGPU dhe WebGL është një qasje e ndryshme për trajtimin e gjendjeve. 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.

Tipari i tretë i WebGPU quhet kryesisht modeli i lidhjes
që të kujton mjetet e grupimit të burimeve të pranishme në 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.

Ndërtimet e natës së Firefox-it tani përfshijnë mbështetje WebGPU

Në Firefox, për të aktivizuar WebGPU në about:config, ekziston një cilësim "dom.webgpu.enabled". Përkthimi i CanvasContext kërkon gjithashtu që të aktivizohet kompozimi WebRender (“gfx.webrender.all” në about:config), i shkruar në Rust dhe kontraktimi i operacioneve të paraqitjes së përmbajtjes së faqes në GPU. Zbatimi i WebGPU bazohet në kodin e projektit
wgpu, i shkruar në Rust dhe i aftë për të ekzekutuar në krye të API-ve DX12, Vulkan dhe Metal në Linux, Android, Windows dhe macOS (mbështetja për DX11 dhe OpenGL ES 3.0 është gjithashtu në zhvillim). Paralelisht, Google po zhvillon një zbatim tjetër, i cili është i disponueshëm në Dega Kanarie Chromium dhe është aktivizuar duke përdorur flamurin “chrome://flags/#enable-unsafe-webgpu”, por deri më tani funksionon vetëm në macOS dhe Windows.

Burimi: opennet.ru

Shto një koment