I novi motori di rendering per OpenGL è Vulkan sò stati aghjuntu à GTK

I sviluppatori di a biblioteca GTK anu annunziatu a dispunibilità di dui novi motori di rendering - "ngl" è "vulkan", utilizendu l'API di grafica OpenGL (GL 3.3+ è GLES 3.0+) è Vulkan. I novi mutori sò inclusi in a versione sperimentale di GTK 4.13.6. In u ramu sperimentale GTK, u mutore ngl hè oghji utilizatu per automaticamente, ma se i prublemi significativi sò identificati in u prossimu ramu stabile 4.14, u vechju mutore di rendering "gl" serà tornatu.

I novi mutori sò posizionati cum'è unificati è assemblati da una sola basa di codice. L'essenza di l'unificazione hè chì l'API Vulkan hè aduprata cum'è a basa, sopra à quale un livellu di astrazione separatu hè statu creatu per OpenGL, tenendu in contu e diffirenzii trà OpenGL è Vulkan. Stu approcciu hà permessu di utilizà una infrastruttura cumuna in i dui motori per processà u graficu di scena, trasfurmazioni, caching textures è glifi. L'unificazione hà ancu simplificatu significativamente u mantenimentu di a basa di codice di i dui motori è mantenenduli aghjurnati è sincronizati.

A cuntrariu di u vechju mutore gl, chì usava un shader simplice separatu per ogni tipu di node di rendering è periodicamente riordinava i dati durante u rendering offscreen, i novi motori invece di rendering offscreen utilizanu un shader cumplessu (ubershader) chì interpreta i dati da u buffer. . In a so forma attuale, a nova implementazione resta sempre daretu à l'antica in quantu à u livellu di ottimisazioni, postu chì l'enfasi principale in u stadiu attuale hè nantu à u funziunamentu currettu è a facilità di mantenimentu.

Funzioni novi chì mancanu in u vechju mutore gl:

  • Lisciatura di i contorni - permette di priservà i dettagli fini è ottene contorni più lisci.
    I novi motori di rendering per OpenGL è Vulkan sò stati aghjuntu à GTK
  • Formazione di gradienti arbitrarii, chì ponu utilizà ogni quantità di culori è anti-aliasing (in u mutore gl, solu i gradienti lineari, radiali è cunichi cù 6 stop colors sò stati supportati).
    I novi motori di rendering per OpenGL è Vulkan sò stati aghjuntu à GTK
  • Scala fraccionaria, chì permette di stabilisce valori di scala non integer, per esempiu, quandu si usa una scala di 125% per una finestra di 1200x800, un buffer di 1500x1000 serà attribuitu, è micca 2400x1600 cum'è in u vechju mutore.
  • Supportu per a tecnulugia DMA-BUF per aduprà parechje GPU è scaricate operazioni individuali à un'altra GPU.
  • Parechji nodi di rendering chì anu avutu prublemi in a vechja implementazione sò processati currettamente.

E limitazioni di i novi mutori includenu a mancanza di supportu per u posizionamentu per valori non interi (posizione fraccionaria) è nodi glshader, chì eranu assai ligati à e caratteristiche di u vechju mutore, è chì ùn eranu più necessarii dopu à aghjunghje supportu per nodi cù maschere (maschera) è texture cù trasparenza. Ci hè ancu menzionatu chì ci hè una pussibilità di pussibuli prublemi cù i cunduttori di gràfiche chì si sviluppanu per via di cambiamenti in u metudu di travaglià cù i cunduttori.

In u futuru, basatu annantu à u novu mudellu unificatu, a creazione di mutori di rendering chì utilizanu Metal in macOS è DirectX in Windows ùn hè micca esclusa, ma a creazione di tali mutori hè cumplicata da l'usu di altre lingue per shaders (u "ngl". " è i motori "vulkan" utilizanu a lingua GLSL, cusì per Metal è Direct duverà duplicà shaders o aduprà una strata basatu nantu à u toolkit SPIRV-Cross).

I piani futuri includenu furnisce supportu HDR è strumenti per una gestione curretta di u culore, supportu per a rendering Path da u latu GPU, a capacità di rende glifi, rendering off-stream, è ottimisazioni di rendiment per i dispositi più vechji è di bassa putenza. In a so forma attuale, u funziunamentu di u mutore "vulkan" hè vicinu à u funziunamentu di u vechju mutore "gl". U mutore "ngl" hè inferjuri in rendiment à u vechju mutore "gl", ma a prestazione dispunibule hè abbastanza per renderà à 60 o 144 FPS. Hè previstu chì a situazione cambierà dopu l'ottimisazione.

Source: opennet.ru

Add a comment