W3C devwale pwojè estanda 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 и выполнением шейдеров.

Karakteristik kle nan WebGPU:

  • Jesyon separe nan resous, travay preparasyon ak transmisyon nan kòmandman nan GPU a (nan WebGL yon objè te responsab pou tout bagay nan yon fwa). Yo bay twa kontèks separe: GPUDevice pou kreye resous tankou tèkstur ak tanpon; GPUCommandEncoder pou kode kòmandman endividyèl, ki gen ladan etap rann ak kalkil; GPUCommandBuffer yo dwe mete ann kriye pou ekzekisyon sou GPU la. Rezilta a ka rann nan yon zòn ki asosye ak youn oswa plis eleman twal, oswa trete san pwodiksyon (pa egzanp, lè w ap fè travay kalkile). Separe etap yo fè li pi fasil yo separe kreyasyon resous ak operasyon preparasyon nan moun kap okipe diferan ki ka kouri sou fil diferan.
  • Yon apwòch diferan nan pwosesis eta yo. WebGPU ofri de objè - GPURenderPipeline ak GPUComputePipeline, ki pèmèt ou konbine plizyè eta pre-defini pa pwomotè a, ki pèmèt navigatè a pa gaspiye resous sou travay adisyonèl, tankou recompiling shaders. Eta ki sipòte yo enkli: shaders, tanpon somè ak layout atribi, fòm gwoup kolan, melanje, pwofondè ak modèl, ak fòma pwodiksyon apre rann.
  • Yon modèl obligatwa anpil tankou karakteristik gwoup resous Vulkan la. Pou gwoupe resous yo ansanm, WebGPU bay yon objè GPUBindGroup, ki ka asosye ak lòt objè ki sanble pou itilize nan shaders pandan y ap ekri kòmandman yo. Kreye gwoup sa yo pèmèt chofè a fè aksyon preparasyon ki nesesè yo davans, epi li pèmèt navigatè a chanje koneksyon resous ant apèl trase pi vit. Ka Layout nan lyezon resous yo ka predefini lè l sèvi avèk objè a GPUBindGroupLayout.

Sous: opennet.ru

Add nouvo kòmantè