GTK:hen on lisätty uudet renderöintikoneet OpenGL:lle ja Vulkanille

GTK-kirjaston kehittäjät ovat ilmoittaneet kahden uuden renderöintikoneen - “ngl” ja “vulkan” saatavuudesta, jotka käyttävät OpenGL- (GL 3.3+ ja GLES 3.0+) ja Vulkan-grafiikkasovellusliittymiä. Uusia moottoreita on mukana GTK 4.13.6:n kokeellisessa julkaisussa. Kokeellisessa GTK-haarassa ngl-moottoria käytetään nyt oletuksena, mutta jos merkittäviä ongelmia havaitaan seuraavassa vakaassa haarassa 4.14, vanha "gl"-renderöintimoottori palautetaan.

Uudet moottorit sijoitetaan yhtenäisiksi ja kootaan yhdestä koodipohjasta. Yhdistämisen ydin on, että pohjana on Vulkan API, jonka päälle on luotu OpenGL:lle erillinen abstraktiotaso, jossa on huomioitu OpenGL:n ja Vulkanin väliset erot. Tämä lähestymistapa mahdollisti yhteisen infrastruktuurin käytön molemmissa moottoreissa kohtauskaavion, muunnosten, välimuistitekstuurien ja kuvioiden käsittelyyn. Yhdistäminen yksinkertaisti myös merkittävästi molempien moottoreiden koodikannan ylläpitoa ja niiden pitämistä ajan tasalla ja synkronoituina.

Toisin kuin vanhassa gl-moottorissa, joka käytti erillistä yksinkertaista varjostajaa jokaiselle renderöintisolmutyypille ja lajitteli tiedot säännöllisesti uudelleen ruudun ulkopuolisen renderöinnin aikana, uudet moottorit käyttävät näytön ulkopuolisen renderöinnin sijaan monimutkaista varjostajaa (ubershader), joka tulkitsee puskurin tiedot. . Nykyisessä muodossaan uusi toteutus jää vielä optimointitasoltaan jälkeen vanhasta, sillä nykyisessä vaiheessa pääpaino on oikeanlaisessa käytössä ja huollon helppoudessa.

Uusia ominaisuuksia, jotka puuttuvat vanhasta gl-moottorista:

  • Ääriviivojen tasoitus – voit säilyttää hienot yksityiskohdat ja saavuttaa tasaisemmat ääriviivat.
    GTK:hen on lisätty uudet renderöintikoneet OpenGL:lle ja Vulkanille
  • Mielivaltaisten gradienttien muodostaminen, joissa voidaan käyttää mitä tahansa määrää värejä ja anti-aliasing (gl-moottorissa tuettiin vain lineaarisia, säteittäisiä ja kartiomaisia ​​gradientteja 6 pysäytysvärillä).
    GTK:hen on lisätty uudet renderöintikoneet OpenGL:lle ja Vulkanille
  • Murtoasteikko, jonka avulla voit asettaa ei-kokonaislukumittakaava-arvoja, esimerkiksi käytettäessä 125 %:n asteikkoa 1200x800 ikkunalle, varataan puskuri 1500x1000, ei 2400x1600 kuten vanhassa moottorissa.
  • Tuki DMA-BUF-teknologialle useiden grafiikkasuorittimien käyttämiseen ja yksittäisten toimintojen siirtämiseen toiseen GPU:hun.
  • Monet renderöintisolmut, joilla oli ongelmia vanhassa toteutuksessa, käsitellään oikein.

Uusien moottoreiden rajoituksia ovat muun muassa ei-kokonaislukuarvojen (murtoluku) ja glshader-solmujen tuen puuttuminen, jotka olivat vahvasti sidoksissa vanhan moottorin ominaisuuksiin ja joita ei enää tarvita tuen lisäämisen jälkeen. solmut maskeilla (maski) ja tekstuurit läpinäkyvyydellä. Mainitaan myös, että on mahdollista, että näytönohjainten kanssa voi syntyä ongelmia, jotka johtuvat ajurien kanssa työskentelytavan muutoksista.

Tulevaisuudessa uuteen yhtenäiseen malliin perustuen renderöintikoneiden luominen Metallin avulla macOS:ssä ja DirectX:llä Windowsissa ei ole poissuljettu, mutta tällaisten moottoreiden luomista vaikeuttaa muiden kielten käyttö varjostimissa ("ngl" " ja "vulkan" -moottorit käyttävät GLSL-kieltä, joten Metalin ja Directin on joko kopioitava varjostimet tai käytettävä kerrosta, joka perustuu SPIRV-Cross-työkalupakettiin).

Tulevaisuuden suunnitelmiin kuuluu HDR-tuen ja työkalujen tarjoaminen oikeaan värinhallintaan, tuki polun hahmonnukseen GPU-puolella, kyky renderöidä kuvioita, off-stream renderöinti ja suorituskyvyn optimointi vanhoille ja vähän virtaa käyttäville laitteille. Nykyisessä muodossaan "vulkan"-moottorin suorituskyky on lähellä vanhan "gl"-moottorin suorituskykyä. "ngl"-moottori on suorituskyvyltään huonompi kuin vanha "gl"-moottori, mutta käytettävissä oleva suorituskyky riittää renderöimiseen 60 tai 144 FPS:llä. Tilanteen odotetaan muuttuvan optimoinnin jälkeen.

Lähde: opennet.ru

Lisää kommentti