S'han afegit nous motors de renderització per a OpenGL i Vulkan a GTK

Els desenvolupadors de la biblioteca GTK han anunciat la disponibilitat de dos nous motors de representació: "ngl" i "vulkan", utilitzant les API de gràfics OpenGL (GL 3.3+ i GLES 3.0+) i Vulkan. S'inclouen nous motors a la versió experimental de GTK 4.13.6. A la branca experimental de GTK, ara s'utilitza el motor ngl per defecte, però si s'identifiquen problemes significatius a la següent branca estable 4.14, es retornarà l'antic motor de representació "gl".

Els nous motors es col·loquen com unificats i es munten a partir d'una única base de codi. L'essència de la unificació és que s'utilitza l'API Vulkan com a base, a sobre de la qual s'ha creat un nivell d'abstracció separat per a OpenGL, tenint en compte les diferències entre OpenGL i Vulkan. Aquest enfocament va permetre utilitzar una infraestructura comuna en ambdós motors per processar el gràfic de l'escena, les transformacions, les textures i els glifos de la memòria cau. La unificació també va simplificar significativament el manteniment de la base de codis d'ambdós motors i mantenir-los actualitzats i sincronitzats.

A diferència de l'antic motor gl, que utilitzava un ombrejat senzill separat per a cada tipus de node de renderització i reordenava periòdicament les dades durant la representació fora de pantalla, els nous motors en lloc de la representació fora de pantalla utilitzen un ombrejat complex (ubershader) que interpreta les dades de la memòria intermèdia. . En la seva forma actual, la nova implementació encara es troba endarrerida de l'antiga pel que fa al nivell d'optimitzacions, ja que l'enfocament principal en l'etapa actual és el funcionament correcte i la facilitat de manteniment.

Noves funcions que falten a l'antic motor gl:

  • Suavització del contorn: us permet preservar detalls fins i aconseguir contorns més suaus.
    S'han afegit nous motors de renderització per a OpenGL i Vulkan a GTK
  • Formació de degradats arbitraris, que poden utilitzar qualsevol nombre de colors i antialiasing (al motor gl, només es suportaven degradats lineals, radials i cònics amb 6 colors de parada).
    S'han afegit nous motors de renderització per a OpenGL i Vulkan a GTK
  • Escala fraccional, que permet establir valors d'escala no enters, per exemple, quan s'utilitza una escala del 125% per a una finestra de 1200x800, s'assignarà un buffer de 1500x1000, i no 2400x1600 com en el motor antic.
  • Compatibilitat amb la tecnologia DMA-BUF per utilitzar diverses GPU i descarregar operacions individuals a una altra GPU.
  • Molts nodes de renderització que tenien problemes en la implementació antiga es processen correctament.

Les limitacions dels nous motors inclouen la manca de suport per al posicionament per valors no enters (posició fraccional) i nodes glshader, que estaven molt lligats a les característiques del motor antic, i que ja no eren necessaris després d'afegir suport per nodes amb màscares (màscara) i textures amb transparència. També s'esmenta que hi ha la possibilitat de possibles problemes amb els controladors gràfics que sorgeixin a causa dels canvis en el mètode de treball amb els controladors.

En el futur, basant-se en el nou model unificat, no s'exclou la creació de motors de renderització amb Metal a macOS i DirectX a Windows, però la creació d'aquests motors es complica amb l'ús d'altres idiomes per a shaders (el "ngl ” i els motors “vulkan” utilitzen el llenguatge GLSL, de manera que per a Metal i Direct hauran de duplicar shaders o utilitzar una capa basada en el conjunt d'eines SPIRV-Cross).

Els plans futurs inclouen proporcionar suport HDR i eines per a una gestió correcta del color, suport per a la representació de Path al costat de la GPU, la capacitat de representar glifos, renderització fora de corrent i optimitzacions de rendiment per a dispositius més antics i de baix consum. En la seva forma actual, el rendiment del motor "vulcan" és proper al rendiment del motor "gl" antic. El motor "ngl" és inferior en rendiment a l'antic motor "gl", però el rendiment disponible és suficient per a la representació a 60 o 144 FPS. S'espera que la situació canviï després de l'optimització.

Font: opennet.ru

Afegeix comentari