U GTK su dodani novi render motori za OpenGL i Vulkan

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.
    U GTK su dodani novi render motori za OpenGL i Vulkan
  • 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).
    U GTK su dodani novi render motori za OpenGL i Vulkan
  • 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

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster