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

Programeri GTK biblioteke najavili su dostupnost dva nova mehanizma za renderovanje - “ngl” i “vulkan”, koristeći OpenGL (GL 3.3+ i GLES 3.0+) i Vulkan grafičke API-je. Novi motori su uključeni u eksperimentalno izdanje GTK 4.13.6. U eksperimentalnoj GTK grani, ngl motor se sada koristi po defaultu, ali ako se identifikuju značajni problemi u sljedećoj stabilnoj grani 4.14, stari "gl" mehanizam za renderiranje će biti vraćen.

Novi motori su pozicionirani kao objedinjeni i sastavljeni iz jedne baze koda. Suština objedinjavanja je da se kao osnova koristi Vulkan API, povrh kojeg je kreiran poseban nivo apstrakcije za OpenGL, uzimajući u obzir razlike između OpenGL-a i Vulkana. Ovaj pristup je omogućio korištenje zajedničke infrastrukture u oba motora za obradu grafa scene, transformacije, keširanje tekstura i glifova. Unifikacija je također značajno pojednostavila održavanje kodne baze oba motora i njihovo ažuriranje i sinhronizaciju.

Za razliku od starog gl engine-a, koji je koristio zaseban jednostavan shader za svaki tip rendernog čvora i periodično resortirao podatke tokom renderiranja van ekrana, novi motori umjesto renderiranja van ekrana koriste složeni shader (ubershader) koji interpretira podatke iz bafera . U sadašnjem obliku, nova implementacija i dalje zaostaje za starom po nivou optimizacije, budući da je glavni fokus u trenutnoj fazi na ispravnom radu i jednostavnosti održavanja.

Nove funkcije koje nedostaju u starom gl motoru:

  • Izglađivanje kontura - omogućava vam da sačuvate fine detalje i postignete glatkije konture.
    GTK-u su dodani novi motori za renderiranje za OpenGL i Vulkan
  • Formiranje proizvoljnih gradijenata, koji mogu koristiti bilo koji broj boja i anti-aliasing (u gl engine-u su podržani samo linearni, radijalni i konusni gradijenti sa 6 stop boja).
    GTK-u su dodani novi motori za renderiranje za OpenGL i Vulkan
  • Frakciona skala, koja vam omogućava da postavite vrednosti skale koje nisu celobrojne, na primer, kada koristite skalu od 125% za prozor od 1200x800, dodeliće se bafer od 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 za renderiranje koji su imali probleme u staroj implementaciji su ispravno obrađeni.

Ograničenja novih motora uključuju nedostatak podrške za pozicioniranje po necjelobrojnim vrijednostima (frakciona pozicija) i glshader čvorovima, koji su bili jako povezani sa karakteristikama starog motora, a koji više nisu bili potrebni nakon dodavanja podrške za čvorovi sa maskama (maska) i teksture sa prozirnošću. Napominje se i da postoji mogućnost mogućih problema sa grafičkim drajverima zbog promjena u načinu rada sa drajverima.

U budućnosti, na osnovu novog unificiranog modela, nije isključeno kreiranje mehanizama za renderiranje pomoću Metala u macOS-u i DirectX-a u Windows-u, ali je stvaranje takvih motora komplicirano upotrebom drugih jezika za shadere („ngl ” i “vulkan” motori koriste GLSL jezik, tako da će za Metal i Direct morati ili duplicirati shadere ili koristiti sloj baziran na SPIRV-Cross kompletu alata).

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, off-stream renderiranje i optimizacije performansi za starije uređaje i uređaje male potrošnje. U svom sadašnjem obliku, performanse "vulkan" motora su bliske performansama starog "gl" motora. "ngl" motor je inferioran u performansama od starog "gl" motora, ali su dostupne performanse dovoljne za renderiranje pri 60 ili 144 FPS. Očekuje se da će se situacija promijeniti nakon optimizacije.

izvor: opennet.ru

Dodajte komentar