O projeto lsfg-vk desenvolveu um portal não oficial da ferramenta Lossless Scalings Frame Generation (LSFG) para a plataforma Linux, utilizando DXVK e a API gráfica Vulkan. O código do projeto foi escrito em C++ e é disponibilizado sob licença MIT. O desenvolvimento foi realizado por um entusiasta externo, que recriou a funcionalidade do LSFG proprietário por meio de engenharia reversa de bibliotecas do Windows.
O aplicativo permite escalar a saída de aplicativos de jogos, projetados para serem executados em uma janela separada, para exibição em modo de tela cheia. A ferramenta também pode ser necessária para eliminar a saída borrada ao escalar utilizando a subsistema gráfico padrão ou para contornar restrições em jogos que dependem de resoluções fixas. Além disso, há a possibilidade de aumentar a suavidade da saída e aumentar a taxa de quadros em jogos que não foram projetados para altas taxas de FPS, através da inserção de quadros intermediários adicionais, criados com base na interpolação dos quadros adjacentes.
Para recriar detalhes ausentes e escalar no LSFG, podem ser utilizados tanto algoritmos originais proprietários quanto tecnologias existentes baseadas em aprendizado de máquina, como AMD FidelityFX Super Resolution e NVIDIA Image Scaling. A escolha do algoritmo depende do tipo de aplicativos de jogos. Por exemplo, para jogos modernos, é recomendado usar o algoritmo LS1 ou a tecnologia de super amostragem AMD FSR. Para jogos mais antigos com gráficos pixelados, são sugeridos os algoritmos Integer Scaling e xBR, enquanto para jogos no estilo de desenhos animados e anime, está disponível o algoritmo Anime4K. Além dos jogos em si, a modificação da saída também pode ser aplicada a emuladores para executar jogos retro e jogos de consoles.
A escalabilidade e a inserção de quadros são feitas em tempo real e não requerem alterações nos jogos. Na versão para Linux, para a inserção de quadros e a interposição na saída do jogo, é utilizada a conexão de um manipulador na forma de uma camada adicional do Vulkan, através da qual ocorre a interceptação, execução e modificação de funções existentes do Vulkan. Para usar o lsfg-vk, é suficiente instalar a biblioteca liblsfg-vk.so e configurar seus parâmetros através de variáveis de ambiente.
O LSFG original é uma aplicação compilada para Windows baseada na API D3D11. Para recriar a funcionalidade do LSFG no Linux, a implementação foi transcrita para uma apresentação que utiliza a API Vulkan. Para transferir os shaders, foi adicionado um handler que intercepta chamadas D3D11 e salva os shaders no disco, assim como um parser para extrações dinâmicas de shaders de arquivos executáveis no formato PE (Executable Portátil). Para migrar o pipeline gráfico que controla a execução dos shaders do aplicativo, foram destacados componentes baseados na API D3D11 e, com a ajuda do DXVK, foi garantido seu funcionamento no Linux. Após obter uma versão funcional baseada em D3D11 e DXVK, com o depurador RenderDoc foi obtida a disposição exata das chamadas Vulkan, com base na qual foi preparado a versão final, utilizando diretamente a API Vulkan.
Fonte: opennet.ru
