Ve Chrome bude zahrnuta podpora WebGPU

Společnost Google oznámila, že do verze Chrome 113, která vyjde 2. května, bude automaticky zahrnuta podpora grafického API WebGPU a jazyka shaderů WGSL (WebGPU Shading Language). WebGPU poskytuje programové rozhraní podobné Vulkan, Metal a Direct3D 12 pro provádění operací na straně GPU, jako je rendering a výpočty, a také umožňuje používat jazyk shaderů k psaní programů fungujících na straně GPU. Implementace WebGPU bude zpočátku zahrnuta pouze ve sestaveních pro ChromeOS, macOS a Windows. Podpora WebGPU pro Linux a Android bude aktivována později.

Kromě Chrome se experimentální podpora WebGPU testuje od dubna 2020 ve Firefoxu a od listopadu 2021 v Safari. Pro aktivaci WebGPU ve Firefoxu je třeba v about:config nastavit příznaky dom.webgpu.enabled a gfx.webgpu.force-enabled. O plánech na přidání WebGPU jako výchozího nastavení ve Firefoxu a Safari zatím nejsou žádné informace. Implementace WebGPU vyvíjené pro Firefox a Chrome jsou k dispozici formou samostatných knihoven - Dawn (C++) a wgpu (Rust), které lze použít k integraci podpory WebGPU do vlastních aplikací. Také probíhá práce na přidání podpory WebGPU do populárních JavaScript knihoven, které původně používaly WebGL. Například plná podpora WebGPU byla již oznámena v Babylon.js, zatímco částečná podpora v Three.js, PlayCanvas a TensorFlow.js.

Konceptuálně se WebGPU liší od WebGL přibližně tak, jak se grafické API Vulkan liší od OpenGL, nicméně WebGPU se nezakládá na konkrétním grafickém API, ale představuje univerzální vrstvu, která využívá stejné nízkoúrovňové primitivy, jaké se nacházejí ve Vulkan, Metal a Direct3D. WebGPU poskytuje aplikacím na JavaScript prostředky pro nízkoúrovňovou kontrolu organizace, zpracování a přenos příkazů na GPU, správu souvisejících zdrojů, paměti, vyrovnávacích pamětí, objektů textur a zkompilovaných grafických shaderů. Tento přístup umožňuje dosáhnout vyšší výkonnosti grafických aplikací snížením režijních nákladů a zvýšením efektivity práce s GPU.

WebGPU umožňuje vytvářet složité 3D projekty pro web, které fungují stejně dobře jako samostatné programy přímo využívající Vulkan, Metal nebo Direct3D, ale nejsou vázány na konkrétní platformy. WebGPU také poskytuje další možnosti při portování nativních grafických programů do podoby, která může fungovat na bázi webových technologií, díky kompilaci do WebAssembly. Kromě 3D grafiky WebGPU zahrnuje i možnosti spojené s vyvedením výpočtů na GPU a prováděním shaderů.

Klíčové vlastnosti WebGPU:

  • Oddělená správa zdrojů, přípravných prací a předávání příkazů na GPU (ve WebGL byl jeden objekt zodpovědný za všechno najednou). Jsou poskytovány tři oddělené kontexty: GPUDevice pro vytváření zdrojů, jako jsou textury a bufferové paměti; GPUCommandEncoder pro kódování jednotlivých příkazů, včetně fází renderování a výpočtů; GPUCommandBuffer pro odesílání do fronty k vykonání na GPU. Výsledek může být vykreslen v oblasti spojené s jedním nebo více elementy canvasu, nebo zpracován bez výstupu (například při spuštění výpočtových úloh). Oddělení fází usnadňuje rozložení vytváření zdrojů a přípravných operací do různých zpracovatelů, které mohou běžet v různých vláknech.
  • Odlišný přístup při zpracování stavů. Ve WebGPU jsou nabízeny dva objekty — GPURenderPipeline a GPUComputePipeline, které umožňují kombinovat různá zařízení, dříve definovaná vývojářem, což umožňuje prohlížeči neužívat zdroje na dodatečné úkoly, jako je překompilace shaderů. Mezi podporované stavy patří: shadery, rozložení vertex bufferů a atributů, rozložení připojených skupin, míchání, hloubka a šablony, formáty výstupu po renderování.
  • Model vazby, která v mnoha ohledech připomíná současné prostředky seskupování zdrojů ve Vulkánu. Pro seskupení zdrojů do skupin poskytuje WebGPU objekt GPUBindGroup, který lze při zápisu příkazů spojit s dalšími podobnými objekty pro použití ve shaderech. Vytváření těchto skupin umožňuje ovladači provést potřebné přípravné kroky předem a prohlížeči to umožňuje výrazně rychleji měnit vazby zdrojů mezi výkony vykreslování. Rozložení vazeb zdrojů lze určit předem pomocí objektu GPUBindGroupLayout.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster