W3C odhaluje návrh standardu WebGPU

Konference W3C vydala první návrhy specifikací WebGPU a WebGPU Shading Language (WGSL), které definují rozhraní API pro provádění operací GPU, jako je vykreslování a výpočty, a také shader jazyk pro psaní programů běžících na GPU. koncepčně podobný API Vulkan, Metal a Direct3D 12. Specifikace připravila pracovní skupina, v níž byli inženýři z Mozilly, Googlu, Applu a Microsoftu.

Koncepčně se WebGPU liší od WebGL v podstatě stejným způsobem, jakým se grafické API Vulkan liší od OpenGL, ale není založeno na specifickém grafickém API, ale je univerzální vrstvou, která používá stejná nízkoúrovňová primitiva jako ve Vulkan, 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í, texturových objektů a kompilovaných grafických shaderů. Tento přístup umožňuje dosáhnout vyššího výkonu pro grafické aplikace 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é nefungují hůře než samostatné programy, které přímo přistupují k 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é podoby prostřednictvím kompilace do WebAssembly. Kromě 3D grafiky obsahuje WebGPU také funkce související s přesunem výpočtů na 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ář