W3C WebGPU standarti loyihasini taqdim etadi

W3C WebGPU va WebGPU Shading Language (WGSL) spetsifikatsiyalarining birinchi loyihalarini chiqardi, ular renderlash va hisoblash kabi GPU operatsiyalarini bajarish uchun API-larni, shuningdek GPUda ishlaydigan dasturlarni yozish uchun shader tilini belgilaydi. kontseptual jihatdan Vulkan, Metal va Direct3D 12 API-lariga o'xshash.Spesifikasiyalar Mozilla, Google, Apple va Microsoft muhandislarini o'z ichiga olgan ishchi guruh tomonidan tayyorlangan.

Kontseptual jihatdan, WebGPU WebGL-dan xuddi Vulkan grafik API OpenGL-dan farq qiladigan tarzda farq qiladi, lekin u ma'lum bir grafik API-ga asoslanmagan, lekin Vulkan, Metal va ilovalarda 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-ga to'g'ridan-to'g'ri kiradigan, lekin ma'lum platformalarga bog'lanmagan mustaqil dasturlardan yomonroq ishlaydigan 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