V Chrome bude povolena podpora WebGPU

Google oznámil výchozí podporu pro grafické rozhraní WebGPU API a WebGPU Shading Language (WGSL) v Chrome 113, jehož vydání je naplánováno na 2. května. WebGPU poskytuje rozhraní API podobné Vulkan, Metal a Direct3D 12 pro provádění operací na straně GPU, jako je vykreslování a výpočty, a také vám umožňuje používat shader jazyk k psaní programů na straně GPU. Implementace WebGPU bude zpočátku povolena pouze v sestaveních pro ChromeOS, macOS a Windows. Pro Linux a Android bude podpora WebGPU aktivována později.

Kromě Chrome byla od dubna 2020 testována experimentální podpora WebGPU ve Firefoxu a od listopadu 2021 v Safari. Chcete-li povolit WebGPU ve Firefoxu, nastavte příznaky dom.webgpu.enabled a gfx.webgpu.force-enabled v about:config. Zatím se neplánuje povolit WebGPU ve výchozím nastavení ve Firefoxu a Safari. Implementace WebGPU vyvinuté pro Firefox a Chrome jsou dostupné ve formě samostatných knihoven – Dawn (C++) a wgpu (Rust), které můžete použít k integraci podpory WebGPU do vašich aplikací. Pracuje se také na přidání podpory WebGPU do populárních knihoven JavaScriptu nativně pomocí WebGL. Například plná podpora WebGPU již byla oznámena v Babylon.js a částečná podpora v Three.js, PlayCanvas a TensorFlow.js.

Koncepčně se WebGPU liší od WebGL v podstatě stejným způsobem, jakým se liší grafické API Vulkan od OpenGL, ale WebGPU není založeno na specifickém grafickém API, ale je to vrstva pro všeobecné použití, která používá stejná nízkoúrovňová primitiva jako ve Vulkanu, Metal a Direct3D. WebGPU poskytuje aplikacím JavaScriptu nízkoúrovňovou kontrolu nad organizací, zpracováním a přenosem příkazů do GPU, správu souvisejících zdrojů, paměti, vyrovnávacích pamětí, objektů textur a kompilovaných grafických shaderů. Tento přístup umožňuje dosáhnout vyššího výkonu grafických aplikací snížením režie a zvýšením efektivity GPU.

WebGPU umožňuje vytvářet složité 3D projekty pro web, které fungují stejně jako samostatné programy, které přímo využívají Vulkan, Metal nebo Direct3D, ale nejsou vázány na konkrétní platformy. WebGPU také poskytuje další možnosti pro portování nativních grafických programů do webového formuláře kompilací do WebAssembly. Kromě 3D grafiky pokrývá WebGPU také možnosti spojené s přesunem výpočtů na stranu GPU a spouštěním shaderů.

Klíčové vlastnosti WebGPU:

  • Samostatná správa zdrojů, přípravné práce a přenos příkazů do GPU (ve WebGL za vše odpovídal jeden objekt najednou). K dispozici jsou tři samostatné kontexty: GPUDevice pro vytváření zdrojů, jako jsou textury a vyrovnávací paměti; GPUCommandEncoder pro kódování jednotlivých příkazů, včetně fází vykreslování a výpočtu; GPUCommandBuffer k předání do fronty běhu GPU. Výsledek lze vykreslit v oblasti spojené s jedním nebo více prvky plátna nebo vykreslit bez výstupu (například při spouštění výpočetních úloh). Oddělení fází usnadňuje oddělení operací vytváření zdrojů a zajišťování do různých obslužných programů, které mohou běžet na různých vláknech.
  • Jiný přístup k zacházení se stavy. WebGPU poskytuje dva objekty – GPURenderPipeline a GPUComputePipeline, které vám umožňují kombinovat různé stavy předdefinované vývojářem, což prohlížeči umožňuje neplýtvat prostředky na další práci, jako je rekompilace shaderů. Mezi podporované stavy patří: shadery, rozvržení vyrovnávací paměti vertexů a atributů, rozvržení lepivých skupin, prolnutí, hloubka a vzory, výstupní formáty po vykreslení.
  • Závazný model, podobně jako Vulkanovy nástroje pro seskupování zdrojů. Pro seskupení zdrojů do skupin poskytuje WebGPU objekt GPUBindGroup, který může být v době psaní příkazů spojen s jinými podobnými objekty pro použití v shaderech. Vytvoření takových skupin umožňuje ovladači provést potřebné přípravné akce předem a umožňuje prohlížeči mnohem rychleji měnit vazby prostředků mezi voláními draw. Rozvržení vazeb prostředků lze předdefinovat pomocí objektu GPUBindGroupLayout.

Zdroj: opennet.ru

Přidat komentář