V GTK so bili dodani novi upodabljajoči motorji za OpenGL in Vulkan

Razvijalci knjižnice GTK so objavili razpoložljivost dveh novih mehanizmov za upodabljanje - "ngl" in "vulkan", ki uporabljata OpenGL (GL 3.3+ in GLES 3.0+) in grafične API-je Vulkan. Novi motorji so vključeni v poskusno izdajo GTK 4.13.6. V poskusni veji GTK se zdaj privzeto uporablja mehanizem ngl, če pa se v naslednji stabilni veji 4.14 odkrijejo večje težave, bo vrnjen stari mehanizem upodabljanja "gl".

Novi motorji so postavljeni kot enotni in sestavljeni iz ene kodne baze. Bistvo poenotenja je v tem, da se kot osnova uporabi Vulkan API, na vrhu pa je za OpenGL ustvarjen ločen nivo abstrakcije, ki upošteva razlike med OpenGL in Vulkanom. Ta pristop je omogočil uporabo skupne infrastrukture v obeh motorjih za obdelavo grafa scene, transformacije, predpomnjenje tekstur in glifov. Poenotenje je tudi bistveno poenostavilo vzdrževanje kodne baze obeh motorjev ter njihovo posodabljanje in sinhronizacijo.

Za razliko od starega mehanizma gl, ki je uporabljal ločeno preprosto senčilo za vsako vrsto vozlišča upodabljanja in občasno ponovno razvrščal podatke med upodabljanjem zunaj zaslona, ​​novi motorji namesto upodabljanja zunaj zaslona uporabljajo zapleteno senčilo (ubershader), ki interpretira podatke iz medpomnilnika . Nova izvedba v trenutni obliki še vedno zaostaja za staro po stopnji optimizacij, saj je v trenutni fazi glavni poudarek na pravilnem delovanju in enostavnosti vzdrževanja.

Nove funkcije, ki manjkajo v starem motorju gl:

  • Glajenje obrisov - omogoča ohranjanje drobnih podrobnosti in doseganje bolj gladkih obrisov.
    V GTK so bili dodani novi upodabljajoči motorji za OpenGL in Vulkan
  • Oblikovanje poljubnih gradientov, ki lahko uporabljajo poljubno število barv in anti-aliasing (v motorju gl so bili podprti samo linearni, radialni in konični gradienti s 6 stop barvami).
    V GTK so bili dodani novi upodabljajoči motorji za OpenGL in Vulkan
  • Frakcijsko merilo, ki vam omogoča nastavitev neceloštevilskih vrednosti merila, na primer pri uporabi merila 125 % za okno 1200x800 bo dodeljen medpomnilnik 1500x1000 in ne 2400x1600 kot v starem motorju.
  • Podpora za tehnologijo DMA-BUF za uporabo več grafičnih procesorjev in prenos posameznih operacij na drug grafični procesor.
  • Številna upodabljajoča vozlišča, ki so imela težave v stari izvedbi, so pravilno obdelana.

Omejitve novih motorjev vključujejo pomanjkanje podpore za pozicioniranje z necelimi vrednostmi (frakcijski položaj) in vozlišča glshader, ki so bila močno vezana na funkcije starega motorja in ki niso bila več potrebna po dodajanju podpore za vozlišča z maskami (mask) in teksture s prosojnostjo. Omenjeno je tudi, da obstaja možnost morebitnih težav z grafičnimi gonilniki, ki nastanejo zaradi sprememb v načinu dela z gonilniki.

V prihodnosti na podlagi novega poenotenega modela ni izključena izdelava upodabljajočih mehanizmov z uporabo Metala v macOS in DirectX v sistemu Windows, vendar je izdelava takšnih motorjev zapletena zaradi uporabe drugih jezikov za senčnike (angl. « in »vulkan« motorja uporabljata jezik GLSL, tako da bosta morala za Metal in Direct podvojiti senčnike ali uporabiti plast, ki temelji na kompletu orodij SPIRV-Cross).

Prihodnji načrti vključujejo zagotavljanje podpore za HDR in orodij za pravilno upravljanje barv, podporo za upodabljanje poti na strani GPU, zmožnost upodabljanja glifov, upodabljanje zunaj toka in optimizacije delovanja za starejše naprave in naprave z nizko porabo energije. V sedanji obliki je zmogljivost motorja "vulkan" blizu zmogljivosti starega motorja "gl". Motor "ngl" je po zmogljivosti slabši od starega motorja "gl", vendar razpoložljiva zmogljivost zadostuje za upodabljanje pri 60 ali 144 FPS. Pričakovati je, da se bo stanje po optimizaciji spremenilo.

Vir: opennet.ru

Dodaj komentar