Chrome će uključiti podršku za WebGPU

Tvrtka Google najavila je uključivanje podrške za grafički API WebGPU i jezik sjenčanja WGSL (WebGPU Shading Language) kao zadanu opciju u verziji Chrome 113, čije je puštanje planirano za 2. svibnja. WebGPU nudi sučelje slično Vulkanu, Metalu i Direct3D 12 za izvođenje operacija na strani GPU-a, poput renderiranja i računalnih procesa, te omogućava korištenje jezika sjenčanja za pisanje programa koji rade na strani GPU-a. Implementacija WebGPU će isprva biti dostupna samo u verzijama za ChromeOS, macOS i Windows. Podrška za WebGPU na Linuxu i Androidu bit će aktivirana kasnije.

Osim Chromea, eksperimentalna podrška WebGPU testira se od travnja 2020. u Firefoxu i od studenog 2021. u Safariju. Za uključivanje WebGPU u Firefoxu potrebno je u about:config postaviti oznake dom.webgpu.enabled i gfx.webgpu.force-enabled. O planovima za uključivanje WebGPU kao zadane opcije u Firefoxu i Safariju još nema informacija. Razvijene implementacije WebGPU za Firefox i Chrome dostupne su u obliku zasebnih biblioteka — Dawn (C++) i wgpu (Rust), koje se mogu koristiti za integraciju podrške WebGPU u vlastite aplikacije. Također se radi na dodavanju podrške za WebGPU u popularne JavaScript biblioteke, koje su prvotno koristile WebGL. Na primjer, puna podrška za WebGPU već je najavljena u Babylon.js, dok je djelomična podrška u Three.js, PlayCanvas i TensorFlow.js.

Konceptualno, WebGPU se razlikuje od WebGL otprilike onako kako se grafički API Vulkan razlikuje od OpenGL, ali pri tome WebGPU ne oslanja se na određeni grafički API, već predstavlja univerzalni sloj koji koristi iste niskorazinske primitive prisutne u Vulkanu, Metalu i Direct3D. WebGPU aplikacijama na JavaScriptu pruža sredstva za niskorazinsku kontrolu organizacije, obrade i slanja komandi GPU-u, upravljanja povezanim resursima, memorijom, baferima, objektima tekstura i kompajliranim grafičkim sjenama. Takav pristup omogućuje povećanu učinkovitost grafičkih aplikacija smanjenjem režijskih troškova i poboljšanjem efikasnosti rada s GPU-om.

WebGPU omogućuje stvaranje složenih 3D projekata za web koji rade jednako dobro kao i samostalni programi koji direktno koriste Vulkan, Metal ili Direct3D, ali nisu vezani uz određene platforme. WebGPU također nudi dodatne mogućnosti prilikom portiranja izvornih grafičkih programa u oblik koji može raditi na temelju web tehnologija, zahvaljujući kompilaciji u WebAssembly. Osim 3D grafike, WebGPU obuhvaća i mogućnosti povezane s izvođenjem izračuna na GPU-u i izvršavanjem šejdera.

Ključne značajke WebGPU:

  • Odvojeno upravljanje resursima, pripremnim radovima i slanjem komandi u GPU (u WebGL jedan objekt je odgovarao za sve odjednom). Pruža se tri odvojena konteksta: GPUDevice za kreiranje resursa poput tekstura i bafera; GPUCommandEncoder za kodiranje pojedinačnih komandi, uključujući faze renderiranja i izračuna; GPUCommandBuffer za postavljanje u red za izvršavanje na GPU. Rezultat se može prikazati u području povezanom s jednim ili više elemenata canvas-a, ili se može obraditi bez izlaženja (na primjer, pri pokretanju računskih zadataka). Razdvajanje faza pojednostavljuje raspodjelu stvaranja resursa i pripremnih operacija u različite obrtnike koji se mogu izvoditi u različitim nitima.
  • Drugi pristup pri obradi stanja. U WebGPU se nude dva objekta — GPURenderPipeline i GPUComputePipeline, koji omogućavaju kombiniranje različitih stanja koju je unaprijed definirao programer, što omogućuje pregledniku da ne troši resurse na izvođenje dodatnog rada, poput rekompilacije sjenila. Među podržanim stanjima su: sjenila, rasporedi bafera vrhova i atributa, rasporedi povezanih grupa, miješanje, dubina i uzorci, formati izlaza nakon renderiranja.
  • Model vezivanja, koji u mnogo čemu podsjeća na prisutne u Vulkan sredstvima grupiranja resursa. Za objedinjavanje resursa u grupe, WebGPU pruža objekt GPUBindGroup, koji se prilikom zapisivanja komandi može povezati s drugim sličnim objektima za korištenje u sjenilima. Kreiranje ovakvih grupa omogućava drajveru da unaprijed izvrši potrebne pripremne radnje, a pregledniku znatno brže mijenjati veze resursa između poziva renderiranja. Raspored veza resursa može se unaprijed definirati pomoću objekta GPUBindGroupLayout.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster