Chrome уже матиме підтримку WebGPU і буде ввімкнено за умовчанням

WebGPU Chrome

Після багатьох років розробки команда Chrome випускає WebGPU

Кілька днів тому Google представив через один оголошений стандартна підтримка для графічного API WebGPU і WebGPU Shading Language (WGSL) у гілці Chrome 113, вихід якого запланований на 2 травня.

Для тих, хто не знає про WebGPU, ви повинні це знати надає API, подібний до Vulkan, Metal і Direct3D 12 для виконання операцій на стороні GPU, таких як візуалізація та обчислення, а також дозволяє використовувати мову шейдерів для написання програм на стороні GPU.

Про WebGPU

Концептуально, WebGPU відрізняється від WebGL так само, як графічний API Vulkan відрізняється від OpenGL, але WebGPU не базується на конкретному графічному API, скоріше це рівень загального призначення, який використовує ті самі примітиви низького рівня, що й у Vulkan. Метал і Direct3D. WebGPU надає додаткам JavaScript низький рівень контролю над організацією, обробка та передача команд до GPU, керування пов’язаними ресурсами, пам’яттю, буферами, текстурними об’єктами та скомпільованими графічними шейдерами. Цей підхід дозволяє досягти більш високої продуктивності графічних додатків за рахунок зменшення накладних витрат і підвищення ефективності GPU.

WebGPU дозволяє створювати складні тривимірні проекти для Інтернету які працюють так само добре, як і автономні програми, які безпосередньо використовують Vulkan, Metal або Direct3D, але не прив’язані до конкретних платформ. WebGPU також надає додаткові параметри для портування рідних графічних програм до веб-форми шляхом компіляції в WebAssembly. Окрім 3D-графіки, WebGPU також надає можливості, пов’язані з перенесенням обчислень на сторону GPU та запуском шейдерів.

З ключових особливостей WebGPU можна виділити наступне:

  • Окреме управління ресурсами, підготовчі роботи та передача команд до GPU (у WebGL один об’єкт відповідав за все й одразу). Надаються три окремі контексти: GPUDevice для створення ресурсів, таких як текстури та буфери; GPUCommandEncoder для кодування окремих команд, включаючи етапи обробки та обчислення; GPUCommandBuffer для передачі в чергу виконання GPU.
    Результат можна відобразити в області, пов’язаній з одним чи кількома елементами полотна, або відобразити без виведення (наприклад, під час виконання обчислювальних завдань). Постановка дозволяє легко відокремити створення ресурсів і операції надання на різні контролери, які можуть працювати в різних потоках.
  • Інший підхід до обробки стану. WebGPU надає два об’єкти, GPURenderPipeline і GPUComputePipeline, які дозволяють комбінувати різні стани, попередньо визначені розробником, дозволяючи браузеру не витрачати ресурси на додаткову роботу, таку як перекомпіляція шейдерів. Підтримувані стани включають: шейдери, буфер вершин і макети атрибутів, фіксовані групові макети, змішування, глибину та візерунки, вихідні формати після рендерингу.
  • Модель зв’язування, схожа на інструменти об’єднання ресурсів Vulkan. Щоб групувати ресурси в групи, WebGPU надає об’єкт GPUBindGroup, який можна прив’язувати до інших подібних об’єктів для використання в шейдерах під час запису команд.
    Створення таких груп дозволяє контролеру виконувати необхідні підготовчі дії заздалегідь і дозволяє браузеру набагато швидше перемикати прив’язки ресурсів між викликами малювання. Макет прив’язок ресурсів можна попередньо визначити за допомогою об’єкта GPUBindGroupLayout.

Окрім Chrome, Експериментальна підтримка WebGPU тестується з квітня 2020 року у Firefox а з листопада 2021 року – у Safari. Щоб увімкнути WebGPU у Firefox, ви повинні встановити прапорці dom.webgpu.enabled і gfx.webgpu.force-enabled у about:config.

Поки що немає планів увімкнути WebGPU за замовчуванням у Firefox і Safari. Реалізації WebGPU, розроблені для Firefox і Chrome, доступні як окремі бібліотеки: Dawn (C++) і wgpu (Rust), які можна використовувати для інтеграції підтримки WebGPU у ваші програми.

Також слід зазначити, що ведеться робота з додавання підтримки WebGPU до популярних бібліотек JavaScript, які використовують WebGL. Наприклад, повна підтримка WebGPU вже оголошена в Babylon.js і часткова у Three.js, PlayCanvas і TensorFlow.js.

Здійснення WebGPU буде ввімкнено лише спочатку в збірках для ChromeOS, macOS і Windows, а для Linux і Android підтримку WebGPU буде активовано пізніше.

Нарешті, якщо вам цікаво дізнатися більше про це, ви можете ознайомитися з деталями У наступному посиланні.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: AB Internet Networks 2008 SL
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.