У GTK дададзены новыя рухавічкі адмалёўкі для OpenGL і Vulkan.

Распрацоўнікі бібліятэкі GTK абвясцілі аб гатовасці двух новых рухавічкоў адмалёўкі – "ngl" і "vulkan", якія выкарыстоўваюць графічныя API OpenGL (GL 3.3+ і GLES 3.0+) і Vulkan. Новыя рухавікі ўключаны ў склад эксперыментальнага выпуску GTK 4.13.6. У эксперыментальнай галінкі GTK рухавічок ngl зараз выкарыстоўваецца па змаўчанні, але ў выпадку выяўлення значных праблем у наступнай стабільнай галінцы 4.14 будзе вернуты стары рухавічок адмалёўкі "gl".

Новыя рухавікі пазіцыянуюцца як уніфікаваныя і збіраныя з адзінай кодавай базы. Сутнасць уніфікацыі ў тым, што ў якасці асновы выкарыстоўваецца API Vulkan, па-над якім для OpenGL створаны асобны ўзровень абстракцыі, які ўлічвае адрозненні паміж OpenGL і Vulkan. Падобны падыход дазволіў задзейнічаць у абодвух рухавіках агульную інфраструктуру для апрацоўкі графа сцэны (scene graph), трансфармацый, кэшавання тэкстур і гліфаў. Уніфікацыя таксама прыкметна спрасціла суправаджэнне кодавай базы абодвух рухавікоў і іх падтрыманне ў актуальным і сінхранізаваны стане.

У адрозненне ад старога рухавічка «gl», у якім для кожнага тыпу вузлоў рэндэрынгу (rendernode) выкарыстоўваўся асобны просты шэйдар і выконвалася перыядычная перасарціроўка дадзеных пры закадравым рэндэрынгу (offscreen), у новых рухавічках замест закадравага рэндэрынгу ўжываецца складаны шэйдар (ubershader). з буфера. У бягучым выглядзе новая рэалізацыя пакуль адстае ад старой па ўзроўні аптымізацый, бо асноўная ўвага на бягучай стадыі выдаляецца карэктнасці працы і прастаце суправаджэння.

Новыя магчымасці, якія адсутнічаюць у старым рухавічку "gl":

  • Згладжванне контураў - дазваляе захаваць дробныя дэталі і дабіцца адмалёўкі больш роўных контураў.
    У GTK дададзены новыя рухавічкі адмалёўкі для OpenGL і Vulkan.
  • Фарміраванне адвольных градыентаў, у якіх можа выкарыстоўвацца любы лік кветак і згладжванне (у рухавічку "gl" падтрымліваліся толькі лінейныя, радыяльныя і канічныя градыенты c 6 кветкамі прыпынку).
    У GTK дададзены новыя рухавічкі адмалёўкі для OpenGL і Vulkan.
  • Дробнае маштабаванне (fractional scale), якое дазваляе выстаўляць няцэлыя значэнні маштабу, напрыклад, пры выкарыстанні маштабу 125% для акна 1200×800 будзе выдзелены буфер 1500×1000, а не 2400×1600 як у старым рухавічку.
  • Падтрымка тэхналогіі DMA-BUF для выкарыстання некалькіх GPU і вынасу асобных аперацый на іншы GPU.
  • Карэктна апрацоўваюцца многія вузлы рэндэрынгу, з якімі былі праблемы ў старой рэалізацыі.

Да абмежаванняў новых рухавікоў аднесена адсутнасць падтрымкі пазіцыянавання па няцэлых значэннях (fractional position) і вузлоў glshader, якія былі моцна завязаныя на асаблівасцях старога рухавічка, і ў якіх знікла неабходнасць пасля дадання падтрымка вузлоў з маскамі (mask) і тэкстур з празрыстасцю. Таксама згадваецца наяўнасць верагоднасці ўсплывання магчымых праблем з графічнымі драйверамі, абумоўленых зменай метаду працы з драйверамі.

У будучыні на базе новай уніфікаванай мадэлі не выключаецца стварэнне рухавікоў адмалёўкі, якія выкарыстоўваюць Metal у macOS і DirectX у Windows, але стварэнне падобных рухавікоў абцяжарана выкарыстаннем іншых моў для шэйдараў (у рухавіках "ngl" і "vulkan" задзейнічаны мова GLSL, таму для Metal і Direct прыйдзецца або дубляваць шэйдары, або выкарыстоўваць праслойку на базе інструментара SPIRV-Cross).

З планаў на будучыню згадваецца забеспячэнне падтрымкі HDR і сродкаў для карэктнага кіравання колерам, падтрымка шляху рэндэрынгу (Path rendering) на баку GPU, магчымасць рэндэрынгу гліфаў, рэндэрынгу па-за асноўным патокам і аптымізацыя прадукцыйнасці для старых і маламагутных прылад. У бягучым выглядзе прадукцыйнасць рухавічка "vulkan" блізкая да прадукцыйнасці старога рухавічка "gl". Рухавічок "ngl" адстае па прадукцыйнасці ад старога рухавічка "gl", але наяўных паказчыкаў дастаткова для адмалёўкі з частатой 60 або 144 FPS. Прадугледжваецца, што сітуацыя зменіцца пасля правядзення аптымізацыі.

Крыніца: opennet.ru

Дадаць каментар