Megjelent információk a WebGPU súgó specifikációjának integrálásáról a Firefoxban éjszakánként épít, ami most programozási felületet biztosít a 3D grafika feldolgozásához és számítás a GPU oldalon, fogalmilag hasonló a Vulkan API-hoz, a metalhoz és a Direct3D 12-hez. A specifikációt a Mozilla, a Google, az Apple, a Microsoft és a közösség képviselői fejlesztik a W3C szervezet által létrehozott munkacsoportban.
A WebGPU legfontosabb célja egy biztonságos, kényelmes, hordozható és nagy teljesítményű szoftveres felület létrehozása a webes platformon való használatra 3D grafikai technológiával és a modern rendszergrafikus API-k - például a Direct3D 12 Windows rendszeren, a Metal MacOS rendszeren és a Vulkan Linux rendszeren - nyújtotta képességekkel.
Fogalmilag A WebGPU ugyanúgy különbözik a WebGL-től, mint a Vulkan az OpenGL-től és nem egy meghatározott grafikus API-n alapul, inkább univerzális réteg, általában ugyanazokat az alacsony szintű primitíveket használja, amelyek a Vulkan, a Metal és a Direct3D-ben elérhetők.
A Firefoxban a "dom.webgpu.enabled" beállítás biztosított a WebGPU engedélyezéséhez körülbelül: config. A CanvasContext megjelenítésén túl megköveteli a WebRender kompozíciós rendszer ("gfx.webrender.all" a kb .: config fájlban) beépítését is.
A WebGPU implementáció a Rust-ban írt wgpu projektkódon alapul, és a DX12, Vulkan és Metal API-k tetején működhet Linuxon, Androidon, Windowson és macOS-on (a DX11 és az OpenGL ES 3.0 támogatása is fejlesztés alatt áll).
A WebGPU-ról
WebGPU a JavaScript alkalmazásokat az alacsonyabb szintű vezérléshez szükséges eszközökkel látja el a szervezetről, az parancsok feldolgozása és továbbítása a GPU-ra, a kapcsolódó erőforrások, memória, pufferek, textúra objektumok és összeállított grafikus árnyékolók kezelése. Ez a megközelítés meg fogja valósítani nagyobb teljesítményű grafikus alkalmazásokat tesz lehetővé az általános költségek csökkentésével és a GPU-val való együttműködés hatékonyságának növelésével.
WebGPU lehetővé teszi komplett 3D projektek készítését az internet számára amelyek nem teljesítenek rosszabban, mint az önálló programok, amelyek közvetlenül kommunikálnak a Vulkan, a Metal vagy a Direct3D-vel, de nincsenek bizonyos platformokhoz kötve.
is további képességeket nyújt natív grafikai programok portolásával olyan formára, amely webalapú technológiák alapján működhet a WebAssembly technológia használatával.
A 3D grafika mellett A WebGPU kitér a GPU melletti számítástechnika megszüntetésével kapcsolatos lehetőségekre is és az árnyékoló fejlődés támogatása. Az árnyékolók létrehozhatók a WebGPU shader nyelvén, vagy megadhatók a SPIR-V köztes formátumban, majd lefordíthatók az aktuális illesztőprogramok által támogatott shader nyelvekre.
WebGPU külön erőforrás-menedzsmentet, előkészítő munkát és parancsátvitelt használ a GPU-hoz (a WebGL-ben egy objektum volt felelős mindenért egyszerre). Három különálló kontextust biztosítunk: GPUDeszköz erőforrások, például textúrák és pufferek létrehozására; GPUCommandEncoder az egyes parancsok kódolásához, beleértve a renderelési és számítási szakaszokat; GPUCommandBuffer a várakozási sorba a végrehajtáshoz a GPU-n.
A WebGPU és a WebGL közötti második különbség az állapotok kezelésének eltérő megközelítése. Két objektum javasolt a WebGPU-ban: GPURenderPipeline és GPUComputePipeline, amelyek lehetővé teszik a fejlesztő által előre definiált több állapot kombinálását, amely lehetővé teszi a böngésző számára, hogy ne pazarolja az erőforrásokat további munkára, például az árnyékolók újrafordítására. A támogatott állapotok: árnyékolók, csúcspufferek és attribútum elrendezések, csatolt csoportos elrendezések, keverés, mélység és minták, kimeneti formátumok a megjelenítés után.
A WebGPU harmadik jellemzője a kötelező modell, ami sok tekintetben hasonlít a Vulkanban jelen lévő erőforrások egyesítésének eszközeire. Az erőforrások csoportokba csoportosításához a WebGPU biztosít egy GPUBindGroup objektumot, amely a parancsok beírásával más hasonló objektumokkal társítható árnyékolókhoz.
Az ilyen csoportok létrehozása lehetővé teszi a járművezető számára, hogy előre elvégezze a szükséges előkészítő műveleteket, a böngésző pedig lehetővé teszi, hogy az erőforrás-kapcsolatokat sokkal gyorsabban kapcsolja át a hívások között.
forrás: https://hacks.mozilla.org/