WebGPU дэмжлэгийг Chrome-д идэвхжүүлнэ

113-р сарын 2-нд худалдаанд гарахаар төлөвлөж буй Chrome 3-д WebGPU график API болон WGSL (WebGPU Shading Language)-ийн анхдагч дэмжлэгийг Google-ээс зарлалаа. WebGPU нь Vulkan, Metal, Direct12D XNUMX-той төстэй програмчлалын интерфэйсийг үзүүлэх, тооцоолох гэх мэт GPU талын үйлдлүүдийг гүйцэтгэхээс гадна GPU талд ажилладаг программ бичихэд шэйдер хэл ашиглах боломжийг олгодог. WebGPU хэрэгжилт нь эхлээд зөвхөн ChromeOS, macOS болон Windows хувилбарууд дээр идэвхжинэ. Линукс болон Android-ийн хувьд WebGPU дэмжлэгийг дараа нь идэвхжүүлнэ.

Chrome-оос гадна WebGPU-ийн туршилтын дэмжлэгийг 2020 оны 2021-р сараас Firefox, XNUMX оны XNUMX-р сараас Safari дээр туршиж үзсэн. Firefox-д WebGPU-г идэвхжүүлэхийн тулд about:config дотор dom.webgpu.enabled болон gfx.webgpu.force-ийг идэвхжүүлсэн тугуудыг тохируулах хэрэгтэй. Firefox болон Safari дээр анхдагчаар WebGPU-г идэвхжүүлэх төлөвлөгөө хараахан байхгүй байна. Firefox болон Chrome-д зориулж боловсруулсан WebGPU-ийн хэрэгжүүлэлтүүд нь тусдаа номын сан хэлбэрээр байдаг - Dawn (C++) болон wgpu (Rust) бөгөөд та WebGPU-ийн дэмжлэгийг өөрийн аппликешнүүдэд нэгтгэхэд ашиглаж болно. Мөн WebGL ашигладаг алдартай JavaScript сангуудад WebGPU дэмжлэгийг нэмэх ажил хийгдэж байна. Жишээлбэл, WebGPU-г бүрэн дэмжихийг Babylon.js, хэсэгчилсэн дэмжлэгийг Three.js, PlayCanvas болон TensorFlow.js-д зарласан.

Үзэл баримтлалын хувьд WebGPU нь Vulkan графикийн API нь OpenGL-ээс ялгаатай байдагтай адил WebGL-ээс ялгаатай боловч WebGPU нь тодорхой график 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

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