Chrome brauzerida WebGPU yordami yoqiladi

Google 113-mayga chiqishi rejalashtirilgan Chrome 2-ga WebGPU grafik API va WGSL (WebGPU Shading Language) uchun standart qo‘llab-quvvatlash qo‘shilganini e’lon qildi. WebGPU ko'rsatish va hisoblash kabi GPU tomonidagi operatsiyalarni bajarish uchun Vulkan, Metal va Direct3D 12 ga o'xshash dasturlash interfeysini taqdim etadi, shuningdek, GPU tomonida ishlaydigan dasturlarni yozish uchun shader tilidan foydalanishga imkon beradi. WebGPU ilovasi dastlab faqat ChromeOS, macOS va Windows tuzilmalarida yoqiladi. Linux va Android uchun WebGPU yordami keyinroq faollashadi.

Chrome’dan tashqari, WebGPU’ni eksperimental qo‘llab-quvvatlash 2020-yil aprelidan Firefox’da va 2021-yil noyabridan Safari’da sinovdan o‘tkazildi. Firefox-da WebGPU-ni yoqish uchun about:config-da dom.webgpu.enabled va gfx.webgpu.force-yoqilgan bayroqlarni o'rnatishingiz kerak. Firefox va Safari’da WebGPU’ni sukut bo‘yicha yoqish hali rejalari yo‘q. Firefox va Chrome uchun ishlab chiqilgan WebGPU ilovalari alohida kutubxonalar shaklida mavjud - Dawn (C++) va wgpu (Rust), ulardan WebGPU yordamini ilovalaringizga integratsiya qilish uchun ishlatishingiz mumkin. Bundan tashqari, WebGL-dan foydalanadigan mashhur JavaScript kutubxonalariga WebGPU yordamini qo'shish bo'yicha ish olib borilmoqda. Masalan, WebGPU-ni to‘liq qo‘llab-quvvatlash Babylon.js-da, qisman qo‘llab-quvvatlash Three.js, PlayCanvas va TensorFlow.js-da e’lon qilingan.

Kontseptual jihatdan, WebGPU WebGL-dan Vulkan grafik API OpenGL-dan farq qiladigan darajada farq qiladi, lekin WebGPU ma'lum bir grafik API-ga asoslanmagan, lekin Vulkan, Metal va ilovalarida joylashgan bir xil past darajadagi primitivlardan foydalanadigan universal qatlamdir. Direct3D. WebGPU JavaScript ilovalarini tashkil etish, qayta ishlash va buyruqlarni GPUga uzatish, tegishli resurslarni, xotirani, buferlarni, tekstura ob'ektlarini va kompilyatsiya qilingan grafik shaderlarni boshqarishni past darajadagi boshqarish 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-dan to'g'ridan-to'g'ri foydalanadigan, lekin ma'lum platformalarga bog'liq bo'lmagan mustaqil dasturlardan yomonroq bo'lmagan murakkab 3D loyihalarni yaratishga imkon beradi. WebGPU, shuningdek, mahalliy grafik dasturlarni WebAssembly-ga kompilyatsiya qilish orqali veb-yoqilgan shaklga ko'chirish uchun qo'shimcha imkoniyatlarni taqdim etadi. 3D grafikadan tashqari, WebGPU GPU-ga hisob-kitoblarni tushirish va shaderlarni bajarish bilan bog'liq imkoniyatlarni ham o'z ichiga oladi.

WebGPU-ning asosiy xususiyatlari:

  • Resurslarni alohida boshqarish, tayyorgarlik ishlari va buyruqlarni GPU-ga uzatish (WebGL-da bir vaqtning o'zida bitta ob'ekt hamma narsa uchun 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 resurs yaratish va tayyorlash operatsiyalarini turli ish zarrachalarida ishlashi mumkin bo'lgan turli ishlov beruvchilarga ajratishni osonlashtiradi.
  • Qayta ishlash holatlariga boshqacha yondashuv. WebGPU ikkita ob'ektni taklif qiladi - GPURenderPipeline va GPUComputePipeline, ular ishlab chiquvchi tomonidan oldindan belgilangan turli xil 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 maketlari, yopishqoq guruh sxemalari, aralashtirish, chuqurlik va naqshlar va renderdan keyingi chiqish formatlari.
  • Vulkanning resurslarni guruhlash xususiyatlariga o'xshash majburiy model. 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 orasidagi manba ulanishlarini tezroq o'zgartirishga imkon beradi. Resurs ulanishlarining tartibi GPUBindGroupLayout obyekti yordamida oldindan belgilanishi mumkin.

Manba: opennet.ru

a Izoh qo'shish