A Firefox éjszakai buildjei mostantól tartalmazzák a WebGPU támogatást

В éjszaka Firefox épít megjelent specifikáció támogatás WebGPU, amely az API-hoz elvileg hasonló programozási felületet biztosít a 3D grafikus feldolgozáshoz és a GPU-oldali számítástechnikához Vulkán, Fém и Direct3D 12. A specifikációt a Mozilla, a Google, az Apple, a Microsoft és a közösség tagjai fejlesztik munkacsoport, amelyet a W3C szervezet hozta létre.

A WebGPU fő célja, hogy biztonságos, felhasználóbarát, hordozható és nagy teljesítményű programozói felületet biztosítson a webes platform számára, hogy kihasználja a modern rendszergrafikus API-k által biztosított 3D-s grafikus technológiákat és képességeket, mint például a Direct3D 12 Windowson, Metalon. macOS-en, a Vulkan pedig Linuxon. Koncepcionálisan a WebGPU nagyjából ugyanúgy különbözik a WebGL-től, mint a Vulkan az OpenGL-től, ugyanakkor nem egy konkrét grafikus API-n alapul, hanem egy univerzális réteg, amely általában ugyanazokat az alacsony szintű primitíveket használja, mint a Vulkanban. Metal és Direct3D.

A WebGPU alacsonyabb szintű vezérlést biztosít a JavaScript-alkalmazások számára a parancsok szervezése, feldolgozása és a GPU-nak történő továbbítása, a kapcsolódó erőforrások, memória, pufferek, textúra objektumok és 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 teljes értékű komplex 3D-projektek létrehozását a weben, amelyek nem működnek rosszabbul, mint a Vulkan, Metal vagy Direct3D közvetlenül elérő, de nem meghatározott platformokhoz kötődő önálló programok. A WebGPU a WebAssembly technológia használatával további lehetőségeket is biztosít a natív grafikus programok web-kompatibilis formába történő portolásakor. A 3D grafikán kívül a WebGPU a számítások GPU-ra való feltöltésével és a shader-fejlesztés támogatásával kapcsolatos képességeket is lefedi. Árnyékolók tud létre kell hozni a WebGPU Shading Language-ben vagy megadni a köztes SPIR-V formátumban, majd le kell fordítani a jelenlegi illesztőprogramok által támogatott shader nyelvekre.

A WebGPU külön kezeli az erőforrásokat, az előkészítő munkát és a parancsok továbbítását a GPU-nak (a WebGL-ben egy objektum volt egyszerre felelős mindenért). Három különálló kontextus á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; GPUCommandBuffer, amelyet sorba kell helyezni a GPU-n történő végrehajtáshoz. Az eredmény megjeleníthető egy vagy több vászonelemhez társított területen, vagy feldolgozható 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 -előkészítési műveletek elkülönítését különböző kezelőkre, amelyek különböző szálakon futhatnak.

A második különbség a WebGPU és a WebGL között az állapotok kezelésének eltérő megközelítése. A WebGPU két objektumot kínál – 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 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, ragadós csoportelrendezések, keverés, mélység és minták, valamint a megjelenítés utáni kimeneti formátumok.

A WebGPU harmadik funkcióját nagyrészt kötési modellnek nevezik
a Vulkanban jelenlévő erőforrás-csoportosítási eszközökre emlékeztet.
Az erőforrások csoportosításához a WebGPU egy GPUBindGroup objektumot biztosít, amely társítható más hasonló objektumokhoz, és a parancsok írása közben használható árnyékolókban. 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.

A Firefox éjszakai buildjei mostantól tartalmazzák a WebGPU támogatást

Firefoxban a „dom.webgpu.enabled” beállítás az about:config fájlban található a WebGPU engedélyezéséhez. A CanvasContext rendereléséhez a kompozíció engedélyezése is szükséges WebRender ("gfx.webrender.all" az about:config-ban), Rust nyelven íródott, és az oldaltartalom-megjelenítési műveletek kiszervezése a GPU-ra. A WebGPU megvalósítás a projektkódon alapul
wgpu, Rust nyelven íródott, és képes a DX12, Vulkan és Metal API-k tetején futni Linuxon, Androidon, Windowson és macOS-en (a DX11 és az OpenGL ES 3.0 támogatása is fejlesztés alatt áll). Ezzel párhuzamosan a Google egy másik implementációt is fejleszt, amely a következőben érhető el Kanári ág A Chromium és a „chrome://flags/#enable-unsafe-webgpu” jelzővel engedélyezve van, de egyelőre csak macOS és Windows rendszeren működik.

Forrás: opennet.ru

Hozzászólás