Omówienie WebGPU

François Beaufort
François Beaufort

WebGPU to interfejs API do grafiki internetowej, który zapewnia wiele korzyści, np. znacznie zmniejsza obciążenie JavaScriptem przy tej samej grafice i ponat trzykrotnie poprawia wnioskowanie w modelach systemów uczących się. Jest to możliwe dzięki elastycznemu programowaniu GPU i dostępowi do zaawansowanych funkcji, których nie oferuje WebGL.

Interfejs API został zaprojektowany z myślą o platformie internetowej. Zawiera on idiomatyczny interfejs JavaScript API, integrację z obietnicami, obsługę importowania filmów oraz ulepszoną obsługę deweloperów z jasnymi komunikatami o błędach.

WebGPU to efekt współpracy grupy społecznościowej W3C „GPU for the Web”, w której uczestniczą m.in. duże firmy, takie jak Mozilla, Apple, Intel i Microsoft.

Obsługa przeglądarek

Ta pierwsza wersja WebGPU została udostępniona w Chrome 113 na urządzeniach z ChromeOS z obsługą Vulkana, urządzeniach z systemem Windows z obsługą Direct3D 12 oraz na macOS. Wkrótce udostępnimy obsługę Linuksa, Androida i dotychczasowych platform.

WebGPU jest obecnie w trakcie implementacji w FirefoxSafari, a także w pierwszej wersji w Chrome.

Pomoc dotycząca biblioteki

Wiele powszechnie używanych bibliotek WebGL jest już w trakcie implementowania obsługi WebGPU lub już ją obsługuje. Oznacza to, że korzystanie z WebGPU może wymagać zmiany tylko jednego wiersza.

  • Babylon.js obsługuje WebGPU w pełni.
  • Firma PlayCanvas ogłosiła początkową obsługę WebGPU.
  • TensorFlow.js obsługuje wersje większości operatorów zoptymalizowane pod kątem WebGPU.
  • Three.js obsługuje WebGPU (w trakcie tworzenia – zobacz przykłady).

Zarówno biblioteka Dawn dla Chromium, jak i biblioteka wgpu dla Firefoxa są dostępne jako samodzielne pakiety. Zapewniają one dużą przenośność i ergonomiczne warstwy, które abstrahują interfejsy API procesora graficznego systemu operacyjnego. Korzystanie z tych bibliotek w natywności ułatwia przenoszenie na WASM za pomocą EmscriptenRust web-sys.

Zasoby

WebGPU to ważna technologia. Aby dowiedzieć się więcej, zapoznaj się z tymi materiałami: