Firefox-ийн шөнийн хувилбарууд одоо WebGPU дэмжлэгийг агуулдаг

В шөнө Firefox бүтээдэг гарч ирэв тодорхойлолтын дэмжлэг WebGPU, 3D график боловсруулалт болон GPU талын тооцоололд зориулсан програмчлалын интерфейсээр хангадаг бөгөөд концепцийн хувьд API-тай төстэй. Vulkan, металл и Direct3D 12. Тодорхойлолтыг Mozilla, Google, Apple, Microsoft болон нийгэмлэгийн гишүүд боловсруулж байна ажлын хэсэг, W3C байгууллагаас үүсгэсэн.

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

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

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

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

WebGPU болон WebGL хоёрын хоёр дахь ялгаа нь төлөвийг зохицуулах өөр хандлага юм. WebGPU нь GPURenderPipeline ба GPUComputePipeline гэсэн хоёр объектыг санал болгодог бөгөөд энэ нь хөгжүүлэгчийн урьдчилан тодорхойлсон янз бүрийн төлөвүүдийг нэгтгэх боломжийг олгодог бөгөөд энэ нь хөтчийг шэйдерүүдийг дахин хөрвүүлэх гэх мэт нэмэлт ажилд нөөцийг үрэхгүй байх боломжийг олгодог. Дэмжигдсэн төлөвт: шэйдер, оройн буфер болон атрибутын бүдүүвч, наалттай бүлгийн байршил, холих, гүн ба хэв маяг, үзүүлсний дараах гаралтын формат орно.

WebGPU-ийн гуравдахь онцлогийг үндсэндээ холбох загвар гэж нэрлэдэг
Вулкан дахь нөөцийг бүлэглэх хэрэгслүүдийг санагдуулдаг.
Нөөцүүдийг хамтад нь бүлэглэхийн тулд WebGPU нь GPUBindGroup объектыг хангадаг бөгөөд энэ нь команд бичих явцад шэйдэрт ашиглах ижил төстэй бусад объектуудтай холбогдож болно. Ийм бүлгүүдийг бий болгосноор драйвер шаардлагатай бэлтгэл ажлыг урьдчилан хийх боломжийг олгодог бөгөөд хөтөч нь дуудлагын хоорондох нөөцийн холболтыг илүү хурдан өөрчлөх боломжийг олгодог. GPUBindGroupLayout объектыг ашиглан нөөцийн холболтын байршлыг урьдчилан тодорхойлж болно.

Firefox-ийн шөнийн хувилбарууд одоо WebGPU дэмжлэгийг агуулдаг

Firefox дээр about:config дотор WebGPU-г идэвхжүүлэхийн тулд "dom.webgpu.enabled" тохиргоо байдаг. CanvasContext дүрслэл нь нэгтгэхийг идэвхжүүлэхийг шаарддаг WebRender ("gfx.webrender.all" about:config-д), Rust хэл дээр бичигдсэн ба GPU-д хуудасны контент үзүүлэх үйлдлийг аутсорсинг. WebGPU хэрэгжилт нь төслийн код дээр суурилдаг
wgpu, Rust хэл дээр бичигдсэн бөгөөд Linux, Android, Windows болон macOS дээрх DX12, Vulkan болон Metal API-ууд дээр ажиллах чадвартай (DX11 болон OpenGL ES 3.0 дэмжлэг бас хөгжүүлэгдэж байна). Үүнтэй зэрэгцэн Google нь өөр хувилбарыг боловсруулж байна Канарын салбар Chromium нь "chrome://flags/#enable-unsafe-webgpu" гэсэн тугийг ашиглан идэвхжсэн боловч одоогоор зөвхөн macOS болон Windows дээр ажилладаг.

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

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