GTK-ga OpenGL va Vulkan uchun yangi renderlash dvigatellari qo'shildi

GTK kutubxonasini ishlab chiquvchilar OpenGL (GL 3.3+ va GLES 3.0+) va Vulkan grafik API-laridan foydalangan holda ikkita yangi renderlash dvigatellari - "ngl" va "vulkan" mavjudligini e'lon qilishdi. Yangi dvigatellar GTK 4.13.6 ning eksperimental versiyasiga kiritilgan. Eksperimental GTK tarmog'ida endi ngl dvigateli sukut bo'yicha ishlatiladi, ammo keyingi barqaror 4.14 filialida muhim muammolar aniqlansa, eski "gl" renderlash mexanizmi qaytariladi.

Yangi dvigatellar birlashtirilgan va bitta kod bazasidan yig'ilgan holda joylashtirilgan. Birlashtirishning mohiyati shundaki, Vulkan API asos sifatida ishlatiladi, buning ustiga OpenGL va Vulkan o'rtasidagi farqlarni hisobga olgan holda OpenGL uchun alohida abstraksiya darajasi yaratilgan. Ushbu yondashuv sahna grafigini, transformatsiyalarni, keshlash teksturalarini va gliflarni qayta ishlash uchun ikkala dvigatelda ham umumiy infratuzilmadan foydalanishga imkon berdi. Birlashtirish, shuningdek, ikkala dvigatelning kod bazasini saqlashni va ularni yangilab turish va sinxronlashtirishni sezilarli darajada soddalashtirdi.

Renderlash tugunining har bir turi uchun alohida oddiy shader ishlatadigan va ekrandan tashqari renderlash vaqtida ma’lumotlarni vaqti-vaqti bilan saralab turuvchi eski gl dvigatelidan farqli o‘laroq, yangi dvigatellar ekrandan tashqari ko‘rsatish o‘rniga buferdan ma’lumotlarni sharhlovchi murakkab shaderdan (ubershader) foydalanadi. . Hozirgi shaklda yangi tatbiq optimallashtirish darajasi bo'yicha avvalgisidan ortda qolmoqda, chunki hozirgi bosqichda asosiy e'tibor to'g'ri ishlash va texnik xizmat ko'rsatish qulayligiga qaratilgan.

Eski gl dvigatelida etishmayotgan yangi xususiyatlar:

  • Konturni tekislash - nozik detallarni saqlab qolish va silliq konturlarga erishish imkonini beradi.
    GTK-ga OpenGL va Vulkan uchun yangi renderlash dvigatellari qo'shildi
  • Ixtiyoriy gradientlarni shakllantirish, ular har qanday miqdordagi ranglar va antialiasingdan foydalanishi mumkin (gl dvigatelida faqat 6 ta to'xtash rangga ega chiziqli, radial va konusning gradientlari qo'llab-quvvatlangan).
    GTK-ga OpenGL va Vulkan uchun yangi renderlash dvigatellari qo'shildi
  • Butun son bo'lmagan shkala qiymatlarini o'rnatishga imkon beruvchi kasr shkalasi, masalan, 125x1200 o'lchamdagi oyna uchun 800% shkaladan foydalanganda, eski dvigateldagi kabi 1500x1000 emas, balki 2400x1600 o'lchamdagi bufer ajratiladi.
  • Bir nechta GPU-lardan foydalanish va individual operatsiyalarni boshqa GPU-ga tushirish uchun DMA-BUF texnologiyasini qo'llab-quvvatlash.
  • Eski amalga oshirishda muammolarga duch kelgan ko'plab renderlash tugunlari to'g'ri qayta ishlanadi.

Yangi dvigatellarning cheklovlari butun son bo'lmagan qiymatlar (kasr pozitsiyasi) va glshader tugunlari bo'yicha joylashishni qo'llab-quvvatlamaslikni o'z ichiga oladi, ular eski dvigatelning xususiyatlariga qattiq bog'langan va qo'llab-quvvatlanganidan keyin endi kerak bo'lmagan. niqoblar (niqob) va shaffoflik bilan to'qimalar bilan tugunlar. Shuningdek, drayverlar bilan ishlash uslubidagi o'zgarishlar tufayli grafik drayverlar bilan bog'liq mumkin bo'lgan muammolar paydo bo'lishi ehtimoli borligi ta'kidlangan.

Kelajakda yangi birlashtirilgan model asosida macOS-da Metal va Windows-da DirectX-dan foydalangan holda renderlash dvigatellarini yaratish istisno qilinmaydi, ammo bunday dvigatellarni yaratish shaderlar uchun boshqa tillardan foydalanish bilan murakkablashadi ("ngl"). ” va “vulkan” dvigatellari GLSL tilidan foydalanadi, shuning uchun Metal va Direct uchun shaderlarni takrorlash yoki SPIRV-Cross asboblar to'plamiga asoslangan qatlamdan foydalanish kerak bo'ladi).

Kelajakdagi rejalar HDR-ni qo‘llab-quvvatlash va ranglarni to‘g‘ri boshqarish vositalarini taqdim etishni, GPU tomonida yo‘lni ko‘rsatishni qo‘llab-quvvatlashni, gliflarni ko‘rsatish qobiliyatini, oqimdan tashqari renderlashni va eski va kam quvvatli qurilmalar uchun ish faoliyatini optimallashtirishni o‘z ichiga oladi. Hozirgi shaklda "vulkan" dvigatelining ishlashi eski "gl" dvigatelining ishlashiga yaqin. "ngl" dvigateli unumdorligi jihatidan eski "gl" dvigatelidan pastroq, ammo mavjud unumdorlik 60 yoki 144 FPS tezlikda ishlash uchun etarli. Optimallashtirishdan keyin vaziyat o'zgarishi kutilmoqda.

Manba: opennet.ru

a Izoh qo'shish