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

Razvojni programeri GTK biblioteke najavili su dostupnost dva nova renderirajuća mehanizma - "ngl" i "vulkan" - koji koriste OpenGL (GL 3.3+ i GLES 3.0+) i Vulkan grafičke API-je. Novi mehanizmi uključeni su u eksperimentalno izdanje GTK 4.13.6. U eksperimentalnoj grani GTK, ngl renderirajući mehanizam sada se koristi prema zadanim postavkama, ali ako se uoče značajni problemi, stariji renderirajući mehanizam "gl" bit će vraćen na sljedeće stabilno izdanje, 4.14.

Novi engine-i su pozicionirani kao ujedinjeni i izgrađeni iz jedne kodne baze. Ovo ujedinjenje temelji se na Vulkan API-ju, na kojem je stvoren zaseban sloj apstrakcije za OpenGL, uzimajući u obzir razlike između OpenGL-a i Vulkana. Ovaj pristup omogućio je oba engine-a da koriste zajedničku infrastrukturu za obradu grafova scene, transformacije, keširanje tekstura i keširanje glifova. Ovo ujedinjenje također je značajno pojednostavilo održavanje kodnih baza oba engine-a, održavajući ih ažurnima i sinkroniziranima.

Za razliku od starog "gl" engine-a, koji je koristio zaseban jednostavni shader za svaku vrstu rendernode-a i periodički mijenjao redoslijed podataka tijekom renderiranja izvan ekrana, novi engine-i zamjenjuju renderiranje izvan ekrana složenim shaderom (ubershaderom) koji interpretira podatke iz međuspremnika. U svom trenutnom obliku, nova implementacija i dalje zaostaje za starom u smislu optimizacija, jer se primarni fokus u ovoj fazi prebacuje s ispravnog rada i jednostavnosti održavanja.

Nove značajke koje nedostaju u starom "gl" engineu:

  • Zaglađ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
  • Generirajte prilagođene gradijente koji mogu koristiti bilo koji broj boja i anti-aliasing (u gl engineu podržani su samo linearni, radijalni i konusni gradijenti sa 6 zaustavljanja boja).
    Novi motori za renderiranje za OpenGL i Vulkan dodani su GTK-u
  • Frakcijsko skaliranje, koje vam omogućuje postavljanje vrijednosti skaliranja koje nisu cjelobrojne, na primjer, kada koristite skalu od 125% za prozor veličine 1200x800, bit će dodijeljen međuspremnik veličine 1500x1000, a ne 2400x1600 kao u starom engineu.
  • Podrška za DMA-BUF tehnologiju za korištenje više GPU-a i preusmjeravanje pojedinačnih operacija na drugi GPU.
  • Mnogi čvorovi za renderiranje koji su bili problematični u staroj implementaciji sada se ispravno obrađuju.

Ograničenja novih motora uključuju nedostatak podrške za frakcijsko pozicioniranje i glshader čvorove, koji su uvelike ovisili o značajkama starog motora i više nisu bili potrebni nakon dodavanja podrške za čvorove maske i teksture s transparentnošću. Spominje se i mogućnost potencijalnih problema s grafičkim upravljačkim programima zbog promjene u rukovanju upravljačkim programima.

U budućnosti nije isključeno stvaranje rendering engine-ova korištenjem Metala u novom unificiranom modelu. macOS i DirectX u Windows, ali stvaranje takvih motora komplicirano je korištenjem drugih jezika za shadere (motori "ngl" i "vulkan" koriste GLSL jezik, pa ćete za Metal i Direct morati ili duplicirati shadere ili koristiti sloj temeljen na SPIRV-Cross alatima).

Budući planovi uključuju HDR podršku i pravilno upravljanje bojama, renderiranje putanja temeljeno na GPU-u, renderiranje glifova, renderiranje izvan glavne niti i optimizacije performansi za starije i slabije uređaje. Trenutno su performanse Vulkan engine-a bliske onima starijeg GL engine-a. NGL engine zaostaje za starijim GL engine-om po performansama, ali njegove trenutne performanse su dovoljne za renderiranje pri 60 ili 144 FPS. Očekuje se da će se to poboljšati nakon optimizacije.

Izvor: opennet.ru

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