Pár napja A Google bemutatta egy bejelentetten keresztül a WebGPU grafikus API alapértelmezett támogatása és WebGPU árnyékolási nyelv (WGSL) Chrome 113 ágban, amely a tervek szerint május 2-án jelenik meg.
Azok számára, akik nincsenek tisztában a WebGPU-val, ezt tudniuk kell a Vulkan, Metal és a Direct3D 12-höz hasonló API-t biztosít GPU-oldali műveletek, például renderelés és számítás végrehajtásához, valamint lehetővé teszi a shader nyelv használatát a GPU-oldali programok írásához.
A WebGPU-ról
Fogalmilag A WebGPU 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. WebGPU JavaScript-alkalmazásokat biztosít alacsony szintű szabályozással a szervezet felett, parancsok feldolgozása és továbbítása a GPU-ra, a kapcsolódó erőforrások, memória, pufferek, textúra objektumok és 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 rezsicsökkentés és a GPU hatékonyságának növelése révén.
WebGPU lehetővé teszi komplex 3D-s projektek készítését az internet számára amelyek éppúgy működnek, mint a Vulkan, Metal vagy Direct3D közvetlenül használó önálló programok, de nincsenek meghatározott platformokhoz kötve. A WebGPU további lehetőségeket is biztosít a natív grafikus programok portolásához web-képes űrlapra a WebAssemblyben történő fordítással. A WebGPU a 3D-s grafika mellett a számítások GPU-oldalra történő átrakásával és a shaderek futtatásával kapcsolatos lehetőségeket is lefedi.
A WebGPU főbb jellemzői közül a következőket emelhetjük ki:
- Az erőforrások elkülönített kezelése, előkészítő munka és parancsok továbbítása a GPU-ra (a WebGL-ben egy objektum volt egyszerre 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 feldolgozási és számítási szakaszokat; GPUCommandBuffer, hogy átadja a GPU végrehajtási sorába.
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). Az állomásozás megkönnyíti az erőforrás-létrehozási és -kiépítési műveletek különböző vezérlőkre történő szétválasztását, amelyek különböző szálakon futhatnak. - Az állapotkezelés 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, lehetővé téve a böngésző számára, hogy ne pazarolja az erőforrásokat további munkára, 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, rögzített 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-gyűjtő eszközeihez. Az erőforrások csoportokba csoportosításához a WebGPU egy GPUBindGroup objektumot biztosít, amely más hasonló objektumokhoz köthető, és a parancsrögzítés során a shaderekben használható.
Az ilyen csoportok létrehozása lehetővé teszi a vezérlő számára, hogy előre 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 váltson erőforrás-összerendeléseket a rajzolási hívások között. Az erőforrás-összerendelések elrendezése előre meghatározható a GPUBindGroupLayout objektum segítségével.
A Chrome mellett A kísérleti WebGPU támogatást 2020 áprilisa óta tesztelik a Firefoxban és 2021 novemberétől a Safariban. A WebGPU Firefoxban való engedélyezéséhez be kell állítania 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 a Chrome-hoz fejlesztett WebGPU-megvalósítások különálló könyvtárakként érhetők el: Dawn (C++) és wgpu (Rust), amelyek segítségével integrálhatja a WebGPU-támogatást az alkalmazásaiba.
Szintén érdemes megjegyezni, hogy folyamatban van a WebGPU támogatás hozzáadásával a népszerű JavaScript-könyvtárokhoz, natív módon, WebGL használatával. Például a teljes WebGPU-támogatás már deklarált a Babylon.js-ban, és részleges a Three.js-ben, a PlayCanvas-ban és a TensorFlow.js-ben.
A A WebGPU kezdetben csak a ChromeOS, macOS és Windows buildeken lesz engedélyezve, míg a Linux és az Android esetében a WebGPU támogatás egy későbbi időpontban aktiválódik.
Végül, ha többet szeretne megtudni róla, akkor tanulmányozza a részleteket A következő linken.