Chrome va include suport pentru WebGPU

Compania Google a anunțat activarea implicită a suportului pentru API-ul grafic WebGPU și limbajul de shadere WGSL (WebGPU Shading Language) în rama Chrome 113, a cărei lansare este planificată pentru 2 mai. WebGPU oferă o interfață programatică similară cu Vulkan, Metal și Direct3D 12 pentru executarea operațiunilor pe GPU, cum ar fi redarea și calculele, și permite utilizarea limbajului de shadere pentru a scrie programe care rulează pe GPU. Implementarea WebGPU va fi disponibilă inițial doar în versiunile pentru ChromeOS, macOS și Windows. Pentru Linux și Android, suportul WebGPU va fi activat ulterior.

În afară de Chrome, suportul experimental pentru WebGPU este testat din aprilie 2020 în Firefox și din noiembrie 2021 în Safari. Pentru a activa WebGPU în Firefox, trebuie setate flag-urile dom.webgpu.enabled și gfx.webgpu.force-enabled în about:config. Până acum, nu s-au făcut anunțuri cu privire la planurile de activare implicită a WebGPU în Firefox și Safari. Versiunile realizate pentru Firefox și Chrome disponibile sub formă de biblioteci separate – Dawn (C++) și wgpu (Rust) – pot fi utilizate pentru integrarea suportului WebGPU în aplicațiile proprii. De asemenea, se lucrează la adăugarea suportului WebGPU în biblioteci populare JavaScript, care utilizează inițial WebGL. De exemplu, suportul complet pentru WebGPU a fost deja anunțat în Babylon.js, iar suportul parțial în Three.js, PlayCanvas și TensorFlow.js.

Conceptual, WebGPU se deosebește de WebGL aproximativ la fel cum API-ul grafic Vulkan diferă de OpenGL, dar WebGPU nu se bazează pe un API grafic specific, ci reprezintă un strat universal care utilizează aceleași primitive de bază disponibile în Vulkan, Metal și Direct3D. WebGPU oferă aplicațiilor JavaScript instrumente pentru controlul de bază al organizării, prelucrării și transmisiei comenzilor către GPU, gestionarea resurselor asociate, memorie, buffer-e, obiecte textură și shadere grafice compilate. Această abordare permite obținerea unei performanțe mai mari în aplicațiile grafice prin reducerea cheltuielilor generale și creșterea eficienței muncii cu GPU.

WebGPU oferă posibilitatea de a crea pentru Web proiecte 3D complexe, care funcționează la fel de bine ca programele autonome ce folosesc direct Vulkan, Metal sau Direct3D, dar fără a fi legate de platforme specifice. WebGPU oferă, de asemenea, funcționalități suplimentare pentru portarea programelor grafice native într-o formă capabilă să funcționeze pe baza tehnologiilor web, grație compilării în WebAssembly. Pe lângă grafică 3D, WebGPU acoperă și capacitățile legate de externalizarea calculului pe GPU și executarea shaderelor.

Trăsăturile cheie ale WebGPU:

  • Control separat al resurselor, al proceselor pregătitoare și al transmiterii comenzii către GPU (în WebGL, un singur obiect se ocupa de toate simultan). Sunt furnizate trei contexte separate: GPUDevice pentru crearea resurselor, cum ar fi texturi și buffere; GPUCommandEncoder pentru codificarea comenzilor individuale, inclusiv etapele de randare și calcul; GPUCommandBuffer pentru a fi trimis în coadă pentru executare pe GPU. Rezultatul poate fi redat într-o zonă asociată cu unul sau mai multe elemente canvas, sau procesat fără redare (de exemplu, în cazul executării sarcinilor de calcul). Separarea etapelor simplifică delegarea creării resurselor și a operațiunilor pregătitoare în diferite manejere care pot fi executate pe fire diferite.
  • O abordare diferită în gestionarea stărilor. În WebGPU sunt propuse două obiecte — GPURenderPipeline și GPUComputePipeline, care permit combinarea diferitelor stări, predefinite de dezvoltator, ceea ce permite browserului să nu își irosească resursele pe muncă suplimentară, cum ar fi recompilarea shaderelor. Printre stările acceptate se numără: shader-uri, structuri ale bufferelor de vârfuri și a atributelor, structuri ale grupurilor atașate, amestecare, adâncime și șabloane, formate de ieșire după randare.
  • Modelul de legătură, în mare măsură similar cu metodele de grupare a resurselor prezente în Vulkan. Pentru a grupa resursele în grupuri, WebGPU oferă un obiect GPUBindGroup, care poate fi legat la alte obiecte similare în timpul înregistrării comenzilor pentru utilizarea în shadere. Crearea acestor grupuri permite driverului să efectueze în prealabil acțiunile pregătitoare necesare, iar browserului îi permite să schimbe semnificativ mai repede legăturile resurselor între apelurile de redare. Dispunerea legăturilor resurselor poate fi definită dinainte prin intermediul obiectului GPUBindGroupLayout.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster