В GTK добавлены новые движки отрисовки для OpenGL и Vulkan

Razvijalci knjižnice GTK su objavili spremnost dva nova motora za iscrtavanje — „ngl“ i „vulkan“, koji koriste grafičke API-je OpenGL (GL 3.3+ i GLES 3.0+) i Vulkan. Novi motori su uključeni u eksperimentalno izdanje GTK 4.13.6. U eksperimentalnoj grani GTK, motor ngl se sada koristi kao podrazumevani, ali će, ukoliko se otkriju značajni problemi, u sledećoj stabilnoj grani 4.14 biti vraćen stari motor za iscrtavanje „gl“.

Novi motori se pozicioniraju kao ujedinjeni i gradivi iz jedinstvene kodne baze. Suština ujedinjenja je u tome što se kao osnova koristi API Vulkan, na kojem je za OpenGL kreiran poseban nivo apstrakcije, koji uzima u obzir razlike između OpenGL-a i Vulkan-a. Ovaj pristup je omogućio korišćenje zajedničke infrastrukture za obradu grafova scena (scene graph), transformacije, keširanje tekstura i glifova u oba motora. Ujedinjenje je takođe značajno pojednostavilo održavanje kodne baze oba motora i njihovo održavanje u aktuelnom i sinhronizovanom stanju.

Za razliku od starog motora „gl“, u kojem je za svaki tip čvora za renderovanje (rendernode) korišćen poseban jednostavan šejder i izvršena periodična reorganizacija podataka prilikom renderovanja u pozadini (offscreen), u novim motorima umesto pozadinskog renderovanja se koristi složeni šejder (ubershader), koji interpretira podatke iz bafera. U trenutnoj verziji nova implementacija zaostaje za starom po nivou optimizacija, jer se trenutna faza usredsređuje na ispravnost rada i jednostavnost održavanja.

Nove mogućnosti koje nedostaju starom motoru „gl“:

  • Antialiasing — omogućava zadržavanje sitnih detalja i postizanje ravnijih kontura.
    В GTK добавлены новые движки отрисовки для OpenGL и Vulkan
  • Formiranje proizvoljnih gradijenata, u kojima može biti korišćeno bilo koji broj boja i antialiasing (u motoru „gl“ su podržani samo linearni, radijalni i konični gradijenti sa 6 boja zaustavljanja).
    В GTK добавлены новые движки отрисовки для OpenGL и Vulkan
  • Fragmentarno skaliranje (fractional scale), koje omogućava postavljanje necelih vrednosti skale, na primer, prilikom korišćenja skale 125% za prozor 1200×800 biće izdvojen bafer 1500×1000, a ne 2400×1600 kao u starom motoru.
  • Podrška za tehnologiju DMA-BUF za korišćenje više GPU-a i izvođenje pojedinačnih operacija na drugom GPU-u.
  • Mnogi rendering čvorovi se ispravno obrađuju, koji su sa starom implementacijom imali problema.

Među ograničenja novih enginea spada nedostatak podrške za pozicioniranje prema necelim vrednostima (fractional position) i glshader čvorove, koji su bili jako vezani za osobine starog enginea, a čija je potreba nestala nakon dodavanja podrške za čvorove sa maskama (mask) i teksture sa prozirnošću. Takođe se pominje mogućnost pojave problema sa grafičkim drajverima zbog promene metode rada sa drajverima.

U budućnosti se ne isključuje mogućnost kreiranja enginea za renderovanje, koji koriste Metal na macOS-u i DirectX na Windows-u, ali je kreiranje takvih enginea otežano korišćenjem drugih jezika za šedere (u engineima 'ngl' i 'vulkan' koristi se jezik GLSL, pa će za Metal i Direct biti potrebno ili duplicirati shemace ili koristiti sloj zasnovan na SPIRV-Cross alatu).

Među planovima za budućnost pominje se obezbeđivanje podrške za HDR i alate za ispravno upravljanje bojama, podrška za renderovanje putem GPU-a (Path rendering), mogućnost renderovanja glifova, renderovanje van glavnog toka i optimizacija performansi za starije i slabije uređaje. U trenutnoj verziji, performanse 'vulkan' engine-a su blizu performansama starog 'gl' engine-a. 'ngl' engine zaostaje po performansama u odnosu na stari 'gl' engine, ali su trenutni rezultati dovoljni za renderovanje sa brzinom od 60 ili 144 FPS. Predviđa se da će situacija biti drugačija nakon optimizacije.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster