Nu sunt un programator de jocuri, și nici nu am experimentat cu grafică 3D în paginile web, însă vestea noului standard WebGPU mi-a trezit și mie interes. Din două motive:
Grafica 3D în paginile web necesită programe speciale, și skill-uri asortate.
Efectele și suportul pentru API-urile grafice în navigatoare era cu un pas în spatele celor disponibile aplicațiilor native (desktop/mobile). La fel și în termeni de performanță.
Dar WebGPU, vine tocmai cu această promisiune - acces direct din browser la GPU1!
Prima întrebare ar fi, de ce avem nevoie de un nou API?
Standardul lansat în 2009, WebGL folosește OpenGL2 pentru a accesa API-urile de randare grafică, însă acesta din urmă a fost înlocuit de Vulkan acum câțiva ani, și nu mai primește update-uri. Așadar standardul a rămas în urmă față de DirectX12, sau Apple Metal.
Apoi WebGL, este optimizat pentru randarea obiectelor pe un canvas și are performanță scăzută la procesarea altor task-uri care pe procesorul grafic, cum ar fi cele de machine learning.
Lipsește și suportul pentru mai multe plăci grafice pe un sistem și paralelizarea procesării.
Ce face WebGPU mai bine
WebGPU vine cu o arhitectură modernă compatibilă cu GPU-urile actuale, cu suport atât pentru randarea grafică, cât și pentru taskurile GPGPU3. Aceasta aduce avantaje, precum randarea mai eficientă a obiectelor pe partea de CPU și suport pentru funcționalități avansate precum particule și filtre de post-procesare - sarcini de calcul pentru procesorul grafic. De asemenea, poate gestiona calcule costisitoare, precum culling4 și transformarea modelelor animate. Și desigur, o integrare mai strânsă cu Javascript/ES6 pentru aplicațiile web.
Browser support, plus nativ
Standardul este momentan în ”working draft”, așadar doar ultimele versiuni ale browserelor pentru sistemele desktop (ChromeOS, macOS, and Windows) oferă suport. Pe navigatoarele mobile nu avem încă, WebGPU:
Dar este disponibil ca API grafic pentru C++ și Java/Kotlin. Așadar îl puteți deja experimenta, pentru grafică 3D în aplicații mobile sau desktop.
Tutoriale
Cel mai bun tutorial este de la Google Codelabs - Your first WebGPU app. Aș recomanda mai întâi să parcurgeți MDN-ul, pentru a vă familiariza cu conceptele:
Placa video (Graphics Processing Unit)
General-Compute GPU