W3C нь WebGPU стандартын төслийг танилцууллаа

W3C нь WebGPU болон WebGPU Shading Language (WGSL)-ийн техникийн үзүүлэлтүүдийн эхний ноорогуудыг гаргасан бөгөөд тэдгээр нь дүрслэх, тооцоолох зэрэг GPU-ийн үйлдлүүдийг гүйцэтгэх API-г, мөн GPU дээр ажилладаг программ бичихэд зориулсан шэйдер хэлийг тодорхойлдог. Vulkan, Metal болон Direct3D 12 API-тай үзэл баримтлалын хувьд ижил төстэй техникийн үзүүлэлтүүдийг Mozilla, Google, Apple, Microsoft-ын инженерүүдийг багтаасан ажлын хэсэг бэлтгэсэн.

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

WebGPU нь Вулкан, Металл эсвэл Direct3D-д шууд ханддаг, гэхдээ тодорхой платформтой холбоогүй бие даасан програмуудаас муугүй ажилладаг вэбэд зориулсан нарийн төвөгтэй 3D төслүүдийг бий болгох боломжийг олгодог. WebGPU нь мөн WebAssembly-д эмхэтгэх замаар төрөлх график программуудыг вэб идэвхжүүлсэн хэлбэрт шилжүүлэх нэмэлт боломжийг олгодог. 3D графикаас гадна WebGPU нь тооцооллыг GPU-д буулгах, шэйдерүүдийг ажиллуулах зэрэг боломжуудыг агуулдаг.

WebGPU-ийн гол онцлогууд:

  • Нөөцийг тусад нь удирдах, бэлтгэл ажил, тушаалуудыг GPU руу дамжуулах (WebGL-д нэг объект нэг дор бүх зүйлийг хариуцдаг). Гурван тусдаа контекст өгсөн: бүтэц, буфер зэрэг нөөцийг бий болгох GPUDevice; Бие даасан командуудыг кодлох GPUCommandEncoder, үүнд үзүүлэх, тооцоолох үе шатууд; GPUCommandBuffer-г GPU дээр ажиллуулахаар дараалалд оруулна. Үр дүнг нэг буюу хэд хэдэн зотон элементтэй холбоотой хэсэгт үзүүлэх эсвэл гаралтгүйгээр боловсруулах боломжтой (жишээлбэл, тооцоолох ажлыг гүйцэтгэх үед). Үе шатуудыг салгаснаар нөөц үүсгэх, бэлтгэх үйлдлүүдийг өөр өөр урсгал дээр ажиллах боломжтой өөр өөр зохицуулагч болгон хуваахад хялбар болгодог.
  • Боловсруулах төлөвт өөр хандлага. WebGPU нь GPURenderPipeline ба GPUComputePipeline гэсэн хоёр объектыг санал болгодог бөгөөд энэ нь хөгжүүлэгчийн урьдчилан тодорхойлсон янз бүрийн төлөвүүдийг нэгтгэх боломжийг олгодог бөгөөд энэ нь хөтчийг шэйдерүүдийг дахин хөрвүүлэх гэх мэт нэмэлт ажилд нөөцийг үрэхгүй байх боломжийг олгодог. Дэмжигдсэн төлөвт: шэйдер, оройн буфер болон атрибутын бүдүүвч, наалттай бүлгийн байршил, холих, гүн ба хэв маяг, үзүүлсний дараах гаралтын формат орно.
  • Vulkan-ийн нөөцийг бүлэглэх онцлогтой төстэй загвар. Нөөцүүдийг хамтад нь бүлэглэхийн тулд WebGPU нь GPUBindGroup объектыг хангадаг бөгөөд энэ нь команд бичих явцад шэйдэрт ашиглах ижил төстэй бусад объектуудтай холбогдож болно. Ийм бүлгүүдийг бий болгосноор драйвер шаардлагатай бэлтгэл ажлыг урьдчилан хийх боломжийг олгодог бөгөөд хөтөч нь дуудлагын хоорондох нөөцийн холболтыг илүү хурдан өөрчлөх боломжийг олгодог. GPUBindGroupLayout объектыг ашиглан нөөцийн холболтын байршлыг урьдчилан тодорхойлж болно.

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

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