Piştgiriya WebGPU dê di Chrome de were çalak kirin

Компания Google объявила о включении по умолчанию поддержки графического API WebGPU и языка шейдеров WGSL (WebGPU Shading Language) в ветке Chrome 113, релиз которой намечен на 2 мая. WebGPU предоставляет схожий с Vulkan, Metal и Direct3D 12 программный интерфейс для выполнения операций на стороне GPU, таких как рендеринг и вычисления, а также позволяет использовать язык шейдров для написания программ, работающих на стороне GPU. Реализация WebGPU будет включена вначале только в сборках для ChromeOS, macOS и Windows. Для Linux и Android поддержка WebGPU будет активирована позднее.

Кроме Chrome экспериментальная поддержка WebGPU тестируется с апреля 2020 года в Firefox и с ноября 2021 года в Safari. Для включения WebGPU в Firefox в about:config следует выставить флаги dom.webgpu.enabled и gfx.webgpu.force-enabled. О планах по включению WebGPU по умолчанию в Firefox и Safari пока не сообщается. Развиваемые для Firefox и Chrome реализации WebGPU доступны в форме отдельных библиотек — Dawn (С++) и wgpu (Rust), которые можно использовать для интеграции поддержки WebGPU в свои приложения. Также ведётся работа по добавлению поддержки WebGPU в популярные JavaScript-библитеки, изначально использующие WebGL. Например, полная поддержка WebGPU уже заявлена в Babylon.js, а частичная в Three.js, PlayCanvas и TensorFlow.js.

Концептуально WebGPU отличается от WebGL примерно так же, как графический API Vulkan отличается от OpenGL, но при этом WebGPU не основывается на конкретном графическом API, а представляет собой универсальную прослойку, использующую те же низкоуровневые примитивы, что имеются в Vulkan, Metal и Direct3D. WebGPU предоставляет приложениям на JavaScript средства для низкоуровневого контроля за организацией, обработкой и передачей команд к GPU, управления связанными ресурсами, памятью, буферами, объектами текстур и скомпилированными графическими шейдерами. Подобный подход позволяет добиться более высокой производительности графических приложений за счёт снижения накладных расходов и повышения эффективности работы с GPU.

WebGPU даёт возможность создавать для Web сложные 3D-проекты, работающие не хуже, чем обособленные программы, напрямую использующие Vulkan, Metal или Direct3D, но не привязанные к конкретным платформам. WebGPU также предоставляет дополнительные возможности при портировании нативных графических программ в форму, способную работать на базе web-технологий, благодаря компиляции в WebAssembly. Кроме 3D-графики WebGPU охватывает и возможности, связанные с выносом вычислений на сторону GPU и выполнением шейдеров.

Taybetmendiyên sereke yên WebGPU:

  • Rêvebiriya veqetandî ya çavkaniyan, xebata amadekariyê û veguheztina fermanan ji GPU re (di WebGL de yek tişt bi yekcarî berpirsiyar bû). Sê çarçoveyên cihêreng têne peyda kirin: GPUDevice ji bo afirandina çavkaniyên wekî tevnvîs û tampon; GPUCommandEncoder ji bo şîfrekirina fermanên takekesî, tevî qonaxên rendering û hesabkirinê; GPUCommandBuffer ji bo darvekirinê li ser GPU-yê tê rêz kirin. Encam dikare li deverek ku bi yek an çend hêmanên kanvasê ve girêdayî ye, an jî bêyî encam were hilberandin (mînak, dema ku karên hesabkirinê dimeşîne). Veqetandina qonaxan veqetandina operasyonên afirandina çavkaniyê û amadekirinê di nav rêkarên cihêreng ên ku dikarin li ser mijarên cihêreng bimeşînin hêsantir dike.
  • Nêzîkatiyek cûda ji bo dewletên pêvajoyê. WebGPU du tiştan pêşkêşî dike - GPURenderPipeline û GPUComputePipeline, ku dihêle hûn rewşên cihêreng ên ku ji hêla pêşdebiran ve hatine destnîşan kirin bi hev re bikin, ku rê dide gerokê ku çavkaniyan li ser karên din xerc neke, wek mînak berhevkirina shaderan. Dewletên piştgirî ev in: shader, tamponên vertex û sêwiranên taybetmendiyê, layoutên koma zeliqandî, tevlihevkirin, kûrahî û şablon, û formatên derketinê yên paş-render.
  • Modelek girêdanê ku mîna taybetmendiyên komkirina çavkaniya Vulkan e. Ji bo komkirina çavkaniyan bi hev re, WebGPU hêmanek GPUBindGroup peyda dike, ku dikare bi tiştên din ên mîna hev re were girêdan ji bo karanîna di shaderan de dema ku fermanan dinivîse. Afirandina komên weha rê dide ajoker ku pêşî li çalakiyên amadekariyê yên pêwîst pêk bîne, û dihêle gerokker girêdanên çavkaniyê di navbera bangên kişandinê de pir zûtir biguhezîne. Pîvana girêdanên çavkaniyê dikare bi karanîna objekta GPUBindGroupLayout ve were diyar kirin.

Source: opennet.ru

Add a comment