Suportul WebGPU va fi activat în Chrome

Google a anunțat includerea suportului implicit pentru API-ul grafic WebGPU și WGSL (WebGPU Shading Language) în Chrome 113, care este programat să fie lansat pe 2 mai. WebGPU oferă o interfață de programare similară cu Vulkan, Metal și Direct3D 12 pentru a efectua operațiuni pe partea GPU, cum ar fi randarea și calculul, și permite, de asemenea, utilizarea unui limbaj shader pentru a scrie programe care rulează pe partea GPU. Implementarea WebGPU va fi inițial activată numai pe versiunile ChromeOS, macOS și Windows. Pentru Linux și Android, suportul WebGPU va fi activat la o dată ulterioară.

Pe lângă Chrome, suportul experimental pentru WebGPU a fost testat din aprilie 2020 în Firefox și din noiembrie 2021 în Safari. Pentru a activa WebGPU în Firefox, ar trebui să setați steagurile dom.webgpu.enabled și gfx.webgpu.force-enabled în about:config. Nu există încă planuri pentru a activa WebGPU în mod implicit în Firefox și Safari. Implementările WebGPU dezvoltate pentru Firefox și Chrome sunt disponibile sub formă de biblioteci separate - Dawn (C++) și wgpu (Rust), pe care le puteți utiliza pentru a integra suportul WebGPU în aplicațiile dvs. De asemenea, se lucrează pentru adăugarea suportului WebGPU la bibliotecile JavaScript populare care utilizează în mod nativ WebGL. De exemplu, suport complet pentru WebGPU a fost deja anunțat în Babylon.js și suport parțial în Three.js, PlayCanvas și TensorFlow.js.

Conceptual, WebGPU diferă de WebGL în același mod în care API-ul grafic Vulkan diferă de OpenGL, dar WebGPU nu se bazează pe un API grafic specific, ci este un strat universal care utilizează aceleași primitive de nivel scăzut găsite în Vulkan, Metal și Direct3D. WebGPU oferă aplicațiilor JavaScript cu control la nivel scăzut asupra organizării, procesării și transmiterii comenzilor către GPU, gestionând resursele asociate, memoria, bufferele, obiectele de textură și shaderele grafice compilate. Această abordare vă permite să obțineți performanțe mai mari pentru aplicațiile grafice prin reducerea costurilor generale și creșterea eficienței lucrului cu GPU.

WebGPU face posibilă crearea de proiecte 3D complexe pentru Web, care nu au rezultate mai slabe decât programele independente care utilizează direct Vulkan, Metal sau Direct3D, dar care nu sunt legate de platforme specifice. WebGPU oferă, de asemenea, capabilități suplimentare pentru portarea programelor grafice native într-o formă activată pentru web prin compilare în WebAssembly. Pe lângă grafica 3D, WebGPU include și capabilități legate de descărcarea calculelor în GPU și executarea shader-urilor.

Caracteristicile cheie ale WebGPU:

  • Gestionarea separată a resurselor, munca pregătitoare și transmiterea comenzilor către GPU (în WebGL un singur obiect era responsabil pentru totul deodată). Sunt furnizate trei contexte separate: GPUDevice pentru crearea de resurse precum texturi și buffere; GPUCommandEncoder pentru codificarea comenzilor individuale, inclusiv etapele de randare și de calcul; GPUCommandBuffer va fi pus în coadă pentru execuție pe GPU. Rezultatul poate fi redat într-o zonă asociată cu unul sau mai multe elemente de pânză sau procesat fără ieșire (de exemplu, când rulează sarcini de calcul). Separarea etapelor facilitează separarea operațiunilor de creare și pregătire a resurselor în diferiți handlere care pot rula pe fire diferite.
  • O abordare diferită a stărilor de procesare. WebGPU oferă două obiecte - GPURenderPipeline și GPUComputePipeline, care vă permit să combinați diferite stări predefinite de dezvoltator, ceea ce permite browserului să nu irosească resurse pentru lucrări suplimentare, cum ar fi recompilarea shaderelor. Stările acceptate includ: shaders, vertex buffer și machete de atribute, sticky group layouts, amestecare, adâncime și modele și formate de ieșire post-randare.
  • Un model obligatoriu asemănător caracteristicilor de grupare a resurselor Vulkan. Pentru a grupa resursele împreună, WebGPU oferă un obiect GPUBindGroup, care poate fi asociat cu alte obiecte similare pentru utilizare în shadere în timpul scrierii comenzilor. Crearea unor astfel de grupuri permite șoferului să efectueze în avans acțiunile pregătitoare necesare și permite browserului să modifice mult mai rapid legăturile de resurse între apelurile de extragere. Aspectul legăturilor de resurse poate fi predefinit folosind obiectul GPUBindGroupLayout.

Sursa: opennet.ru

Adauga un comentariu