Захват экосистемы WebGPU

Франсуа Бофор
François Beaufort

WebGPU часто воспринимается как API веб-графики, который обеспечивает унифицированный и быстрый доступ к графическим процессорам, раскрывая передовые аппаратные возможности и позволяя выполнять операции рендеринга и вычислений на графическом процессоре, аналогично Direct3D 12, Metal и Vulkan.

Однако WebGPU выходит за рамки простого API JavaScript; это фундаментальный строительный блок, аналогичный WebAssembly , последствия которого выходят далеко за пределы Интернета из-за его растущей экосистемы. Команда Chrome признает, что WebGPU — это нечто большее, чем просто веб-технология; это процветающая экосистема, основанная на базовой технологии.

Изучение текущей экосистемы

Путь начинается со спецификации JavaScriptсовместной работы многочисленных организаций, таких как Apple, Google, Intel, Mozilla и Microsoft. Все основные веб-браузеры внедрили или находятся в процессе внедрения WebGPU.

В то же время Mozilla и Google признали потенциал WebGPU в приложениях, специфичных для платформы, и отделили реализации WebGPU от браузеров, сделав возможным автономное использование.

Для Chrome это материализовалось как Dawn , библиотека C/C++, которая преобразует вызовы WebGPU в команды драйвера графического процессора. Dawn позволяет приложениям C и C++ использовать WebGPU изначально, обеспечивая портативную и эргономичную абстракцию графического процессора с использованием опыта поставщиков браузеров.

Как показано в сообщении блога WebGPU: кроссплатформенный графический API завтрашнего дня , портирование приложения WebGPU для конкретной платформы в Интернет не составляет труда. Emscripten , набор инструментов C++ WebAssembly, уже поддерживает WebGPU, поэтому для его переноса в Интернет требуются лишь минимальные модификации.

Вы также можете запускать код JavaScript WebGPU вне браузера с помощью среды выполнения Node.js JavaScript, поскольку она включает модуль WebGPU на основе Dawn . Он позволяет запускать код без изменений на стороне сервера или в других контекстах, специфичных для платформы.

Аналогичная экосистема существует для Rust с wgpu , реализацией WebGPU в Firefox. Wgpu можно напрямую интегрировать в приложения Rust, которые затем можно портировать в Интернет с помощью web-sys . Кроме того, среда выполнения Deno JavaScript поддерживает WebGPU через wgpu. См. сообщение в блоге об альянсе wgpu с Deno .

Это создает параллельную экосистему между Rust и C++, как показано на следующей диаграмме.

Схема экосистемы WebGPU в 2023 году.
Экосистема WebGPU в 2023 году.

Новые горизонты

Экосистема WebGPU выходит за рамки областей JavaScript, C++ и Rust.

Возможно, ваш предпочтительный язык программирования уже имеет привязки для WebGPU, поскольку инженеры, работающие над реализациями WebGPU, также разрабатывают общий заголовок C для WebGPU . Это можно использовать для Dawn, wgpu и других, упрощая создание привязок для языков, использующих C FFI .

Команда Chrome также рассматривает возможность использования Dawn в качестве механизма рендеринга по умолчанию для всех элементов пользовательского интерфейса браузера, включая меню, панели инструментов, инструменты разработчика и веб-контент. Это устранит необходимость в отдельных реализациях рендеринга для каждого собственного API, упростив процесс разработки. Эта функция находится на экспериментальной стадии в macOS и Windows под флагом chrome://flags/#skia-graphite .