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 дээр ажиллуулахаар дараалалд оруулна. Үр дүнг нэг буюу хэд хэдэн зотон элементтэй холбоотой хэсэгт үзүүлэх эсвэл гаралтгүйгээр боловсруулах боломжтой (жишээлбэл, тооцоолох ажлыг гүйцэтгэх үед). Үе шатуудыг салгаснаар нөөц үүсгэх, бэлтгэх үйлдлүүдийг өөр өөр урсгал дээр ажиллах боломжтой өөр өөр зохицуулагч болгон хуваахад хялбар болгодог.
  • Боловсруулах төлөвт өөр хандлага. WebGPU нь GPURenderPipeline ба GPUComputePipeline гэсэн хоёр объектыг санал болгодог бөгөөд энэ нь хөгжүүлэгчийн урьдчилан тодорхойлсон янз бүрийн төлөвүүдийг нэгтгэх боломжийг олгодог бөгөөд энэ нь хөтчийг шэйдерүүдийг дахин хөрвүүлэх гэх мэт нэмэлт ажилд нөөцийг үрэхгүй байх боломжийг олгодог. Дэмжигдсэн төлөвт: шэйдер, оройн буфер болон атрибутын бүдүүвч, наалттай бүлгийн байршил, холих, гүн ба хэв маяг, үзүүлсний дараах гаралтын формат орно.
  • Vulkan-ийн нөөцийг бүлэглэх онцлогтой төстэй загвар. Нөөцүүдийг хамтад нь бүлэглэхийн тулд WebGPU нь GPUBindGroup объектыг хангадаг бөгөөд энэ нь команд бичих явцад шэйдэрт ашиглах ижил төстэй бусад объектуудтай холбогдож болно. Ийм бүлгүүдийг бий болгосноор драйвер шаардлагатай бэлтгэл ажлыг урьдчилан хийх боломжийг олгодог бөгөөд хөтөч нь дуудлагын хоорондох нөөцийн холболтыг илүү хурдан өөрчлөх боломжийг олгодог. GPUBindGroupLayout объектыг ашиглан нөөцийн холболтын байршлыг урьдчилан тодорхойлж болно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх