Compilările de noapte pentru Firefox includ acum suport WebGPU

В noapte Firefox construiește a apărut suport pentru specificații WebGPU, care oferă o interfață de programare pentru procesarea grafică 3D și calculul pe partea GPU, conceptual similar cu API Vulkan, Metal и Direct3D 12. Specificația este dezvoltată de Mozilla, Google, Apple, Microsoft și membrii comunității în grup de lucru, creat de organizația W3C.

Scopul cheie al WebGPU este de a oferi o interfață de programare sigură, ușor de utilizat, portabilă și de înaltă performanță pentru platforma web, pentru a valorifica tehnologiile și capabilitățile grafice 3D oferite de API-urile grafice de sistem moderne, cum ar fi Direct3D 12 pe Windows, Metal. pe macOS și Vulkan pe Linux. Conceptual, WebGPU diferă de WebGL în același mod în care Vulkan diferă de OpenGL și, în același timp, nu se bazează pe un API grafic specific, ci este un strat universal care utilizează în general aceleași primitive de nivel scăzut găsite în Vulkan, Metal și Direct3D.

WebGPU oferă aplicațiilor JavaScript cu control la nivel inferior asupra organizării, procesării și transmiterii comenzilor către GPU, gestionând resursele asociate, memoria, bufferele, obiectele de textură și shaders-urile 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 cu drepturi depline pentru Web, care nu funcționează mai rău decât programele independente care accesează direct Vulkan, Metal sau Direct3D, dar care nu sunt legate de platforme specifice. WebGPU oferă, de asemenea, capabilități suplimentare la portarea programelor grafice native într-o formă capabilă să ruleze pe tehnologii web, datorită utilizării tehnologiei WebAssembly. Pe lângă grafica 3D, WebGPU include și capabilități legate de descărcarea calculelor pe GPU și sprijinirea dezvoltării shader. Shaders putea să fie creat în limbajul de umbrire WebGPU sau specificat în formatul intermediar SPIR-V și apoi tradus în limbaje de umbrire acceptate de driverele actuale.

WebGPU folosește gestionarea separată a resurselor, munca pregătitoare și transmiterea comenzilor către GPU (în WebGL, un singur obiect era responsabil pentru tot deodată). Sunt oferite trei contexte separate:
GPUDispozitiv 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.

A doua diferență între WebGPU și WebGL este o abordare diferită a gestionării stărilor. 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.

A treia caracteristică a WebGPU se numește model de legare, în mare măsură
amintește de instrumentele de grupare a resurselor prezente în 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.

Compilările de noapte pentru Firefox includ acum suport WebGPU

În Firefox, pentru a activa WebGPU în about:config, există o setare „dom.webgpu.enabled”. Redarea CanvasContext necesită, de asemenea, activarea compoziției WebRender („gfx.webrender.all” în about:config), scris în Rust și externalizarea operațiunilor de redare a conținutului paginii către GPU. Implementarea WebGPU se bazează pe codul proiectului
wgpu, scris în Rust și capabil să ruleze peste API-urile DX12, Vulkan și Metal pe Linux, Android, Windows și macOS (suportul DX11 și OpenGL ES 3.0 este, de asemenea, în dezvoltare). În paralel, Google dezvoltă o altă implementare, care este disponibilă în Ramura Canarelor Chromium și este activat folosind indicatorul „chrome://flags/#enable-unsafe-webgpu”, dar până acum funcționează numai pe macOS și Windows.

Sursa: opennet.ru

Adauga un comentariu