Nije renderingmotoren foar OpenGL en Vulkan binne tafoege oan GTK

De ûntwikkelders fan 'e GTK-bibleteek hawwe de beskikberens oankundige fan twa nije renderingmotoren - "ngl" en "vulkan", mei de OpenGL (GL 3.3+ en GLES 3.0+) en Vulkan-grafyk API's. Nije motoren binne opnommen yn 'e eksperimintele release fan GTK 4.13.6. Yn 'e eksperimintele GTK-tûke wurdt de ngl-motor no standert brûkt, mar as wichtige problemen wurde identifisearre yn' e folgjende stabile tûke 4.14, sil de âlde "gl"-renderingmotor weromjûn wurde.

Nije motoren wurde gepositioneerd as ferienige en gearstald út ien koade basis. De essinsje fan 'e ienwurding is dat de Vulkan API wurdt brûkt as basis, wêrby't in apart abstraksjenivo is makke foar OpenGL, rekken hâldend mei de ferskillen tusken OpenGL en Vulkan. Dizze oanpak makke it mooglik om in mienskiplike ynfrastruktuer yn beide motoren te brûken foar it ferwurkjen fan 'e sênegrafyk, transformaasjes, caching-tekstueren en glyphs. Unifikaasje ek gâns ferienfâldige it ûnderhâld fan de koade basis fan beide motoren en hâlden se aktueel en syngronisearre.

Oars as de âlde gl-motor, dy't in aparte ienfâldige shader brûkte foar elk type renderknooppunt en de gegevens periodyk opnij sorteare tidens offscreen-rendering, brûke de nije motoren ynstee fan offscreen-rendering in komplekse shader (ubershader) dy't de gegevens fan 'e buffer ynterpretearret . Yn syn hjoeddeistige foarm bliuwt de nije ymplemintaasje noch efter de âlde yn termen fan it nivo fan optimisaasjes, om't it haadfokus yn 'e hjoeddeistige poadium is op juste operaasje en maklik ûnderhâld.

Nije funksjes dy't ûntbrekke yn 'e âlde gl-motor:

  • Kontur glêdjen - kinne jo fine details behâlde en soepelere kontoeren berikke.
    Nije renderingmotoren foar OpenGL en Vulkan binne tafoege oan GTK
  • Formaasje fan willekeurige gradiënten, dy't elk oantal kleuren en anty-aliasing kinne brûke (yn 'e gl-motor waarden allinich lineêre, radiale en konyske gradienten mei 6 stopkleuren stipe).
    Nije renderingmotoren foar OpenGL en Vulkan binne tafoege oan GTK
  • Fraksjonele skaal, wêrtroch jo net-integer skaalwearden kinne ynstelle, bygelyks by it brûken fan in skaal fan 125% foar in finster fan 1200x800, sil in buffer fan 1500x1000 wurde tawiisd, en net 2400x1600 lykas yn 'e âlde motor.
  • Stipe foar DMA-BUF-technology foar it brûken fan meardere GPU's en it ôfladen fan yndividuele operaasjes nei in oare GPU.
  • In protte renderingsknooppunten dy't problemen hiene yn 'e âlde ymplemintaasje wurde korrekt ferwurke.

De beheiningen fan 'e nije motoren omfetsje it gebrek oan stipe foar posysjonearring troch net-integerwearden (fraksjeposysje) en glshader-knooppunten, dy't swier bûn wiene oan' e funksjes fan 'e âlde motor, en dy't net mear nedich wiene nei it tafoegjen fan stipe foar knopen mei maskers (masker) en tekstueren mei transparânsje. It wurdt ek neamd dat der in mooglikheid is fan mooglike problemen mei grafyske bestjoerders dy't ûntsteane troch feroaringen yn 'e metoade fan wurkjen mei bestjoerders.

Yn 'e takomst, basearre op it nije ferienige model, is it meitsjen fan renderingsmotoren mei Metal yn macOS en DirectX yn Windows net útsletten, mar it meitsjen fan sokke motoren wurdt komplisearre troch it brûken fan oare talen foar shaders (de "ngl" ” en “vulkan”-motoren brûke de GLSL-taal, dus foar Metal en Direct sille shaders moatte duplisearje of in laach moatte brûke basearre op de SPIRV-Cross toolkit).

Takomstige plannen omfetsje it leverjen fan HDR-stipe en ark foar korrekt kleurbehear, stipe foar Path-rendering oan 'e GPU-kant, de mooglikheid om glyphs te werjaan, off-stream-rendering, en prestaasjesoptimisaasjes foar âldere en lege-power-apparaten. Yn syn hjoeddeiske foarm, de prestaasjes fan 'e "vulkan" motor is ticht by de prestaasjes fan de âlde "gl" motor. De "ngl" motor is inferior yn prestaasjes oan de âlde "gl" motor, mar de beskikbere prestaasjes is genôch foar rendering op 60 of 144 FPS. It wurdt ferwachte dat de situaasje sil feroarje nei optimalisaasje.

Boarne: opennet.ru

Add a comment