Novi motori za renderiranje za OpenGL i Vulkan dodani su GTK-u

Programeri GTK biblioteke najavili su dostupnost dva nova motora za renderiranje - "ngl" i "vulkan", koji koriste OpenGL (GL 3.3+ i GLES 3.0+) i Vulkan grafički API. Novi motori uključeni su u eksperimentalno izdanje GTK 4.13.6. U eksperimentalnoj GTK grani, ngl engine se sada koristi prema zadanim postavkama, ali ako se uoče značajni problemi u sljedećoj stabilnoj grani 4.14, vratit će se stari "gl" motor za renderiranje.

Novi motori postavljeni su kao objedinjeni i sastavljeni iz jedne baze koda. Bit ujedinjenja je da se Vulkan API koristi kao osnova, povrh čega je stvorena zasebna razina apstrakcije za OpenGL, uzimajući u obzir razlike između OpenGL-a i Vulkana. Ovaj pristup omogućio je korištenje zajedničke infrastrukture u oba motora za obradu grafikona scene, transformacije, predmemoriranje tekstura i glifova. Unifikacija je također značajno pojednostavila održavanje baze kodova oba motora i njihovo ažuriranje i sinkronizaciju.

Za razliku od starog gl motora, koji je koristio zaseban jednostavni shader za svaku vrstu čvora renderiranja i povremeno ponovno razvrstavao podatke tijekom renderiranja izvan zaslona, ​​novi motori umjesto renderiranja izvan zaslona koriste složeni shader (ubershader) koji tumači podatke iz međuspremnika . U sadašnjem obliku, nova implementacija još uvijek zaostaje za starom u pogledu razine optimizacija, budući da je glavni fokus u trenutnoj fazi na ispravnom radu i jednostavnosti održavanja.

Nove značajke koje nedostaju starom gl motoru:

  • Izglađivanje kontura - omogućuje vam očuvanje finih detalja i postizanje glatkijih kontura.
    Novi motori za renderiranje za OpenGL i Vulkan dodani su GTK-u
  • Formiranje proizvoljnih gradijenata, koji mogu koristiti bilo koji broj boja i anti-aliasing (u gl motoru podržani su samo linearni, radijalni i konusni gradijenti sa 6 zaustavnih boja).
    Novi motori za renderiranje za OpenGL i Vulkan dodani su GTK-u
  • Frakcijska ljestvica, koja vam omogućuje da postavite necijele vrijednosti ljestvice, na primjer, kada koristite ljestvicu od 125% za prozor od 1200x800, međuspremnik će biti dodijeljen 1500x1000, a ne 2400x1600 kao u starom motoru.
  • Podrška za DMA-BUF tehnologiju za korištenje više GPU-a i prebacivanje pojedinačnih operacija na drugi GPU.
  • Mnogi čvorovi prikazivanja koji su imali problema u staroj implementaciji ispravno su obrađeni.

Ograničenja novih motora uključuju nedostatak podrške za pozicioniranje prema necijelobrojnim vrijednostima (frakcijski položaj) i glshader čvorove, koji su bili snažno vezani uz značajke starog motora, a koji više nisu bili potrebni nakon dodavanja podrške za čvorovi s maskama (maska) i teksture s prozirnošću. Također se navodi da postoji mogućnost mogućih problema s grafičkim drajverima koji nastaju zbog promjena u načinu rada s drajverima.

U budućnosti, na temelju novog unificiranog modela, nije isključena izrada mehanizama za renderiranje pomoću Metala u macOS-u i DirectX-a u sustavu Windows, ali je stvaranje takvih motora komplicirano korištenjem drugih jezika za shadere (engl. ” i “vulkan” motori koriste GLSL jezik, tako da će za Metal i Direct morati ili duplicirati shadere ili koristiti sloj temeljen na SPIRV-Cross alatu).

Budući planovi uključuju pružanje HDR podrške i alata za ispravno upravljanje bojama, podršku za renderiranje putanje na strani GPU-a, mogućnost renderiranja glifova, renderiranje izvan toka i optimizacije performansi za starije uređaje i uređaje niske potrošnje. U sadašnjem obliku, performanse motora "vulkan" bliske su performansama starog motora "gl". "ngl" motor je inferioran u performansama od starog "gl" motora, ali je dostupna izvedba dovoljna za renderiranje pri 60 ili 144 FPS. Očekuje se da će se situacija promijeniti nakon optimizacije.

Izvor: opennet.ru

Dodajte komentar