Il progetto lsfg-vk ha preparato un porting non ufficiale dell'utilità Lossless Scalings Frame Generation (LSFG) per la piattaforma Linux, utilizzando DXVK e l'API grafica Vulkan. Il codice del progetto è scritto in C++ ed è rilasciato sotto licenza MIT. Sviluppato da un appassionato esterno, ricrea la funzionalità del LSFG proprietario tramite reverse engineering delle librerie Windows.
L'applicazione consente di scalare l'output delle applicazioni di gioco progettate per essere eseguite in una finestra separata, per la loro visualizzazione in modalità a schermo intero. L'utilità può anche essere necessaria per eliminare l'output sfocato durante la scalatura utilizzando il sistema grafico standard o per bypassare le limitazioni nei giochi vincolati a risoluzioni fisse. Inoltre, offre la possibilità di aumentare la fluidità dell'output e di aumentare il frame rate nei giochi non progettati per un alto FPS, inserendo fotogrammi intermedi creati sulla base dell'interpolazione dei fotogrammi adiacenti.
Per ricreare i dettagli mancanti e scalare in LSFG possono essere utilizzati sia algoritmi originali propri che tecnologie esistenti basate su machine learning, come AMD FidelityFX Super Resolution e NVIDIA Image Scaling. La scelta dell'algoritmo dipende dal tipo di applicazioni di gioco. Ad esempio, per i giochi moderni si raccomanda di utilizzare l'algoritmo proprietario LS1 o la tecnologia di supersampling AMD FSR. Per i giochi più vecchi con grafica pixelata sono disponibili gli algoritmi Integer Scaling e xBR, e per i giochi in stile cartone animato e anime è disponibile l'algoritmo Anime4K. Inoltre, la modifica dell'output può essere applicata anche agli emulatori per eseguire giochi retro e giochi per console.
La scalatura e l'inserimento dei fotogrammi avvengono in tempo reale e non richiedono modifiche ai giochi. Nella versione per Linux, per l'inserimento dei fotogrammi e l'integrazione nell'output del gioco, viene utilizzato un handler sotto forma di ulteriore strato Vulkan, che consente di intercettare, eseguire e modificare le funzioni esistenti di Vulkan. Per utilizzare lsfg-vk è sufficiente installare la libreria liblsfg-vk.so e configurare i suoi parametri tramite variabili d'ambiente.
L'LSFG originale è un'applicazione compilata per Windows basata sull'API D3D11. Per riprodurre la funzionalità di LSFG su Linux, l'implementazione è stata traslata in una rappresentazione che utilizza l'API Vulkan. Per il trasferimento degli shader è stato aggiunto un gestore che intercetta le chiamate D3D11 e salva gli shader su disco, oltre a un parser per l'estrazione dinamica degli shader da file eseguibili in formato PE (Portable Executable). Per trasferire il pipeline grafico che gestisce l'esecuzione degli shader, sono stati isolati componenti basati sull'API D3D11 e con DXVK è stata garantita la loro operatività su Linux. Dopo aver ottenuto una versione funzionante basata su D3D11 e DXVK, tramite il debugger RenderDoc è stata ottenuta una mappatura precisa delle chiamate Vulkan, sulla base della quale è stata preparata la versione finale, che utilizza direttamente l'API Vulkan.
Fonte: opennet.ru
