Co dalej z WebGPU

François Beaufort
François Beaufort
Corentin Wallez
Corentin Wallez

Data publikacji: 21 listopada 2024 r.

Specyfikacja WebGPU jest stale rozwijana. Co tydzień spotykają się przedstawiciele takich firm jak Google, Mozilla, Apple, Intel i Microsoft, aby omawiać jej rozwój. Najnowsze spotkanie grupy roboczej dotyczącej GPU dla przeglądarek internetowych pozwoliło poznać główne cele i funkcje zaplanowane na następną iterację WebGPU. W tym poście na blogu znajdziesz najważniejsze wnioski z tego spotkania.

Osiągnięcie stanu rekomendacji kandydata

Głównym celem spotkania było omówienie postępów w realizacji etapu 0 oraz ostateczne rozwiązanie problemów, które należy rozwiązać, zanim etap ten uzyska status rekomendacji kandydata w W3C. Jest to kolejny krok w procesie standaryzacji, który zapewnia większą stabilność i ochronę własności intelektualnej.

Uczestnicy spotkania byli zgodni, że nie ma żadnych blokujących problemów i że te kwestie można rozwiązać w stosunku do zalecenia W3C dotyczącego WebGPU.

Priorytetyzacja nowych funkcji

Uczestnicy spotkania również wskazali nowe funkcje jako priorytetowe. Zaczęli od listy funkcji, które chcieliby wprowadzić, sporządzonej na podstawie opinii programistów, implementatorów i interesariuszy.

Tablica z ręcznie napisaną listą terminów związanych z interfejsami API grafiki komputerowej, w tym „Bindless”, „Subgroups”, „MDI”, „Push Constants”, „UMA”, „Subgroup Matrix” i inne.

Po dyskusji zidentyfikowaliśmy te najważniejsze funkcje WebGPU dotyczące AI:

  • Macierze podgrup i podpodgrup: aplikacja może korzystać z szybkiej komunikacji lokalnej między wątkami GPU i wykorzystywać sprzętowe mnożenie macierzy o stałym rozmiarze obok rdzeni shadera. Zobacz propozycję dotyczącą podgrup.

  • Bufory teł: zapewniają wydajniejszy sposób przechowywania małych typów danych, takich jak wartości 16- lub 8-bitowe, oraz dostęp do nich w przenośny sposób. Jest to ważne w przypadku niektórych algorytmów przetwarzania obrazu opartych na systemach uczących się. Zobacz slajdy dotyczące bufora pikselowego.

  • Mapowanie bufora UMA: zwiększa wydajność przesyłania danych przez ograniczenie lub wyeliminowanie kopiowania i nadmiarowego obciążenia synchronizacją. Zobacz problem ze specyfikacją 2388.

Pod uwagę brane są też inne funkcje WebGPU, które mogą być priorytetowe, ponieważ umożliwiają tworzenie nowych rodzajów algorytmów renderowania:

  • Bindless: ta długo wyczekiwana propozycja funkcji jest warunkiem wstępnym dla większości najnowocześniejszych algorytmów renderowania, ponieważ potrzebują one informacji o całej scenie. Dzięki temu shadery mogą używać nieograniczonej liczby zasobów, w tym tekstur, w porównaniu z obecnie stosowanymi stosunkowo ścisłymi limitami.

  • Wielokrotne rysowanie pośrednie: pozwala na tworzenie przez poprzednie obliczenia na GPU wielu rysowań zamiast tylko jednego z drawIndirect. Jest to ważna funkcja w przypadku renderowania z wykorzystaniem GPU, np. w przypadku odrzucania obiektów przez GPU. Zobacz prośbę pull 2315.

  • 64-bitowe operacje atomowe: w buforach lub teksturach są niezbędne do wykonania „rasteryzacji programowej” na procesorze graficznym, poprzez połączenie testu głębi i zapisu 32-bitowego ładunku w ramach pojedynczej operacji atomicMax. Zobacz problem 4329.

Aby zwiększyć możliwości WebGPU i jego integrację z szerszą platformą internetową, omówiliśmy te funkcje WebGPU:

  • Tryb zgodności: ten tryb ma na celu umożliwienie działania WebGPU na większej liczbie urządzeń, w tym na tych, które obsługują tylko OpenGL ES 3.1. Zapoznaj się z propozycją trybu zgodności.

  • WebXR umożliwia dotychczasowemu modułowi WebXR Layers nawiązywanie interfejsu z WebGPU przez udostępnianie łańcuchów wymiany WebGPU dla każdego typu warstwy. Zobacz prezentację na temat integracji WebGPU/WebXR.

  • Canvas2D: zapewnia lepszą interoperacyjność między Canvas2D a WebGPU, rozwiązując problemy z wydajnością i ergonomiką. Ta propozycja przeniesienia WebGPU umożliwiłaby dostęp do rysowania tekstu i ścieżek w WebGPU oraz stosowanie renderowania WebGPU do Canvas 2D.

W ramach spotkania odbyły się też prezentacje i dyskusje na temat ulepszania narzędzi i bibliotek WGSL. Jedną z ciekawych inicjatyw jest opracowanie WESL (rozszerzony język cieniowania WGSL), który ma stanowić zestaw rozszerzeń WGSL opracowanych przez społeczność.

Więcej informacji znajdziesz w notatkach z nieprzetworzonych spotkań.

Myśli

Podczas tego spotkania podkreślaliśmy, jak ważna jest współpraca grupy roboczej WebGPU, deweloperów i szerszej społeczności zajmującej się grafiką w kształtowaniu przyszłości WebGPU. Grupa robocza aktywnie zbiera opinie na temat proponowanych funkcji i współpracuje z deweloperami, aby zapewnić im wsparcie WebGPU.

Kolejne wersje WebGPU zapowiadają się jako znaczący krok naprzód, który otworzy nowe możliwości dla grafiki internetowej i umożliwi deweloperom tworzenie jeszcze bardziej wciągających i angażujących treści internetowych dla AI.