A Firefox és a Safari WebGPU-támogatást kap

A Mozilla úgy döntött, hogy engedélyezi a WebGPU API és a WGSL (WebGPU Shading Language) támogatását a Firefoxban. A platformhoz Windows A WebGPU támogatás alapértelmezés szerint engedélyezve lesz a Firefox 141-es verziójában, amely várhatóan július 22-én kerül bevezetésre. A WebGPU támogatás ezután a következő hónapokban várhatóan engedélyezve lesz a buildekben: Linux и macOS, és egy idő után a platform verziójában AndroidA WebGPU manuális engedélyezéséhez használhatja a „dom.webgpu.enabled” és a „gfx.webrender.all” paramétereket az about:config oldalon.

A Chrome-ban a WebGPU támogatás alapértelmezés szerint elérhető volt a 113 májusában kiadott 2023-as verzióban. A Safariban a WebGPU támogatást a tervek szerint idén ősszel alapértelmezés szerint engedélyezik (a kísérleti támogatás 2021 novembere óta érhető el). A Firefoxban a kísérleti WebGPU támogatás 2020 óta van jelen, de alapértelmezés szerint csak a Firefox éjszakai verzióiban volt engedélyezve. A Firefox WebGPU implementációja a WGPU projektkódon alapul, amelyet Rust nyelven írtak, és képes a Direct3D 12, Vulkan, OpenGL és Metal grafikus API-kon futni.

A WebGPU hasonló API-t biztosít, mint a Vulkan, a Metal és a Direct3D 12 a GPU oldalon végrehajtott műveletekhez. A 3D grafika mellett a WebGPU a számítások GPU oldalra történő áthárításával és shaderek végrehajtásával kapcsolatos képességeket is lefedi. Elméletileg a WebGPU nagyjából ugyanúgy különbözik a régi WebGL specifikációtól, mint ahogy a Vulkan grafikus API eltér az OpenGL-től. Ugyanakkor a WebGPU nem egy adott grafikus API-n alapul, hanem egy univerzális réteg, amely ugyanazokat az alacsony szintű primitíveket használja, mint a Vulkan, a Metal és a Direct3D.

A WebGPU lehetővé teszi a JavaScript alkalmazások számára a parancsok GPU-nak történő szervezésének, feldolgozásának és továbbításának vezérlését, valamint a kapcsolódó erőforrások, memória, pufferek, textúraobjektumok és fordított grafikus shaderek kezelését. Ez a megközelítés a grafikus alkalmazások nagyobb teljesítményét teszi lehetővé azáltal, hogy csökkenti a többletterhelést és növeli a GPU-val való munka hatékonyságát.

A WebGPU segítségével platformfüggetlen, összetett 3D projekteket hozhat létre, amelyek ugyanolyan jól teljesítenek, mint önálló programok, amelyek közvetlenül használják a Vulkant, a Metalt vagy a Direct3D-t. A WebGPU további képességeket is biztosít a natív grafikus programok böngészőkben futtatható formátumba portolásához a WebAssembly-be fordításnak köszönhetően.

A WebGPU főbb jellemzői és különbségek a WebGL-től:

  • Az erőforrások külön kezelése, az előkészítő munka és a parancsok továbbítása a GPU-ra (WebGL-ben egyszerre egy objektum volt a felelős mindenért). Három különálló környezet áll rendelkezésre: GPudevice erőforrások, például textúrák és pufferek létrehozásához; GPUCommandEncoder egyedi parancsok kódolásához, beleértve a megjelenítési és számítási szakaszokat is; GPUCommandBuffer a GPU futási sorába való átjutáshoz. Az eredmény megjeleníthető egy vagy több vászonelemhez társított területen, vagy kimenet nélkül (például számítási feladatok futtatásakor). A szakaszok szétválasztása megkönnyíti az erőforrás-létrehozási és -kiépítési műveletek elkülönítését különböző kezelőkre, amelyek különböző szálakon futhatnak.
  • Az állapotok kezelésének más megközelítése. A WebGPU két objektumot biztosít – a GPURenderPipeline-t és a GPUComputePipeline-t, amelyek lehetővé teszik a fejlesztő által előre meghatározott különböző állapotok kombinálását, ami lehetővé teszi, hogy a böngésző ne pazarolja az erőforrásokat további munkákra, például a shaderek újrafordítására. A támogatott állapotok a következők: árnyékolók, csúcspuffer- és attribútum-elrendezések, ragadós csoportelrendezések, keverés, mélység és minták, megjelenítés utáni kimeneti formátumok.
  • Kötési modell, hasonlóan a Vulkan erőforrás-csoportosítási eszközeihez. Az erőforrások csoportokba csoportosításához a WebGPU egy GPUBindGroup objektumot biztosít, amely a parancsok írásakor társítható más hasonló objektumokhoz a shaderekben való használatra. Az ilyen csoportok létrehozása lehetővé teszi az illesztőprogram számára, hogy előzetesen elvégezze a szükséges előkészítő műveleteket, és lehetővé teszi a böngésző számára, hogy sokkal gyorsabban módosítsa az erőforrás-összerendeléseket a rajzolási hívások között. Az erőforrás-összerendelések elrendezése előre megadható a GPUBindGroupLayout objektum segítségével.

Forrás: opennet.ru

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster