El proyecto lsfg-vk ha preparado una adaptación no oficial de la utilidad Lossless Scalings Frame Generation (LSFG) para la plataforma Linux, utilizando DXVK y la API gráfica de Vulkan. El código del proyecto está escrito en C++ y cuenta con la licencia MIT. El desarrollo fue realizado por un entusiasta externo que recreó la funcionalidad de la utilidad propietaria LSFG 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 independiente para mostrarlas en modo de pantalla completa. Esta utilidad también puede ser necesaria para eliminar la salida borrosa al escalar con el subsistema gráfico estándar o para evitar restricciones en juegos con resoluciones de pantalla fijas. Además, es posible aumentar la fluidez de la salida y la velocidad de fotogramas en juegos no diseñados para altos FPS sustituyendo fotogramas intermedios adicionales creados mediante la interpolación de fotogramas adyacentes.
Para recrear los detalles y la escala faltantes, LSFG puede usar tanto sus propios algoritmos originales 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 aplicación de juego. Por ejemplo, para juegos modernos, se recomienda usar el algoritmo propietario LS1 o la tecnología de supermuestreo AMD FSR. Para juegos antiguos con gráficos de píxeles, se ofrecen los algoritmos Integer Scaling y xBR, y para juegos de dibujos animados y anime, está disponible el algoritmo Anime4K. Además de los juegos, la modificación de la salida también se puede aplicar a emuladores para ejecutar juegos retro y de consola.
El escalado y la sustitución de cuadros se realizan sobre la marcha y no requieren modificaciones en los juegos. En la versión para Linux, la sustitución de cuadros y la interpolación en la salida del juego se logran conectando un controlador en forma de una capa adicional de Vulkan, que intercepta, ejecuta y modifica las funciones de Vulkan existentes. Para usar lsfg-vk, simplemente instale la biblioteca liblsfg-vk.so y configure sus parámetros mediante variables de entorno.
El 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 se tradujo a una representación mediante la API de Vulkan. Para transferir sombreadores, se añadió un controlador que intercepta las llamadas D3D11 y las guarda en disco, así como un analizador para extraerlos dinámicamente de archivos ejecutables en formato PE (Ejecutable Portátil). Para transferir la canalización gráfica que controla la ejecución de sombreadores, se extrajeron de la aplicación componentes basados en la API D3D11 y, mediante DXVK, se garantizó su funcionamiento en Linux. Tras obtener una versión funcional basada en D3D11 y DXVK, se utilizó el depurador RenderDoc para obtener una disposición exacta de las llamadas de Vulkan, a partir de la cual se preparó la versión final, directamente mediante la API de Vulkan.
Fuente: opennet.ru
