W3C tiżvela abbozz tal-istandard 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 и выполнением шейдеров.

Karatteristiċi ewlenin tal-WebGPU:

  • Ġestjoni separata tar-riżorsi, xogħol preparatorju u trasmissjoni ta 'kmandi lill-GPU (f'WebGL oġġett wieħed kien responsabbli għal kollox f'daqqa). Tliet kuntesti separati huma pprovduti: GPUDevice għall-ħolqien ta 'riżorsi bħal textures u buffers; GPUCommandEncoder għall-kodifikazzjoni ta' kmandi individwali, inklużi stadji ta' rendering u komputazzjoni; GPUCommandBuffer għandu jitqiegħed fil-kju għall-eżekuzzjoni fuq il-GPU. Ir-riżultat jista 'jiġi mgħoti f'żona assoċjata ma' element tal-kanvas wieħed jew aktar, jew ipproċessat mingħajr output (per eżempju, meta jkunu qed iħaddmu kompiti ta 'komputazzjoni). Is-separazzjoni tal-istadji tagħmilha aktar faċli li tissepara l-ħolqien tar-riżorsi u l-operazzjonijiet ta 'preparazzjoni f'handlers differenti li jistgħu jimxu fuq ħjut differenti.
  • Approċċ differenti għall-istati tal-ipproċessar. WebGPU joffri żewġ oġġetti - GPURenderPipeline u GPUComputePipeline, li jippermettulek tgħaqqad diversi stati definiti minn qabel mill-iżviluppatur, li jippermetti li l-browser ma jaħlix riżorsi fuq xogħol addizzjonali, bħal shaders mill-ġdid. L-istati appoġġjati jinkludu: shaders, vertex buffer u layouts tal-attributi, layouts tal-gruppi li jwaħħlu, taħlit, fond u mudelli, u formati ta 'output ta' wara r-rendi.
  • Mudell li jorbot ħafna bħall-karatteristiċi ta 'raggruppament tar-riżorsi ta' Vulkan. Biex jiġbor ir-riżorsi flimkien, WebGPU jipprovdi oġġett GPUBindGroup, li jista 'jiġi assoċjat ma' oġġetti simili oħra għall-użu fi shaders waqt il-kitba tal-kmandi. Il-ħolqien ta 'gruppi bħal dawn jippermetti lis-sewwieq iwettaq l-azzjonijiet preparatorji meħtieġa minn qabel, u jippermetti lill-browser ibiddel ir-rabta tar-riżorsi bejn is-sejħiet ta' tlugħ ħafna aktar malajr. It-tqassim tal-irbit tar-riżorsi jista' jiġi predefinit bl-użu tal-oġġett GPUBindGroupLayout.

Sors: opennet.ru

Żid kumment