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 przeszkód i że te problemy można rozwiązać w sposób terminowy, co umożliwi rekomendację W3C kandydata na 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.