W3C zbulon draft standardin WebGPU

W3C ka lëshuar draftet e para të specifikimeve të WebGPU dhe WebGPU Shading Language (WGSL), të cilat përcaktojnë API-të për kryerjen e operacioneve të GPU-së si renderimi dhe llogaritja, si dhe një gjuhë shader për shkrimin e programeve që funksionojnë në GPU. Konceptualisht të ngjashme me API-të Vulkan, Metal dhe Direct3D 12. Specifikimet u përgatitën nga një grup pune që përfshinte inxhinierë nga Mozilla, Google, Apple dhe Microsoft.

Konceptualisht, WebGPU ndryshon nga WebGL në të njëjtën mënyrë që API grafike Vulkan ndryshon nga OpenGL, por 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 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ë 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