Стандарт WebGPU 1.0 зарелизился в Chrome

Новая версия Chrome будет включать поддержку нового стандарта WebGPU 1.0 по-умолчанию. Полноценная поддержка в браузерах Safari и FireFox все еще в статусе developer preview и включается специальной опцией, но все равно это огромный шаг для графических и общих вычислений на клиенте в вебе. Для пользователей, это изменение как правило должно означать лучшее использование ресурсов GPU в графических программах запускаемых в браузере, а также появление программ которые могут использовать мощности GPU не только для графики. Для таких областей применения как например симуляция физики, обработка фотографий или генерация голоса прямо в браузере пользователя без пересылки данных на сервер. Пример Stable Diffusion модели работающей в браузере с помощью WebGPU.

Пример симуляции частиц в браузере.

Для разработчиков новый стандарт позволит писать не только программы для графических вычислений, но общих для вычислений (gpgpu), как например с помощью CUDA или ROCM. Это можно использовать например в решения задач искусственного интеллекта и других областях. Хотя на практике, нативные API от вендоров видеокарт будут конечно же впереди и по производительности и доступу к разным новым возможностям.

Сайт с примерами WebGPU для разработчиков.
Сайт с примерами WebGPU для разработчиков.

WebGPU это продвигаемый вендорами браузеров и W3C новый интерфейс для вычислений на графических ускорителях похожий на Metal, Vulkan и DirectX 12 который приходит на замену WebGL. Изначально стандарт назывался WebMetal и был похож на интерфейс Apple. Khronos которая разработала такие стандарты как OpenGL, Vulkan, WebGL и другие не имеет отношения к разработке WebGPU.

С точки зрения дизайна, главные отличия от интерфейсов предыдущих поколений таких как WebGL, OpenGL и DirectX 11 – явное управление ресурсами, графические и вычислительные пайплайны и ориентация на много-поточность. Новая версия Chrome делает доступной взаимодействие с интерфейсом внутри клиентских приложений использующих JavaScript или WebAssembly. Для нативных приложений написанных на языках C++ и Rust также есть официальные реализации WebGPU – dawn и wgpu используемые в браузерах. Под капотом, браузер транслирует все вызовы WebGPU в доступный API операционный системы API - Vulkan, Metal или DX12.

Помимо собственно самого стандарта для вычислений на GPU, новый стандарт так же включает в себя новый с нуля разработанный язык шейдеров – WGSL который приходит на замену GLSL. Для трансляции шейдеров из других языков типа HLSL, MSL, GLSL и SPIR-V есть несколько решений: shaderc, tint, naga.

Неплохой обзор современных GPU APIs можно помотреть в этом видео от инженера Google:

Ну YouTube уже доступно несколько обучающих курсов по WebGPU

6666
33 комментария

Наконец-то, джва год ждал

5
Автор

Пилю свой проект на wgpu, наконец-то будет с кем обсудить. Раньше на меня смотрели на сумасшедшего когда я тут свои шейдеры на WGSL постил.

4

Тот есть теперь оно будет жрать не только всю память, что найдет на компе, а ещё и на видеокарте, постоянно чето там майнить и рендерить в фоне на гпу? Зоебис! Нраица!

3

Оно и щас так делает

Playcanvas уже заявили поддержку, что не может не радовать.
https://blog.playcanvas.com/initial-webgpu-support-lands-in-playcanvas-engine-1-62/

2

Можно как то по проще - что я могу теперь делать?

Автор

Можешь программировать почти как c Vulkan, только в браузере.

2