Стандарт 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 комментария