В GTK добавлены новые движки отрисовки для OpenGL и Vulkan

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3252
Зарегистрирован: 20.08.2022

#

В GTK добавлены новые движки отрисовки для OpenGL и Vulkan
Дата публикации:Mon, 29 Jan 2024 11:51:06 +0300




Разработчики библиотеки GTK объявили о готовности двух новых движков отрисовки - "ngl" и "vulkan", использующих графические API OpenGL (GL 3.3+ и GLES 3.0+) и Vulkan. Новые движки включены в состав экспериментального выпуска GTK 4.13.6. В экспериментальной ветки GTK движок ngl теперь используется по умолчанию, но в случае выявления значительных проблем в следующей стабильной ветке 4.14 будет возвращён старый движок отрисовки "gl".



Новые движки позиционируются как унифицированные и собираемые из единой кодовой базы. Суть унификации в том, что в качестве основы используется API Vulkan, поверх которого для OpenGL создан отдельный уровень абстракции, учитывающий отличия между OpenGL и Vulkan. Подобный подход позволил задействовать в обоих движках общую инфраструктуру для обработки графа сцены (scene graph), трансформаций, кэширования текстур и глифов. Унификация также заметно упростила сопровождение кодовой базы обоих движков и их поддержание в актуальном и синхронизированном состоянии.



В отличие от старого движка "gl", в котором для каждого типа узлов рендеринга (rendernode) использовался отдельный простой шейдер и выполнялась периодическая пересортировка данных при закадровом рендеринге (offscreen), в новых движках вместо закадрового рендеринга применяется сложный шейдер (ubershader), интерпретирующий данные из буфера. В текущем виде новая реализация пока отстаёт от старой по уровню оптимизаций, так как основное внимание на текущей стадии удаляется корректности работы и простоте сопровождения.



Новые возможности, которые отсутствуют в старом движке "gl":
  • Сглаживание контуров - позволяет сохранить мелкие детали и добиться отрисовки более ровных контуров.
    Изображение

    Формирование произвольных градиентов, в которых может использоваться любое число цветов и сглаживание (в движке "gl" поддерживались только линейные, радиальные и конические градиенты c 6 цветами остановки).

    Изображение
    Дробное масштабирование (fractional scale), позволяющее выставлять нецелые значения масштаба, например, при использовании масштаба 125% для окна 1200×800 будет выделен буфер 1500×1000, а не 2400×1600 как в старом движке.

    Поддержка технологии DMA-BUF для использования нескольких GPU и выноса отдельных операций на другой GPU.
    Корректно обрабатываются многие узлы рендеринга, с которыми были проблемы в старой реализации.


К ограничениям новых движков отнесено отсутствие поддержки позиционирования по нецелым значениям (fractional position) и узлов
glshader, которые были сильно завязаны на особенностях старого движка, и в которых пропала необходимость после добавления поддержка узлов с масками (mask) и текстур с прозрачностью. Также упоминается наличие вероятности всплытия возможных проблем с графическими драйверами, обусловленных изменением метода работы с драйверами.




В будущем на базе новой унифицированной модели не исключается создание движков отрисовки, использующих Metal в macOS и DirectX в Windows, но создание подобных движков затруднено использованием иных языков для шейдеров (в движках "ngl" и "vulkan" задействован язык GLSL, поэтому для Metal и Direct придётся либо дублировать шейдеры, либо использовать прослойку на базе инструментария SPIRV-Cross).



Из планов на будущее упоминается обеспечение поддержки HDR и средств для корректного управления цветом, поддержка пути рендеринга (Path rendering) на стороне GPU, возможность рендеринга глифов, рендеринг вне основного потока и оптимизация производительности для старых и маломощных устройств. В текущем виде производительность движка "vulkan" близка к производительности старого движка "gl". Движок "ngl" отстаёт по производительности от старого движка "gl", но имеющихся показателей достаточно для отрисовки с частотой 60 или 144 FPS. Предполагается, что ситуация изменится после проведения оптимизации.





Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=60515

Жизнь за Нер'зула!

Ответить