Firefox болон Safari нь WebGPU-ийн дэмжлэг авах болно

Mozilla нь Firefox дээр WebGPU API болон WGSL (WebGPU Shading Language)-ийн дэмжлэгийг идэвхжүүлэхээр шийдсэн. Windows платформын хувьд WebGPU-ийн дэмжлэгийг 141-р сарын 22-нд төлөвлөгдсөн Firefox XNUMX-д анхдагчаар идэвхжүүлнэ. Дараа нь дараагийн хэдэн сарын хугацаанд WebGPU-ийн дэмжлэгийг Linux болон macOS-ийн хувилбаруудад, мөн хэсэг хугацааны дараа Android хувилбарт идэвхжүүлэхээр төлөвлөж байна. WebGPU-г гараар идэвхжүүлэхийн тулд about:config хуудасны "dom.webgpu.enabled" болон "gfx.webrender.all" параметрүүдийг ашиглаж болно.

Chrome-д WebGPU-ийн дэмжлэгийг 113 оны 2023-р сард гаргасан 2021-р хувилбараар анхдагчаар санал болгосон. Safari-д WebGPU-ийн дэмжлэгийг энэ намар анхдагчаар идэвхжүүлэхээр төлөвлөж байна (туршилтын дэмжлэгийг 2020 оны 3-р сараас эхлэн ашиглах боломжтой). Firefox-д туршилтын WebGPU дэмжлэг 12 оноос хойш хэрэгжиж байгаа боловч Firefox-ын шөнийн хувилбаруудад анхдагчаар зөвхөн идэвхжсэн. Firefox-ийн WebGPU-ийн хэрэгжилт нь Rust хэл дээр бичигдсэн, DirectXNUMXD XNUMX, Vulkan, OpenGL, Метал график API-ууд дээр ажиллах чадвартай WGPU төслийн код дээр суурилдаг.

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

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

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

WebGPU-ийн гол онцлогууд ба WebGL-ээс ялгаатай:

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

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

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