В
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
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-da WebGPU-ni about:config-da yoqish uchun “dom.webgpu.enabled” sozlamasi mavjud. CanvasContext renderlash ham kompozitsiyani yoqishni talab qiladi
Manba: opennet.ru