El Представлен W3C В последнее время, первые проекты спецификаций WebGPU и WebGPU Shading Language (WGSL), которые определяют API-интерфейсы для выполнения операций графического процессора, таких как рендеринг и вычисления, а также язык шейдеров для написания программ на стороне графического процессора.
Эти спецификации концептуально похожи на API Vulkan, Metal и Direct3D 12. Спецификации были подготовлены рабочей группой, в которую вошли инженеры из Mozilla, Google, Apple и Microsoft.
Целью графического процессора для веб-рабочей группы является обеспечение интерфейса между веб-платформой и современной трехмерной графикой и вычислительными возможностями, присущими родным системным платформам. Узнайте больше о целях, объеме и результатах.
GPU для группы веб-сообщества разработали спецификации, принятые этой рабочей группой. Группа сообщества продолжает продвигать техническую работу над спецификациями и создавать новые функции. Эта рабочая группа работает с группой сообщества, чтобы сформировать спецификации для пути рекомендаций.
Концептуально, WebGPU отличается от WebGL так же, как графический API Vulkan отличается от OpenGL, но он не основан на конкретном графическом API, а представляет собой универсальный уровень, использующий те же низкоуровневые примитивы, что и в Vulkan, Metal и Direct3D.
WebGPU предоставляет приложениям JavaScript инструменты для низкоуровневого управления.об организации, обработка и передача команд на GPU, управление связанными ресурсами, памятью, буферами, объектами текстуры и скомпилированными графическими шейдерами. Такой подход позволяет достичь более высокой производительности графических приложений за счет снижения накладных расходов и повышения эффективности графического процессора.
Веб-графический процессор позволяет создавать сложные 3D-проекты для Интернета которые не работают так же, как в автономных программах, которые напрямую обращаются к Vulkan, Metal или Direct3D, но не привязаны к конкретным платформам.
Веб-графический процессор также предоставляет дополнительные возможности для переноса собственных графических программ в веб-форму путем компиляции в WebAssembly. Помимо трехмерной графики, WebGPU также охватывает возможности, связанные с аутсорсингом вычислений на стороне GPU и запуском шейдеров.
Ключевые особенности WebGPU:
- Раздельное управление ресурсами, подготовительные работы и передача команд на GPU (в WebGL за все сразу отвечал один объект). Предоставляются три отдельных контекста: GPUDevice для создания ресурсов, таких как текстуры и штампы; GPUCommandEncoder для кодирования отдельных команд, включая этапы обработки и расчета; GPUCommandBuffer поставить в очередь на выполнение на графическом процессоре. Результат может быть визуализирован в области, связанной с одним или несколькими холстами, или визуализирован без визуализации (например, при выполнении вычислительных задач). Поэтапное размещение позволяет легко разделить операции создания ресурсов и подготовительные операции на разных контроллерах, которые могут выполняться в разных потоках.
- Другой подход к работе со статусомс. WebGPU предлагает два объекта: GPURenderPipeline и GPUComputePipeline, что ты позволяют комбинировать разные состояния, предопределенные разработчиком, что позволяет браузеру не тратить ресурсы на дополнительную работу, например на восстановление шейдеров. Поддерживаемые состояния включают шейдеры, буферы вершин и макеты атрибутов, макеты присоединенных групп, слияние, глубину и шаблоны, а также форматы вывода постобработки.
- Модель привязки, очень похожая на инструменты пула ресурсов Vulkan.. Чтобы сгруппировать ресурсы в группы, WebGPU предоставляет объект GPUBindGroup, который при вводе команд может быть связан с другими объектами того же типа для использования в шейдерах. Создание таких групп позволяет драйверу заранее предпринять необходимые подготовительные действия, а браузер позволяет браузеру гораздо быстрее изменять привязки ресурсов между вызовами отрисовки. Макет ссылок на ресурсы может быть предварительно определен с помощью объекта GPUBindGroupLayout.
Наконец, если вам интересно узнать об этом больше о заметке, вы можете проверить деталиЭто по следующей ссылке.