W3C otkriva nacrt WebGPU standarda

W3C je objavio prve nacrte specifikacija WebGPU i WebGPU Shading Language (WGSL), koji definiraju API-je za izvođenje GPU operacija kao što su renderiranje i računanje, kao i shader jezik za pisanje programa koji se izvode na GPU. konceptualno sličan API-jima Vulkan, Metal i Direct3D 12. Specifikacije je pripremila radna skupina koja je uključivala inženjere 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 se ne temelji na specifičnom grafičkom API-ju, već je univerzalni sloj koji koristi iste primitive niske razine koje se nalaze u Vulkanu, Metalu i Direct3D. WebGPU pruža JavaScript aplikacijama nisku razinu kontrole nad organizacijom, obradom i prijenosom naredbi GPU-u, upravljanje povezanim resursima, memorijom, međuspremnicima, teksturnim objektima i sastavljenim grafičkim shaderima. Ovaj vam pristup omogućuje postizanje većih performansi za grafičke aplikacije smanjenjem režijskih troškova i povećanjem učinkovitosti rada s GPU-om.

WebGPU omogućuje stvaranje složenih 3D projekata za web koji rade ništa lošije od samostalnih programa koji izravno pristupaju Vulkanu, Metalu ili Direct3D, ali nisu vezani za određene platforme. WebGPU također pruža dodatne mogućnosti za prijenos izvornih grafičkih programa u web-omogućeni obrazac putem kompilacije u WebAssembly. Uz 3D grafiku, WebGPU također uključuje mogućnosti koje se odnose na prijenos kalkulacija na GPU i izvršavanje shadera.

Ključne značajke WebGPU-a:

  • Odvojeno upravljanje resursima, pripremni rad i prijenos naredbi na GPU (u WebGL-u jedan je objekt bio odgovoran za sve odjednom). Dostupna su tri odvojena konteksta: GPUDevice za stvaranje resursa kao što su teksture i međuspremnici; GPUCommandEncoder za kodiranje pojedinačnih naredbi, uključujući faze renderiranja i izračuna; GPUCommandBuffer koji će biti stavljen u red čekanja za izvršenje na GPU-u. Rezultat se može prikazati u području koje je povezano s jednim ili više elemenata platna ili se može obraditi bez izlaza (na primjer, kada se izvode računalni zadaci). Odvajanje faza olakšava razdvajanje operacija stvaranja i pripreme resursa u različite rukovatelje koji se mogu izvoditi na različitim nitima.
  • Drugačiji pristup obradi stanja. WebGPU nudi dva objekta - GPURenderPipeline i GPUComputePipeline, koji vam omogućuju kombiniranje različitih stanja unaprijed definiranih od strane programera, što omogućuje pregledniku da ne troši resurse na dodatni rad, kao što je ponovno kompajliranje shadera. Podržana stanja uključuju: shadere, međuspremnik vrhova i rasporede atributa, rasporede ljepljivih grupa, miješanje, dubinu i uzorke te izlazne formate nakon renderiranja.
  • Model vezivanja sličan Vulkanovim značajkama grupiranja resursa. Za grupiranje resursa zajedno, WebGPU pruža objekt GPUBindGroup, koji se može povezati s drugim sličnim objektima za korištenje u shaderima tijekom pisanja naredbi. Stvaranje takvih grupa omogućuje vozaču da izvrši potrebne pripremne radnje unaprijed, a pregledniku omogućuje mnogo bržu promjenu veza resursa između poziva crtanja. Raspored povezivanja resursa može se unaprijed definirati pomoću objekta GPUBindGroupLayout.

Izvor: opennet.ru

Dodajte komentar