Сегодня Google объявил, что включит поддержку WebGPU в своем браузере Chrome по умолчанию, начиная с версии 113, которая в настоящее время находится в стадии бета-тестирования. WebGPU, разрабатываемый с 2017 года, представляет собой графический API следующего поколения, целью которого является использование преимуществ API с низкими накладными расходами, таких как Microsoft Direct3D 12, Apple Metal и Vulkan, в веб-браузерах и других приложениях.
Поддержка WebGPU была доступна в течение некоторого времени, но по умолчанию отключена в Chrome, потому что API не был доработан, и что-то может сломаться от обновления к обновлению. Google заявляет, что и Mozilla, и Apple в конечном итоге будут поддерживать WebGPU в Firefox и Safari, а такие браузеры, как Microsoft Edge и Opera, которые полагаются на браузерный движок Chromium, могли бы включить его, как это сделал Google.
Chrome 113 с самого начала поддерживает WebGPU в Windows, macOS и ChromeOS, а «поддержка других платформ», таких как Linux и Android, «появится позже в этом году». Эта версия браузера должна стать доступной для всех пользователей Chrome где-то в мае.
Поддержка в Chrome — это большой шаг вперед для любого нового стандарта, будь то новый или обновленный API, формат изображения или видеокодек. По данным StatCounter, на Chrome приходится примерно две трети доли рынка браузеров во всем мире и почти 80 процентов от общей доли рынка браузеров, если считать другие браузеры на основе Chromium. Как только Safari и Firefox добавят поддержку, практически все веб-браузеры по всему миру смогут запускать код WebGPU, поэтому стоит кратко объяснить, что такое WebGPU и почему он существует.
Что такое веб-графический процессор?
WebGPU является своего рода преемником WebGL , гораздо более старого API, который позволяет вам отображать графику на основе OpenGL в вашем браузере, не требуя дополнительных сторонних плагинов, таких как Adobe Flash. Хотя WebGL был революционным, когда о нем было объявлено в 2009 году, сегодня он страдает от многих из тех же проблем, что и OpenGL: он не использует все преимущества современных графических процессоров, может терять производительность из-за накладных расходов на драйверы и имеет лишь ограниченные возможности. и неуклюжая поддержка вычислительных нагрузок графического процессора.
«В то время как WebGL в первую очередь предназначен для рисования изображений, но может быть перепрофилирован (с большими усилиями) для выполнения других видов вычислений, WebGPU имеет первоклассную поддержку для выполнения общих вычислений на GPU», — говорится в черновике документа, объясняющего, почему существует WebGPU . . Новый API улучшит графику в таких средах, как Babylon.js, и игровых движках, таких как Unity; будет поддерживать рабочие нагрузки с ускорением на GPU, подобные тем, которые используются для машинного обучения и искусственного интеллекта; и может облегчить веб-приложениям для фото и видео (среди прочего) использование ускорения графического процессора, от которого выигрывают нативные приложения.
WebGPU разрабатывается рабочей группой, в которую входят представители Google, Microsoft, Apple, Mozilla, Intel и многих других компаний, и в результате API был спроектирован так, чтобы быть как можно более широко совместимым. WebGPU не является прямой реализацией какого-либо существующего графического API, а представляет собой собственный API, который работает поверх Direct3D 12, Metal и Vulkan и взаимодействует с ними. Этот объяснитель от Сурма, инженера Shopify и бывшего сотрудника Google, прекрасно резюмирует это (курсив наш):
«В то время как WebGL — это всего лишь тонкая оболочка OpenGL, WebGPU использует другой подход. Он вводит свои собственные абстракции и напрямую не отражает ни один из этих нативных API. Отчасти это связано с тем, что ни один API не доступен во всех системах, а также с тем, что многие концепции (такие как чрезвычайно низкоуровневое управление памятью) не идиоматичны для веб-API. Вместо этого WebGPU был разработан, чтобы чувствовать себя «веб-подобным» и удобно располагаться поверх любого из собственных графических API, абстрагируя их особенности. Он стандартизирован в W3C, и все основные поставщики браузеров сидят за одним столом».
Это имеет то преимущество, что код WebGPU становится очень переносимым — напишите код WebGPU, и пока у пользователей есть аппаратное обеспечение и браузер, который его поддерживает, вы должны получить тот же результат в системе Windows с Direct3D и на телефоне Android с Vulkan. И это позволяет избежать некоторых хаков, которые поддерживают работу WebGL — например, WebGL в Windows и macOS даже не использует OpenGL напрямую, а вместо этого использует транслятор под названием ANGLE, который вместо этого превращает вызовы API OpenGL в вызовы API Direct3D и Metal. С WebGPU нет необходимости запускать совершенно отдельный проект для написания медленной или плохо поддерживаемой реализации OpenGL.
WebGPU также имеет собственный язык шейдеров (WGSL), над поддержкой которого команда Chrome все еще работает — в сегодняшнем объявлении говорится, что Google «планирует предоставить более глубокий доступ к ядрам шейдеров» через WGSL в будущем выпуске. Как и остальная часть API WebGPU, WGSL не зависит от платформы и легко транслируется на предпочитаемый язык шейдеров любой операционной системы, в которой вы его используете.
Наконец, несмотря на слово «сеть» в названии, API WebGPU не ограничивается браузерами. Проект wgpu — это версия WebGPU для Rust, которая позволяет вам писать приложения WebGPU и запускать их вне веб-браузеров.
Если вы хотите поэкспериментировать с WebGPU прямо сейчас, бета-версия Chrome 113 доступна здесь . Репозиторий GitHub с примерами кода доступен здесь , а также есть официальная документация как для WebGPU , так и для WGSL .