Razvijači GTK biblioteke objavili su dostupnost dva nova render motora - "ngl" i "vulkan", koji koriste grafičke API-je OpenGL (GL 3.3+ i GLES 3.0+) i Vulkan. Novi motori uključeni su u eksperimentalno izdanje GTK 4.13.6. U eksperimentalnoj grani GTK, motor ngl se sada koristi kao podrazumijevani, ali će u slučaju značajnih problema u sljedećoj stabilnoj verziji 4.14 biti vraćen stari render motor "gl".
Novi motori se pozicioniraju kao objedinjeni i izgrađeni iz jedinstvene baze koda. Suština objedinjavanja je da se kao osnova koristi API Vulkan, na koji se nadograđuje poseban sloj apstrakcije za OpenGL, uzimajući u obzir razlike između OpenGL i Vulkan. Ovaj pristup omogućava korišćenje zajedničke infrastrukture za obradu grafova scena (scene graph), transformacija, keširanje tekstura i glifova. Objedinjavanje je također značajno pojednostavilo održavanje baze koda oba motora i njihovo održavanje u aktuelnom i sinhronizovanom stanju.
Za razliku od starog motora "gl", u kojem je za svaku vrstu čvora renderiranja (rendernode) korištena posebna jednostavna senka, a podaci su se periodično preuređivali prilikom renderiranja izvan okvira (offscreen), u novim motorima primjenjuje se složena senka (ubershader) koja tumači podatke iz bafera. U trenutnoj verziji nova realizacija još uvijek zaostaje za starom po nivou optimizacija, budući da je trenutno fokus na točnosti rada i jednostavnosti održavanja.
Nove mogućnosti koje nedostaju u starom motoru "gl":
- Antialiasing — omogućava očuvanje sitnih detalja i postizanje glađih kontura.

- Formiranje proizvoljnih gradijenata, u kojima se može koristiti bilo koji broj boja i antialiasing (u motoru "gl" podržani su samo linearni, radijalni i konični gradijenti sa 6 boja zaustavljanja).

- Decimalno skaliranje (fractional scale), što omogućava postavljanje necelih vrednosti skale; na primjer, pri korišćenju skale od 125% za prozor 1200×800 biće dodeljen bafer 1500×1000, a ne 2400×1600 kao u starom motoru.
- Podrška za DMA-BUF tehnologiju za korišćenje više GPU-a i prebacivanje pojedinačnih operacija na drugi GPU.
- Ispravno se obrađuju mnogi čvorovi za renderiranje koji su pravili probleme u staroj implementaciji.
Nova ograničenja uključuju nedostatak podrške za pozicioniranje prema necelim vrijednostima (fractional position) i čvorove glshader, koji su bili snažno vezani uz karakteristike starog motora, i u kojima je nestala potreba nakon dodavanja podrške za čvorove s maske (mask) i teksture s prozirnošću. Također se spominje mogućnost nastanka problema s grafičkim drajverima uzrokovanih promjenom načina rada s drajverima.
U budućnosti se na temelju nove unificirane modela ne isključuje izrada motora za iscrtavanje koji koriste Metal na macOS-u i DirectX na Windowsu, ali je izrada takvih motora otežana korištenjem drugih jezika za shadere (u motorima 'ngl' i 'vulkan' koristi se jezik GLSL, stoga će za Metal i Direct biti potrebno ili duplicirati shadere ili koristiti sloj temeljen na alatu SPIRV-Cross).
Planira se podrška za HDR i sredstava za pravilno upravljanje bojom, podrška za renderiranje putanje (Path rendering) s GPU strane, mogućnost renderiranja glifova, renderiranje izvan glavnog toka i optimizacija performansi za stare i slabe uređaje. U svom trenutnom stanju, performanse motora 'vulkan' su bliske performansama starog motora 'gl'. Motor 'ngl' zaostaje po performansama u odnosu na stari motor 'gl', ali postojeće brojke su dovoljne za renderiranje pri 60 ili 144 FPS. Očekuje se da će se situacija promijeniti nakon optimizacije.
Izvor: opennet.ru

