A WebGPU-támogatás engedélyezve lesz a Chrome-ban

A Google bejelentette a WebGPU grafikus API és a WebGPU Shading Language (WGSL) alapértelmezett támogatását a Chrome 113 ágban, amely a tervek szerint május 2-án jelenik meg. A WebGPU a Vulkanhoz, a Metalhoz és a Direct3D 12-höz hasonló API-t biztosít a GPU-oldali műveletek, például a renderelés és a számítás végrehajtásához, és lehetővé teszi a shader nyelv használatát a GPU-oldali programok írásához. A WebGPU megvalósítás kezdetben csak a ChromeOS, macOS és Windows összeállításokban lesz engedélyezve. Linux és Android esetén a WebGPU támogatás egy későbbi időpontban aktiválódik.

A Chrome mellett a kísérleti WebGPU támogatást 2020 áprilisa óta tesztelik a Firefoxban, 2021 novembere óta pedig a Safariban. A WebGPU Firefoxban való engedélyezéséhez állítsa be a dom.webgpu.enabled és a gfx.webgpu.force-enabled jelzőket az about:config fájlban. Még nem tervezik a WebGPU alapértelmezés szerinti engedélyezését a Firefoxban és a Safariban. A Firefoxhoz és Chrome-hoz fejlesztett WebGPU implementációk külön könyvtárak formájában érhetők el – Dawn (C++) és wgpu (Rust), amelyek segítségével integrálhatja a WebGPU támogatást az alkalmazásaiba. Dolgoznak azon is, hogy WebGPU-támogatással adják hozzá a népszerű JavaScript-könyvtárakat natív módon, WebGL használatával. Például a WebGPU teljes támogatását már bejelentették a Babylon.js-ban, és részleges támogatást a Three.js-ben, a PlayCanvas-ban és a TensorFlow.js-ben.

Koncepcionálisan a WebGPU nagyjából ugyanúgy különbözik a WebGL-től, mint a Vulkan grafikus API az OpenGL-től, de a WebGPU nem egy konkrét grafikus API-n alapul, hanem egy általános célú réteg, amely ugyanazokat az alacsony szintű primitíveket használja, mint a Vulkanban, Metal és Direct3D. A WebGPU alacsony szintű vezérlést biztosít a JavaScript-alkalmazások számára a parancsok szervezése, feldolgozása és továbbítása felett a GPU-nak, a kapcsolódó erőforrások, a memória, a pufferek, a textúra objektumok és a lefordított grafikus árnyékolók kezelése. Ez a megközelítés lehetővé teszi nagyobb teljesítményű grafikus alkalmazások elérését a többletterhelés csökkentésével és a GPU hatékonyságának növelésével.

A WebGPU lehetővé teszi komplex 3D-s projektek létrehozását a weben, amelyek ugyanúgy működnek, mint olyan önálló programok, amelyek közvetlenül használják a Vulkan-t, a Metal-t vagy a Direct3D-t, de nincsenek meghatározott platformokhoz kötve. A WebGPU további lehetőségeket is biztosít a natív grafikus programok web-kompatibilis űrlapra történő portolására a WebAssembly-re fordítással. A WebGPU a 3D-s grafika mellett lefedi a számítások GPU oldalra történő átrakásával és a shaderek végrehajtásával kapcsolatos lehetőségeket is.

A WebGPU főbb jellemzői:

  • 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

Hozzászólás