W3C otkriva nacrt WebGPU standarda

W3C je objavio prve nacrte specifikacija WebGPU i WebGPU Shading Language (WGSL), koje definiraju API-je za izvođenje GPU operacija kao što su renderiranje i računanje, kao i jezik shadera za pisanje programa koji se pokreću na GPU-u. konceptualno sličan API-jima Vulkan, Metal i Direct3D 12. Specifikacije je pripremila radna grupa u kojoj su bili inženjeri iz Mozille, Googlea, Applea i Microsofta.

Konceptualno, WebGPU se razlikuje od WebGL-a na isti način na koji se Vulkan grafički API razlikuje od OpenGL-a, ali nije zasnovan na specifičnom grafičkom API-ju, već je univerzalni sloj koji koristi iste primitive niskog nivoa koji se nalaze u Vulkanu, Metalu i Direct3D. WebGPU pruža JavaScript aplikacijama kontrolu niskog nivoa nad organizacijom, obradom i prijenosom komandi na GPU, upravljanjem pridruženim resursima, memorijom, baferima, objektima teksture i kompajliranim grafičkim shaderima. Ovaj pristup vam omogućava da postignete veće performanse za grafičke aplikacije smanjenjem režijskih troškova i povećanjem efikasnosti rada sa GPU-om.

WebGPU omogućava kreiranje složenih 3D projekata za Web koji ne rade ništa lošije od samostalnih programa koji direktno pristupaju Vulkanu, Metalu ili Direct3D-u, ali nisu vezani za određene platforme. WebGPU također pruža dodatne mogućnosti za prijenos izvornih grafičkih programa u web-omogućen oblik putem kompilacije u WebAssembly. Pored 3D grafike, WebGPU takođe uključuje mogućnosti koje se odnose na prenošenje kalkulacija na GPU i izvršavanje shadera.

Ključne karakteristike WebGPU-a:

  • Odvojeno upravljanje resursima, pripremni rad i prenos komandi GPU-u (u WebGL-u je jedan objekat bio odgovoran za sve odjednom). Obezbeđena su tri odvojena konteksta: GPDevice za kreiranje resursa kao što su teksture i baferi; GPUCommandEncoder za kodiranje pojedinačnih komandi, uključujući faze prikazivanja i izračunavanja; GPUCommandBuffer za prolazak u red za pokretanje GPU-a. Rezultat se može prikazati u području povezanom s jednim ili više elemenata platna, ili obraditi bez izlaza (na primjer, kada se izvršavaju računski zadaci). Razdvajanje faza olakšava odvajanje operacija kreiranja resursa i obezbjeđivanja u različite rukovaoce koji se mogu izvoditi na različitim nitima.
  • Drugačiji pristup rukovanju stanjima. WebGPU obezbeđuje dva objekta - GPURenderPipeline i GPUComputePipeline, koji vam omogućavaju da kombinujete različita stanja unapred definisana od strane programera, što omogućava pretraživaču da ne troši resurse na dodatni rad, kao što je ponovno kompajliranje shadera. Podržana stanja uključuju: shadere, međumemoriju vrhova i rasporede atributa, rasporede lepljivih grupa, mešanje, dubinu i obrasce, izlazne formate nakon renderovanja.
  • Model povezivanja, sličan Vulkanovim alatima za grupisanje resursa. Za grupisanje resursa u grupe, WebGPU obezbjeđuje GPUBindGroup objekat koji može biti vezan za druge slične objekte za upotrebu u shaderima tokom snimanja komande. Kreiranje takvih grupa omogućava drajveru da izvrši neophodne pripremne radnje unapred, i omogućava pretraživaču da promeni vezivanja resursa između poziva za crtanje mnogo brže. Izgled povezivanja resursa može se unaprijed definirati korištenjem GPUBindGroupLayout objekta.

izvor: opennet.ru

Dodajte komentar