El proyecto lsfg-vk ha creado un puerto no oficial de la utilidad Lossless Scalings Frame Generation (LSFG) para la plataforma Linux, utilizando DXVK y la API gráfica Vulkan. El código del proyecto está escrito en C++ y está bajo la licencia MIT. El desarrollo fue realizado por un entusiasta externo que replicó la funcionalidad del LSFG propietario mediante ingeniería inversa de bibliotecas de Windows.
La aplicación permite escalar la salida de aplicaciones de juegos diseñadas para ejecutarse en una ventana separada, para mostrarlas en modo de pantalla completa. La utilidad también puede ser necesaria para eliminar la salida borrosa al escalar utilizando el subsistema gráfico estándar o para eludir las limitaciones en juegos que están atados a resoluciones fijas de pantalla. Además, hay una opción para aumentar la suavidad de la salida y aumentar la tasa de fotogramas en juegos que no están diseñados para un alto FPS, mediante la inserción de fotogramas intermedios adicionales creados mediante la interpolación de fotogramas adyacentes.
Para recrear detalles faltantes y escalar en LSFG se pueden utilizar tanto algoritmos originales propios como tecnologías existentes basadas en aprendizaje automático, como AMD FidelityFX Super Resolution y NVIDIA Image Scaling. La elección del algoritmo depende del tipo de aplicaciones de juego. Por ejemplo, para juegos modernos se recomienda utilizar el algoritmo propio LS1 o la tecnología de supersampling de AMD FSR. Para juegos antiguos con gráficos pixelados se proponen los algoritmos Integer Scaling y xBR, mientras que para juegos con estilo de dibujos animados y anime está disponible el algoritmo Anime4K. Además de los juegos en sí, la modificación de la salida puede aplicarse también a emuladores para ejecutar juegos retro y juegos de consolas.
El escalado y la inserción de fotogramas se realizan en tiempo real y no requieren cambios en los juegos. En la versión para Linux, para la inserción de fotogramas y la inyección en la salida del juego se utiliza la conexión de un manejador en forma de una capa adicional de Vulkan, a través de la cual se interceptan, ejecutan y modifican las funciones existentes de Vulkan. Para utilizar lsfg-vk, basta con instalar la biblioteca liblsfg-vk.so y configurar sus parámetros a través de variables de entorno.
LSFG original es una aplicación compilada para Windows basada en la API D3D11. Para recrear la funcionalidad de LSFG en Linux, la implementación fue traducida a una representación que utiliza la API Vulkan. Para la transferencia de sombreadores, se agregó un controlador que intercepta las llamadas D3D11 y guarda los sombreadores en disco, así como un analizador para la extracción dinámica de sombreadores de archivos ejecutables en formato PE (Portable Executable). Para transferir el pipeline gráfico que gestiona la ejecución de sombreadores, se aislaron componentes basados en la API D3D11 y, con la ayuda de DXVK, se aseguró su funcionamiento en Linux. Después de obtener una versión operativa basada en D3D11 y DXVK, se utilizó el depurador RenderDoc para obtener un desglose preciso de las llamadas Vulkan, sobre la base del cual se preparó la versión final, que utiliza directamente la API Vulkan.
Fuente: opennet.ru
