W3C прадставіў чарнавы варыянт стандарту WebGPU

Кансорцыум W3C прадставіў першыя чарнавыя варыянты спецыфікацый WebGPU і WebGPU Shading Language (WGSL), якія вызначаюць API для выканання аперацый на GPU, такіх як рэндэрынг і вылічэнні, а таксама мова шэйдраў для напісання праграм, якія працуюць на баку GPU. канцэптуальна падобны з ​​API Vulkan, Metal і Direct3D 12. Спецыфікацыі падрыхтаваны працоўнай групай, у якую ўвайшлі інжынеры з Mozilla, Google, Apple і Microsoft.

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

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

Ключавыя асаблівасці WebGPU:

  • Паасобнае кіраванне рэсурсамі, падрыхтоўчымі працамі і перадачай каманд у GPU (у WebGL адзін аб'ект адказваў за ўсё зараз). Прадастаўляецца тры асобныя кантэксты: GPUDevice для стварэння рэсурсаў, такіх як тэкстуры і буферы; GPUCommandEncoder для кадавання асобных каманд, уключаючы стадыі рэндэрынгу і вылічэнні; GPUCommandBuffer для перадачы ў чаргу на выкананне ў GPU. Вынік можа быць адмаляваны ў вобласці, злучанай з адным ці некалькімі элементамі canvas, ці апрацаваны без высновы (напрыклад, пры запуску вылічальных задач). Падзел стадый спрашчае разнясенне стварэння рэсурсаў і падрыхтоўчыя аперацыі ў розныя апрацоўшчыкі, якія могуць выконвацца ў розных плынях.
  • Іншы падыход пры апрацоўцы станаў. У WebGPU прапануецца два аб'екты – GPURenderPipeline і GPUComputePipeline, якія дазваляюць камбінаваць розныя станы, загадзя вызначаныя распрацоўшчыкам, што дае магчымасць браўзэру не марнаваць рэсурсы на правядзенне дадатковай працы, такі як перакампіляванне шэйдараў. Сярод падтрымліваемых станаў: шэйдары, раскладкі вяршынных буфераў і атрыбутаў, раскладкі прымацаваных груп, змешванне, глыбіня і шаблоны, фарматы вываду пасля рэндэрынгу.
  • Мадэль звязвання, шмат у чым якая нагадвае прысутныя ў Vulkan сродкі групоўкі рэсурсаў. Для аб'яднання рэсурсаў у групы ў WebGPU падаецца аб'ект GPUBindGroup, які падчас запісу каманд можна звязаць з іншымі такімі ж аб'ектамі для выкарыстання ў шэйдарах. Стварэнне падобных груп дае магчымасць драйверу загадзя выканаць неабходныя падрыхтоўчыя дзеянні, а браўзэру дазваляе значна хутчэй мяняць прывязкі рэсурсаў паміж выклікамі адмалёўкі. Раскладка прывязак рэсурсаў можа быць вызначана загадзя пры дапамозе аб'екта GPUBindGroupLayout.

Крыніца: opennet.ru

Дадаць каментар