A W3C bemutatja a WebGPU szabvány tervezetét

A W3C kiadta a WebGPU és a WebGPU Shading Language (WGSL) specifikációinak első vázlatait, amelyek API-kat határoznak meg a GPU-műveletek, például a renderelés és a számítástechnika végrehajtásához, valamint egy árnyékoló nyelvet a GPU-n futó programok írására. elvileg hasonló a Vulkan, Metal és Direct3D 12 API-khoz.A specifikációkat egy munkacsoport készítette, amelyben a Mozilla, a Google, az Apple és a Microsoft mérnökei is részt vettek.

Elvileg a WebGPU ugyanúgy különbözik a WebGL-től, mint a Vulkan grafikus API az OpenGL-től, de nem egy konkrét grafikus API-n alapul, hanem egy univerzális réteg, amely ugyanazokat az alacsony szintű primitíveket használja, mint a Vulkan, 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 a GPU-hoz való továbbítása, 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 felett. Ez a megközelítés lehetővé teszi, hogy nagyobb teljesítményt érjen el a grafikus alkalmazások számára az általános költségek csökkentésével és a GPU-val végzett munka hatékonyságának növelésével.

A WebGPU lehetővé teszi olyan összetett 3D-projektek létrehozását a weben, amelyek nem működnek rosszabbul, mint az önálló programok, amelyek közvetlenül hozzáférnek a Vulkanhoz, a Metalhoz vagy a Direct3D-hez, de nincsenek meghatározott platformokhoz kötve. A WebGPU további lehetőségeket is biztosít a natív grafikus programok web-kompatibilis formába történő portolásához a WebAssembly-be történő fordítás révén. A 3D grafikán kívül a WebGPU a számítások GPU-ra való feltöltéséhez és a shaderek végrehajtásához kapcsolódó képességeket is tartalmaz.

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