Опубликован вариант утилиты Lossless Scalings Frame Generation для Linux

Проектом lsfg-vk подготовлен неофициальный порт утилиты Lossless Scalings Frame Generation (LSFG) для платформы Linux, использующий DXVK и графический API Vulkan. Код проекта написан на языке C++ и размещён под лицензией MIT. Разработка выполнена сторонним энтузиастом, воссоздавшим функциональность проприетарного LSFG через обратный инжиниринг Windows-библиотек.

Приложение позволяет масштабировать вывод игровых приложений, рассчитанных на запуск в отдельном окне, для их отображения в полноэкранном режиме. Утилита также может потребоваться для избавления от размытого вывода при масштабировании с использованием штатной графической подсистемы или для обхода ограничений в играх, завязанных на фиксированные разрешения экрана. Кроме того, имеется возможность повышения плавности вывода и увеличения частоты кадров в играх, не рассчитанных на высокий FPS, путём подстановки дополнительных промежуточных кадров, созданных на основе экстраполяции соседних кадров.

Для воссоздания недостающих деталей и масштабирования в LSFG могут использоваться как собственные оригинальные алгоритмы, так и существующие технологии на основе машинного обучения, такие как AMD FidelityFX Super Resolution и NVIDIA Image Scaling. Выбор алгоритма зависит от типа игровых приложений. Например, для современных игр рекомендуется использовать собственный алгоритм LS1 или технологию суперсэмплинга AMD FSR. Для старых игр с пиксельной графикой предложены алгоритмы Integer Scaling и xBR, а для игр в стиле мультфильмов и аниме алгоритм Anime4K. Кроме непосредственно игр, модификация вывода может применяться и к эмуляторам для запуска ретро-игр и игр для приставок.

Масштабирование и подстановка кадров осуществляется на лету и не требует внесения изменений в игры. В варианте для Linux для подстановки кадров и вклинивания в вывод игры используется подключение обработчика для дополнительного слоя Vulkan, при помощи которого выполняется перехват, выполнение и модификация существующих функций Vulkan. Для использования lsfg-vk достаточно установить библиотеку liblsfg-vk.so и настроить её параметры через переменные окружения.

Оригинальный LSFG представляет собой скомпилированное приложение для Windiows на базе API D3D11. Для воссоздания функциональности LSFG в Linux реализация была транслирована в представление, использующее API Vulkan. Для переноса шейдеров был добавлен обработчик, перехватывающий вызовы D3D11 и сохраняющий шейдеры на диск, а также парсер для динамического извлечений шейдеров из исполняемых файлов в формате PE (Portable Executable). Для переноса графического конвейера, управляющего выполнением шейдеров, из приложения были выделены компоненты на базе API D3D11 и при помощи DXVK была обеспечена их работа в Linux. После получения рабочего варианта на базе D3D11 и DXVK, при помощи RenderDoc была получена точная раскладка вызовов Vulkan, на основе которой был подготовлен финальный вариант, напрямую использующий API Vulkan.

Release. Ссылка here.