Firefox tungi tuzilmalari endi WebGPU-ni qo'llab-quvvatlashni o'z ichiga oladi

В tun Firefox quradi paydo bo'ldi spetsifikatsiyani qo'llab-quvvatlash WebGPU, bu 3D grafiklarni qayta ishlash va GPU tomonidagi hisoblash uchun dasturlash interfeysini ta'minlaydi, kontseptual jihatdan APIga o'xshaydi. Vulkan, metall и Direct3D 12. Spetsifikatsiya Mozilla, Google, Apple, Microsoft va hamjamiyat a'zolari tomonidan ishlab chiqilmoqda ishchi guruhi, W3C tashkiloti tomonidan yaratilgan.

WebGPU-ning asosiy maqsadi Windows, Metall, Direct3D 3 kabi zamonaviy tizim grafik API-lari tomonidan taqdim etilgan 12D grafik texnologiyalari va imkoniyatlaridan foydalanish uchun veb-platforma uchun xavfsiz, foydalanuvchilarga qulay, portativ va yuqori samarali dasturlash interfeysini ta'minlashdir. macOS-da, Vulkan esa Linux-da. Kontseptual jihatdan, WebGPU WebGL-dan xuddi Vulkan OpenGL-dan farq qiladigan tarzda farq qiladi va shu bilan birga u ma'lum bir grafik API-ga asoslanmagan, lekin odatda Vulkan-da joylashgan bir xil past darajadagi primitivlardan foydalanadigan universal qatlamdir. Metall va Direct3D.

WebGPU JavaScript ilovalarini GPUga buyruqlarni tashkil qilish, qayta ishlash va uzatish, bog'langan resurslarni, xotirani, buferlarni, tekstura ob'ektlarini va kompilyatsiya qilingan grafik shaderlarni boshqarishni past darajadagi nazorat bilan ta'minlaydi. Ushbu yondashuv qo'shimcha xarajatlarni kamaytirish va GPU bilan ishlash samaradorligini oshirish orqali grafik ilovalar uchun yuqori samaradorlikka erishish imkonini beradi.

WebGPU Internet uchun Vulkan, Metal yoki Direct3D-ga to'g'ridan-to'g'ri kiradigan, lekin ma'lum platformalarga bog'liq bo'lmagan mustaqil dasturlardan yomonroq ishlaydigan to'liq huquqli murakkab 3D loyihalarni yaratishga imkon beradi. WebGPU shuningdek, WebAssembly texnologiyasidan foydalangan holda mahalliy grafik dasturlarni veb-yoqilgan shaklga o'tkazishda qo'shimcha imkoniyatlarni taqdim etadi. 3D grafikadan tashqari, WebGPU GPU-ga hisob-kitoblarni tushirish va shaderni ishlab chiqishni qo'llab-quvvatlash bilan bog'liq imkoniyatlarni ham qamrab oladi. Shaderlar mumkin WebGPU Shading Language-da yaratilishi yoki oraliq SPIR-V formatida ko'rsatilishi va keyin joriy drayverlar tomonidan qo'llab-quvvatlanadigan shader tillariga tarjima qilinishi mumkin.

WebGPU resurslarni alohida boshqarish, tayyorgarlik ishlari va buyruqlarni GPUga uzatishdan foydalanadi (WebGL-da bir vaqtning o'zida hamma narsa uchun bitta ob'ekt javobgar edi). Uchta alohida kontekst taqdim etiladi:
Teksturalar va buferlar kabi resurslarni yaratish uchun GPUDevice; GPUCommandEncoder individual buyruqlarni, shu jumladan renderlash va hisoblash bosqichlarini kodlash uchun; GPUCommandBuffer GPUda bajarish uchun navbatga qo'yiladi. Natija bir yoki bir nechta tuval elementlari bilan bog'langan maydonda ko'rsatilishi yoki chiqmasdan qayta ishlanishi mumkin (masalan, hisoblash vazifalarini bajarishda). Bosqichlarni ajratish resurslarni yaratish va tayyorlash operatsiyalarini turli ish zarrachalarida ishlashi mumkin bo'lgan turli ishlov beruvchilarga ajratishni osonlashtiradi.

WebGPU va WebGL o'rtasidagi ikkinchi farq - bu holatlar bilan ishlashga boshqa yondashuv. WebGPU ikkita ob'ektni taklif qiladi - GPURenderPipeline va GPUComputePipeline, ular ishlab chiquvchi tomonidan oldindan belgilangan turli holatlarni birlashtirishga imkon beradi, bu brauzerga qo'shimcha ishlarga, masalan, shaderlarni qayta kompilyatsiya qilish uchun resurslarni isrof qilmaslik imkonini beradi. Qo'llab-quvvatlanadigan holatlarga quyidagilar kiradi: shaderlar, vertex buferi va atributlar sxemalari, yopishqoq guruh sxemalari, aralashtirish, chuqurlik va naqshlar va renderdan keyingi chiqish formatlari.

WebGPU-ning uchinchi xususiyati, asosan, majburiy model deb ataladi
Vulkanda mavjud bo'lgan resurslarni guruhlash vositalarini eslatadi.
Resurslarni birgalikda guruhlash uchun WebGPU GPUBindGroup ob'ektini taqdim etadi, u buyruqlarni yozishda shaderlarda foydalanish uchun boshqa shunga o'xshash ob'ektlar bilan bog'lanishi mumkin. Bunday guruhlarni yaratish drayverga oldindan zarur tayyorgarlik harakatlarini bajarishga imkon beradi va brauzerga chizilgan qo'ng'iroqlar o'rtasidagi resurs ulanishlarini tezroq o'zgartirishga imkon beradi. Resurs ulanishlarining tartibi GPUBindGroupLayout obyekti yordamida oldindan belgilanishi mumkin.

Firefox tungi tuzilmalari endi WebGPU-ni qo'llab-quvvatlashni o'z ichiga oladi

Firefox-da WebGPU-ni about:config-da yoqish uchun “dom.webgpu.enabled” sozlamasi mavjud. CanvasContext renderlash ham kompozitsiyani yoqishni talab qiladi WebRender ("gfx.webrender.all" about:config ichida), Rust-da yozilgan va sahifa kontentini GPUga ko'rsatish operatsiyalarini autsorsing. WebGPU amalga oshirish loyiha kodiga asoslangan
wgpu, Rust tilida yozilgan va Linux, Android, Windows va macOS’da DX12, Vulkan va Metal API’lar ustida ishlashga qodir (DX11 va OpenGL ES 3.0 qo‘llab-quvvatlash ham ishlab chiqilmoqda). Bunga parallel ravishda Google yana bir dasturni ishlab chiqmoqda, u mavjud Kanareyka filiali Chromium va "chrome://flags/#enable-unsafe-webgpu" bayrog'i yordamida yoqilgan, ammo hozircha faqat macOS va Windows tizimlarida ishlaydi.

Manba: opennet.ru

a Izoh qo'shish