Π‘ΠΎΠ·Π΄Π°Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ 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.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ