Нови мотори за рендерирање за OpenGL и Vulkan се додадени во GTK

Програмерите на библиотеката GTK објавија достапност на два нови мотори за рендерирање - „ngl“ и „vulkan“, користејќи ги графичките API на OpenGL (GL 3.3+ и GLES 3.0+) и Vulkan. Новите мотори се вклучени во експерименталното издание на GTK 4.13.6. Во експерименталната гранка GTK, ngl моторот сега се користи стандардно, но ако се идентификуваат значителни проблеми во следната стабилна гранка 4.14, ќе се врати стариот мотор за рендерирање „gl“.

Новите мотори се позиционирани како унифицирани и склопени од една основа на код. Суштината на обединувањето е дека Vulkan API се користи како основа, на што е создадено посебно ниво на апстракција за OpenGL, земајќи ги предвид разликите помеѓу OpenGL и Vulkan. Овој пристап овозможи да се користи заедничка инфраструктура во двата мотори за обработка на графиконот на сцената, трансформациите, текстурите за кеширање и хиероглифите. Унификацијата, исто така, значително го поедностави одржувањето на базата на кодови на двата мотори и одржувањето на нивното ажурирање и синхронизирање.

За разлика од стариот мотор gl, кој користеше посебен едноставен шејдер за секој тип на јазол за рендерирање и периодично ги ресортираше податоците за време на рендерирање надвор од екранот, новите мотори наместо рендерирање надвор од екранот користат сложен шејдер (ubershader) кој ги толкува податоците од баферот. . Во сегашната форма, новата имплементација сè уште заостанува зад старата во однос на нивото на оптимизации, бидејќи главниот фокус во сегашната фаза е на правилното работење и леснотијата на одржување.

Нови карактеристики што недостасуваат во стариот GL мотор:

  • Измазнување на контурите - ви овозможува да ги зачувате фините детали и да постигнете помазни контури.
    Нови мотори за рендерирање за OpenGL и Vulkan се додадени во GTK
  • Формирање на произволни градиенти, кои можат да користат било кој број на бои и антиалиасирање (во моторот gl беа поддржани само линеарни, радијални и конусни градиенти со 6 бои за застанување).
    Нови мотори за рендерирање за OpenGL и Vulkan се додадени во GTK
  • Дробна скала, која ви овозможува да поставите вредности на нецелобројна скала, на пример, кога користите скала од 125% за прозорец од 1200x800, ќе се распредели тампон од 1500x1000, а не 2400x1600 како кај стариот мотор.
  • Поддршка за DMA-BUF технологија за користење на повеќе графички процесори и преземање поединечни операции на друг графички процесор.
  • Многу јазли за рендерирање кои имаа проблеми во старата имплементација се обработуваат правилно.

Ограничувањата на новите мотори вклучуваат недостаток на поддршка за позиционирање со нецелобројни вредности (фракциона позиција) и јазли на glshader, кои беа силно поврзани со карактеристиките на стариот мотор и кои повеќе не беа потребни по додавањето поддршка за јазли со маски (маска) и текстури со проѕирност. Исто така, се споменува дека постои можност за можни проблеми со графичките драјвери кои се јавуваат поради промени во начинот на работа со драјвери.

Во иднина, врз основа на новиот унифициран модел, не е исклучено создавањето мотори за рендерирање кои користат Metal во macOS и DirectX во Windows, но создавањето на такви мотори е комплицирано со употребата на други јазици за шејдери („ngl “ и „vulkan“ моторите го користат јазикот GLSL, така што за Metal и Direct ќе мора или да ги дуплираат шејдерите или да користат слој базиран на алатникот SPIRV-Cross).

Идните планови вклучуваат обезбедување на поддршка за HDR и алатки за правилно управување со боите, поддршка за прикажување на патеката на страната на графичкиот процесор, можност за прикажување хиероглифи, рендерирање надвор од поток и оптимизација на перформансите за постари уреди и уреди со мала моќност. Во сегашната форма, перформансите на моторот „вулкан“ се блиску до перформансите на стариот „gl“ мотор. Моторот „ngl“ е инфериорен во перформансите на стариот „gl“ мотор, но достапните перформанси се доволни за прикажување на 60 или 144 FPS. Се очекува ситуацијата да се промени по оптимизацијата.

Извор: opennet.ru

Додадете коментар