A W3C bemutatta a WebGPU szabvány tervezetét.

A W3C konzorcium bemutatta a WebGPU és a WebGPU Shading Language (WGSL) specifikációk első vázlatait, amelyek API-t határoznak meg GPU műveletek, például renderelés és számítások végrehajtására, valamint egy árnyékolási nyelvet a GPU oldalán futó programok írásához. Ez a koncepció hasonlít a Vulkan, Metal és Direct3D 12 API-hoz. A specifikációkat egy munkacsoport készítette, amelybe a Mozilla, a Google, az Apple és a Microsoft mérnökei tartoztak.

A WebGPU koncepcionálisan a WebGL-től körülbelül úgy különbözik, ahogyan a Vulkan grafikus API különbözik az OpenGL-től, de nem alapul konkrét grafikus API-n, hanem egy univerzális réteget képvisel, amely ugyanolyan alacsony szintű primitíveket használ, mint amik a Vulkan, Metal és Direct3D esetében elérhetők. A WebGPU lehetőséget biztosít a JavaScript-alapú alkalmazások számára, hogy alacsony szintű kontrollt gyakoroljanak a GPU parancsok szervezésére, feldolgozására és továbbítására, valamint a kapcsolódó erőforrások, memória, puffer, textúra objektumok és lefordított grafikus árnyékolók kezelésére. Ez a megközelítés lehetővé teszi a grafikai alkalmazások magasabb teljesítményének elérését a költségek csökkentésével és a GPU-ra gyakorolt hatékonyság növelésével.

A WebGPU lehetőséget ad arra, hogy a Web számára összetett 3D projekteket hozzunk létre, amelyek nem rosszabbul működnek, mint az elkülönített programok, amelyek közvetlenül a Vulkan, Metal vagy Direct3D használatával kommunikálnak, de nem kötődnek konkrét platformokhoz. A WebGPU további lehetőségeket biztosít natív grafikai programok webtechnológiákra történő portolásához a WebAssembly-be való fordítással. A 3D grafikán kívül a WebGPU olyan funkciókat is magában foglal, amelyek a számítások GPU-ra való kihelyezésével és az árnyékolók végrehajtásával kapcsolatosak.

A WebGPU kulcsfontosságú jellemzői:

  • Különálló erőforráskezelés, előkészítő munkálatok és utasítások átadása a GPU számára (a WebGL-ben egy objektum felelt meg mindenért). Három különálló kontextus áll rendelkezésre: GPUDevice a textúrák és pufferek létrehozásához; GPUCommandEncoder az egyes utasítások kódolásához, beleértve a renderelési és számítási szakaszokat; GPUCommandBuffer az utasítások GPU-ra való végrehajtásra való sorba állításához. Az eredményt egy vagy több canvas elemhez kapcsolódó területen lehet megjeleníteni, vagy kiadható output nélkül (például számítási feladatok végrehajtásakor). A szakaszok elkülönítése megkönnyíti az erőforrások létrehozásának és az előkészítő műveleteknek a különböző kezelőkbe való szétválasztását, amelyek különböző szálakban futtathatók.
  • Más megközelítés az állapotok kezelésében. A WebGPU két objektumot kínál - GPURenderPipeline és GPUComputePipeline, amelyek lehetővé teszik a különböző állapotok kombinálását, amelyeket a fejlesztő előre definiált, ezáltal lehetővé téve a böngésző számára, hogy ne pazarolja az erőforrásokat további munkálatokra, például shader-ek újbóli optimalizálására. A támogatott állapotok között megtalálhatók: shader-ek, vertex buffer és attribútum elrendezések, rögzített csoportelrendezések, keverés, mélység és sablonok, valamint renderelés utáni kimeneti formátumok.
  • A kötődési modell, amely nagymértékben hasonlít a Vulkan által biztosított erőforrás-csoportosító eszközökhöz. Az erőforrások csoportosításához a WebGPU a GPUBindGroup objektumot biztosít, amelyet parancsok írása során más hasonló objektumokkal lehet összekapcsolni a shaderek használatához. Az ilyen csoportok létrehozása lehetővé teszi a meghajtónak, hogy előre elvégezze a szükséges előkészítési lépéseket, míg a böngésző számára jelentősen gyorsabb erőforrás-kötések váltását teszi lehetővé a kirajzolás hívásai között. Az erőforrások elrendezése előre meghatározható a GPUBindGroupLayout objektum segítségével.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster