Podpora za WebGPU bo omogočena v Chromu

Google je napovedal vključitev privzete podpore za grafični API WebGPU in WGSL (WebGPU Shading Language) v Chrome 113, ki naj bi izšel 2. maja. WebGPU ponuja programski vmesnik, podoben Vulkanu, Metalu in Direct3D 12, za izvajanje operacij na strani GPE, kot sta upodabljanje in računalništvo, in omogoča tudi uporabo jezika shader za pisanje programov, ki se izvajajo na strani GPE. Izvedba WebGPU bo sprva omogočena samo v sistemih ChromeOS, macOS in Windows. Za Linux in Android bo podpora za WebGPU aktivirana pozneje.

Poleg Chroma je bila poskusna podpora za WebGPU preizkušena od aprila 2020 v Firefoxu in od novembra 2021 v Safariju. Če želite omogočiti WebGPU v Firefoxu, morate nastaviti zastavici dom.webgpu.enabled in gfx.webgpu.force-enabled v about:config. Še ni načrtov za privzeto omogočanje WebGPU v Firefoxu in Safariju. Implementacije WebGPU, razvite za Firefox in Chrome, so na voljo v obliki ločenih knjižnic - Dawn (C++) in wgpu (Rust), ki ju lahko uporabite za integracijo podpore WebGPU v svoje aplikacije. V teku je tudi delo za dodajanje podpore WebGPU priljubljenim knjižnicam JavaScript, ki izvorno uporabljajo WebGL. Na primer, polna podpora za WebGPU je bila že napovedana v Babylon.js, delna podpora pa v Three.js, PlayCanvas in TensorFlow.js.

Konceptualno se WebGPU razlikuje od WebGL na skoraj enak način, kot se grafični API Vulkan razlikuje od OpenGL, vendar WebGPU 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, vmesnih pomnilnikov, objektov teksture 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 delujejo nič slabše od samostojnih programov, ki neposredno uporabljajo Vulkan, Metal 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