Przechwytywanie ekosystemu WebGPU

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

Interfejs WebGPU jest często postrzegany jako interfejs API do grafiki internetowej, który zapewnia jednolity i szybki dostęp do GPU, zapewniając najnowocześniejsze możliwości sprzętowe i umożliwiając wykonywanie operacji renderowania i obliczania w GPU, podobnie jak w przypadku Direct3D 12, Metal i Vulkana.

WebGPU przekracza jednak granice zwykłego interfejsu API JavaScript. Jest to podstawowy element składowy podobny do WebAssembly, a jego rozwijający się ekosystem wiąże się daleko poza granice sieci. Zespół Chrome postrzega WebGPU jako coś więcej niż tylko technologię internetową – to prężny ekosystem oparty na podstawowej technologii.

Poznawanie obecnego ekosystemu

W pierwszej kolejności przedstawiamy specyfikację JavaScript w ramach współpracy wielu organizacji, takich jak Apple, Google, Intel, Mozilla i Microsoft. Obecnie wszystkie główne przeglądarki mają wdrożenie WebGPU lub są w trakcie ich wdrażania.

Jednocześnie Mozilla i Google zdały sobie sprawę z potencjału komponentu WebGPU w aplikacjach na konkretnej platformie i oddają wdrożenia komponentu WebGPU od przeglądarek, co umożliwiło korzystanie z wersji niezależnej.

W przypadku Chrome jest to Dawn – biblioteka w języku C/C++, która przekształca wywołania WebGPU na polecenia sterownika GPU. Dawn umożliwia aplikacjom w językach C i C++ natywnie korzystające z WebGPU, zapewniając w ten sposób przenośną i ergonomiczną abstrakcję GPU.

W poście na blogu WebGPU: wieloplatformowy interfejs API dostępny w przyszłości przenoszenie aplikacji WebGPU na platformę nie sprawia żadnych problemów. Emscripten, czyli łańcuch narzędzi C++ WebAssembly, obsługuje już WebGPU, wymagając jedynie niewielkich modyfikacji, aby przenieść go do internetu.

Kod JavaScript WebGPU możesz też uruchomić poza przeglądarką za pomocą środowiska wykonawczego JavaScript Node.js, ponieważ zawiera ono moduł WebGPU oparty na Dawn. Umożliwia uruchamianie kodu bez modyfikacji po stronie serwera lub w innych kontekstach związanych z daną platformą.

Podobny ekosystem działa w przypadku Rust z implementacją WebGPU w przeglądarce Firefox o nazwie wgpu. Moduł Wgpu można bezpośrednio zintegrować z aplikacjami Rust, które następnie można przenieść do internetu za pomocą web-sys. Dodatkowo środowisko wykonawcze Deno JavaScript obsługuje WebGPU przez wgpu. Przeczytaj post na blogu wgpu alliance with Deno.

Spowoduje to utworzenie ekosystemu równoległego między Rust i C++, jak pokazano na poniższym diagramie.

Schemat ekosystemu WebGPU w 2023 r.
Ekosystem WebGPU w 2023 r.

Nowe horyzonty

Ekosystem WebGPU wykracza poza obszary JavaScript, C++ i Rust.

Twój preferowany język programowania może już mieć powiązania z WebGPU, ponieważ inżynierowie pracujący nad implementacjami WebGPU również opracowują wspólny nagłówek C dla WebGPU. Można go używać do kierowania reklam na Dawn, wgpu i inne, aby ułatwić tworzenie powiązań języków za pomocą C FFI.

Zespół Chrome rozważa również wykorzystanie Dawn jako domyślnego backendu renderowania wszystkich elementów interfejsu przeglądarki, w tym menu, pasków narzędzi, narzędzi dla programistów i treści internetowych. Wyeliminuje to konieczność stosowania oddzielnych implementacji renderowania w przypadku każdego natywnego interfejsu API, co uprości proces programowania. Ta funkcja jest obecnie w fazie eksperymentalnej w systemach macOS i Windows. Jest dostępna za flagą chrome://flags/#skia-graphite.

Podziękowania

Baner powitalny od Daniela Öberga na kanale Unsplash.