W3C razkriva osnutek standarda WebGPU

W3C je izdal prve osnutke specifikacij WebGPU in WebGPU Shading Language (WGSL), ki definirajo API-je za izvajanje operacij GPE, kot sta upodabljanje in računalništvo, kot tudi jezik senčil za pisanje programov, ki se izvajajo na GPE. konceptualno podoben API-jem Vulkan, Metal in Direct3D 12. Specifikacije je pripravila delovna skupina, ki je vključevala inženirje iz Mozille, Googla, Applea in Microsofta.

Konceptualno se WebGPU razlikuje od WebGL na skoraj enak način, kot se grafični API Vulkan razlikuje od OpenGL, vendar ne temelji na posebnem grafičnem API-ju, ampak je univerzalna plast, ki uporablja enake primitive nizke ravni kot v Vulkanu, Metalu in Direct3D. WebGPU omogoča aplikacijam JavaScript nadzor na nizki ravni nad organizacijo, obdelavo in prenosom ukazov v GPE, upravljanje povezanih virov, pomnilnika, medpomnilnikov, teksturnih objektov in sestavljenih grafičnih senčil. Ta pristop vam omogoča doseganje višje zmogljivosti za grafične aplikacije z zmanjšanjem režijskih stroškov in povečanjem učinkovitosti dela z GPE.

WebGPU omogoča ustvarjanje kompleksnih 3D projektov za splet, ki ne delujejo nič slabše od samostojnih programov, ki neposredno dostopajo do Vulkana, Metala ali Direct3D, vendar niso vezani na določene platforme. WebGPU ponuja tudi dodatne zmožnosti za prenos domačih grafičnih programov v spletno omogočeno obliko s prevajanjem v WebAssembly. Poleg 3D grafike WebGPU vključuje tudi zmožnosti, povezane z razbremenitvijo izračunov na GPE in izvajanjem senčil.

Ključne značilnosti WebGPU:

  • Ločeno upravljanje virov, pripravljalna dela in prenos ukazov v GPU (v WebGL je bil en objekt odgovoren za vse hkrati). Na voljo so trije ločeni konteksti: GPUDevice za ustvarjanje virov, kot so teksture in medpomnilniki; GPUCommandEncoder za kodiranje posameznih ukazov, vključno s stopnjami upodabljanja in izračuna; GPUCommandBuffer, ki bo postavljen v čakalno vrsto za izvajanje na GPE. Rezultat je mogoče upodobiti v območju, povezanem z enim ali več elementi platna, ali obdelati brez izhoda (na primer pri izvajanju računalniških nalog). Ločevanje stopenj olajša ločevanje operacij ustvarjanja in priprave virov v različne upravljalnike, ki se lahko izvajajo v različnih nitih.
  • Drugačen pristop k obdelavi stanj. WebGPU ponuja dva predmeta - GPURenderPipeline in GPUComputePipeline, ki omogočata kombiniranje različnih stanj, ki jih vnaprej določi razvijalec, kar omogoča brskalniku, da ne zapravlja sredstev za dodatno delo, kot je ponovno prevajanje senčil. Podprta stanja vključujejo: senčila, vmesni pomnilnik vozlišč in postavitve atributov, lepljive postavitve skupin, mešanje, globino in vzorce ter izhodne formate po upodabljanju.
  • Vezalni model, ki je zelo podoben Vulkanovim funkcijam združevanja virov. Za združevanje virov WebGPU ponuja objekt GPUBindGroup, ki ga je mogoče povezati z drugimi podobnimi objekti za uporabo v senčilih pri pisanju ukazov. Ustvarjanje takšnih skupin omogoča gonilniku, da vnaprej izvede potrebna pripravljalna dejanja, brskalniku pa omogoča veliko hitrejše spreminjanje vezav virov med klici risanja. Postavitev povezav virov je mogoče vnaprej določiti z uporabo predmeta GPUBindGroupLayout.

Vir: opennet.ru

Dodaj komentar