Do GTK boli pridané nové vykresľovacie enginy pre OpenGL a Vulkan

Vývojári knižnice GTK oznámili dostupnosť dvoch nových vykresľovacích motorov – „ngl“ a „vulkan“, ktoré využívajú rozhrania OpenGL (GL 3.3+ a GLES 3.0+) a grafické rozhranie Vulkan. Nové motory sú zahrnuté v experimentálnom vydaní GTK 4.13.6. V experimentálnej vetve GTK sa teraz štandardne používa jadro ngl, ale ak sa v ďalšej stabilnej vetve 4.14 zistia významné problémy, vráti sa staré vykresľovacie jadro „gl“.

Nové motory sú umiestnené ako jednotné a zostavené z jedného kódového základu. Podstatou zjednotenia je, že ako základ je použité Vulkan API, nad ktorým bola vytvorená samostatná úroveň abstrakcie pre OpenGL, zohľadňujúca rozdiely medzi OpenGL a Vulkan. Tento prístup umožnil použiť spoločnú infraštruktúru v oboch motoroch na spracovanie grafu scény, transformácií, ukladanie textúr a glyfov do vyrovnávacej pamäte. Zjednotenie tiež výrazne zjednodušilo údržbu kódovej základne oboch motorov a ich udržiavanie aktuálne a synchronizované.

Na rozdiel od starého enginu gl, ktorý používal samostatný jednoduchý shader pre každý typ renderovacieho uzla a pravidelne preraďoval údaje počas vykresľovania mimo obrazovky, nové motory namiesto vykresľovania mimo obrazovky používajú komplexný shader (ubershader), ktorý interpretuje údaje z vyrovnávacej pamäte. . V súčasnej podobe nová implementácia stále zaostáva za starou, čo sa týka úrovne optimalizácií, keďže hlavný dôraz sa v súčasnej fáze kladie na správnu prevádzku a jednoduchosť údržby.

Nové funkcie, ktoré v starom gl engine chýbajú:

  • Vyhladenie obrysov - umožňuje zachovať jemné detaily a dosiahnuť hladšie obrysy.
    Do GTK boli pridané nové vykresľovacie enginy pre OpenGL a Vulkan
  • Vytváranie ľubovoľných prechodov, ktoré môžu používať ľubovoľný počet farieb a antialiasing (v gl engine boli podporované iba lineárne, radiálne a kónické prechody so 6 stop farbami).
    Do GTK boli pridané nové vykresľovacie enginy pre OpenGL a Vulkan
  • Zlomková mierka, ktorá vám umožňuje nastaviť neceločíselné hodnoty mierky, napríklad pri použití mierky 125 % pre okno 1200x800 sa pridelí vyrovnávacia pamäť 1500x1000 a nie 2400x1600 ako v starom engine.
  • Podpora technológie DMA-BUF pre použitie viacerých GPU a presunutie jednotlivých operácií na iný GPU.
  • Mnohé vykresľovacie uzly, ktoré mali problémy v starej implementácii, sú spracované správne.

Obmedzenia nových motorov zahŕňajú nedostatočnú podporu pre určovanie polohy podľa neceločíselných hodnôt (zlomková pozícia) a uzlov glshader, ktoré boli silne spojené s funkciami starého motora a ktoré už neboli potrebné po pridaní podpory pre uzly s maskami (maska) a textúrami s priehľadnosťou. Spomína sa tiež, že existuje možnosť možných problémov s ovládačmi grafiky vznikajúcich v dôsledku zmien v spôsobe práce s ovládačmi.

V budúcnosti na základe nového jednotného modelu nie je vylúčené vytváranie vykresľovacích motorov pomocou Metal v macOS a DirectX vo Windows, ale vytváranie takýchto motorov je komplikované používaním iných jazykov pre shadery („ngl “ a “vulkan” motory používajú jazyk GLSL, takže pre Metal a Direct budete musieť buď duplikovať shadery, alebo použiť vrstvu založenú na súprave nástrojov SPIRV-Cross).

Plány do budúcnosti zahŕňajú poskytovanie podpory HDR a nástrojov na správnu správu farieb, podporu vykresľovania Path na strane GPU, schopnosť vykresľovať glyfy, vykresľovanie mimo stream a optimalizáciu výkonu pre staršie zariadenia a zariadenia s nízkou spotrebou. V súčasnej podobe je výkon motora „vulkan“ blízky výkonu starého „gl“ motora. Motor „ngl“ má horší výkon ako starý motor „gl“, ale dostupný výkon je dostatočný na vykresľovanie pri 60 alebo 144 FPS. Očakáva sa, že po optimalizácii sa situácia zmení.

Zdroj: opennet.ru

Pridať komentár