Что такое DXVK и почему вы должны использовать его в Windows
Первоначально созданный для Linux, DXVK также может помочь вам исправить старые игры для Windows и повысить их производительность. Вот почему и как.
Direct3D был частью игр для Windows на протяжении десятилетий, объединяя сегментированный аппаратный ландшафт ПК под одной крышей с поддержкой 3D. Тем не менее, приложение, созданное в первую очередь для Linux, DXVK иногда является гораздо лучшим вариантом для использования, даже если вы работаете в Windows.
Хотите улучшить совместимость и, что более важно, производительность ваших приложений и игр? Тогда вы должны попробовать DXVK.
Проблема с DirectX в Windows
Microsoft создала DirectX как «решение для устройств», которое помогло программистам воспользоваться аппаратными возможностями любого ПК. Вместо того, чтобы писать отдельный код для каждого устройства, разработчики программного обеспечения могут «нацелиться» на библиотеки DirectX DirectDraw (2D-графика), Direct3D (3D с аппаратным ускорением) и DirectSound (звук). Затем позвольте решению Microsoft «перевести» их код на «родной язык» каждого оборудования.
DirectX стал незаменимой базовой технологией в Windows и с тех пор постоянно развивается. Однако у Direct3D есть небольшая проблема: он не на 100% совместим с предыдущими версиями.
Microsoft и производители графических процессоров, поддерживающих API Direct3D (такие как «Nvidia, AMD и Intel»), иногда отказывались от поддержки функций, представленных в более ранних версиях Direct3D, которые так и не получили широкого распространения. Поэтому некоторые старые игры могут некорректно работать на современном графическом процессоре с последними версиями Direct3D.
Что такое Vulkan?
Предположительно, более «открытый» ответ Microsoft на Direct3D с закрытым исходным кодом, OpenGL представлял собой мутированную версию библиотек трехмерной графики, используемых в графических рабочих станциях Silicon Graphics.
Однако OpenGL всегда отставал от Microsoft Direct3D с точки зрения функциональности. В конце концов, казалось более рациональным возобновить усилия. Поэтому Vulkan, также известный как «OpenGL Next», был создан, чтобы предложить лучшую производительность и больший контроль над оборудованием.
Как и OpenGL, и в отличие от Microsoft Direct3D, привязанного к Windows, Vulkan является «открытым» и кросс-платформенным. Вы можете использовать Vulkan на Windows, Linux и даже на смартфонах. Хотя он не поддерживается на компьютерах Mac, его можно использовать там через MoltenVK.
Это был сокращенный вариант. Чтобы узнать больше о Vulkan, ознакомьтесь с нашей статьей о том, какие библиотеки времени выполнения Vulkan есть в Windows.
Что такое DXVK?
DXVK — это оболочка, которая «переводит» Direct3D в Vulkan. В человеческом мире переводчик может выступать посредником между носителями английского и японского языков, чтобы они могли понимать друг друга. Точно так же «скины» или «слои перевода» могут «брать» код, написанный для определенного оборудования, платформы или API, и переводить его для работы на другом.
DXVK изначально был разработан для Linux при поддержке Valve, которая также использует его в SteamOS и Steam Deck. Вы можете узнать больше об этом в нашей статье, в которой мы рассмотрели, что такое Steam Proton и как он запускает игры для Windows в Steam Deck.
Почему вы должны использовать DXVK в Windows?
Если игра уже хорошо работает на вашем оборудовании, нет причин использовать DXVK. Но некоторые игры, написанные для более старых версий DirectX, не работают «правильно» (если вообще работают) на более новых версиях DirectX и современном оборудовании.
Путем «перевода» старого кода Direct3D с ошибками в более современный Vulkan API достигается минимальное (если вообще есть) снижение производительности. В то же время проблемные игры с неработающей графикой или отсутствующими функциями могут снова стать полностью играбельными.
Поскольку Vulkan находится на одном уровне с Direct3D 12, и обе они намного лучше (и быстрее), чем более старые версии Direct3D (как мы видели при сравнении DirectX 11 и DirectX 12), «перевод» старых игр Direct3D на Vulkan иногда может улучшить производительность игры.
Доказательством этого является работа Intel с их графическими процессорами Arc. Intel может попытаться добавить поддержку всех более старых версий драйверов графического процессора Arc. Вместо этого Intel решила работать над дальнейшими улучшениями DXVK. Первые результаты «эксперимента» Intel привели к двукратному повышению производительности старых игр, десятки из которых стали играться «через» DXVK.
Как использовать DXVK в Windows
использовать DXVK в Windows просто, так как ничего не нужно настраивать. Все, что вам нужно сделать, это загрузить его, распаковать в нужную папку с игрой, и все готово.
Однако вы должны использовать правильную версию DXVK, которая соответствует версии Direct3D, используемой в вашей игре.
Вероятно, будет проще, если мы пройдем весь процесс вместе, чтобы увидеть, как загрузить последнюю версию DXVK, определить «технологию» игры и установить правильные библиотеки DLL в соответствующую папку.
Как скачать DXVK
DXVK — это программное обеспечение с открытым исходным кодом, которое можно использовать бесплатно. Вы можете найти последнюю версию на GitHub.
- Посетите официальную страницу DXVK GitHub и щелкните ссылку на последнюю версию в правой части страницы в разделе «Релизы.
- Прокрутите страницу выпуска вниз и найдите раздел ресурсов последнего выпуска. Нажмите на последний архив DXVK tar.gz, чтобы загрузить его. На момент написания это была версия 2.2.
- Сохраните загруженный архив где-нибудь, так как вам нужно будет извлечь содержимое в папку для каждой игры, которую вы хотите запустить с DXVK вместо Direct3D.
Как выбрать правильную версию DXVK
Если вам нужно узнать, какая версия Direct3D используется в вашей игре, вам может помочь веб-сайт PC Gaming Wiki.
- Посетите PC Gaming Wiki в своем браузере и используйте поле поиска в правом верхнем углу, чтобы найти игру, в которую вы хотите добавить DXVK.
- Как только вы найдете свою игру, перейдите на страницу и прокрутите вниз до раздела «Другая информация». Обратите внимание на таблицы API. Там в столбцах Спецификации и Поддерживаемые вы увидите версию Direct3D, используемую в вашей игре. Внизу столбцы «Исполняемый», «32-битный» и «64-битный» «подскажут» вам, какую архитектуру вам следует выбрать.
Как добавить DXVK в ваши игры
Теперь, когда вы знаете, какую версию Direct3D и архитектуру процессора использует ваша игра, вы можете добавить в папку правильную версию DXVK.
- откройте архив DXVK с помощью вашего любимого менеджера архивов (в этой статье мы будем использовать WinRAR) и войдите в единственную папку DXVK, которую вы там видите.
- Внутри вы найдете две подпапки, по одной для каждой архитектуры компьютера. Введите правильный пароль для вашей игры. Даже если ваша операционная система 64-битная, как и большинство современных версий Windows, если игра 32-битная, вам следует перейти в папку 32-битная.
- Выберите правильную DXGI.DLL и правильную DLL для версии Direct3D, используемой в вашей игре. Как вы увидите, есть три дополнительные библиотеки DLL, по одной для каждой из предыдущих версий Direct3D: 9, 10 и 11.
- Найдите локальную папку, в которой установлена ваша игра, и найдите подпапку, содержащую исполняемый файл («файл, из которого запускается игра»). Извлеките библиотеки DLL из предыдущего шага в эту папку.
Как протестировать и сравнить вашу улучшенную игру
Если вы запустите свою игру сейчас, она должна использовать Vulkan вместо Direct3D и, надеюсь, работать лучше.
Даже если вы не видите каких-либо резких изменений в частоте кадров, иногда улучшения можно «ощутить» другими способами. Например, мы попробовали DXVK с классической игрой Batman: Arkham City на ПК с процессором Ryzen 5900x, 64 ГБ ОЗУ и графическим процессором Nvidia RTX 3070. Наше оборудование уже превзошло лучшие показатели этой старой игры, достигнув очень высокой частоты кадров. Даже если бы они поднялись выше с Вулканом, разницу было бы нелегко заметить.
Однако действие в игре казалось более плавным. Навигация между экранами, загрузка уровней и нажатие Alt + Tab с DXVK были почти мгновенными.
Когда вам не следует использовать DXVK
DXVK имеет много преимуществ и может принести производительность старых игр в современную эпоху. В любом случае, это не «серебряная пуля» для повышения производительности, а иногда его просто не стоит использовать.
1. DXVK не улучшает производительность игры
Если вы добавили библиотеки DXVK в свою игру и с тех пор не заметили разницы, вы можете удалить их снова, если хотите. Для этого вы можете удалить DLL, которые вы добавили в папку с игрой.
2. DXVK ухудшает производительность или приводит к новым сбоям
Иногда добавление DXVK в игру может иметь обратный эффект. К сожалению, у конечного пользователя нет возможности устранить такие проблемы.
Были ли у вас проблемы с производительностью игры или визуальные сбои после добавления DXVK? Выйдите из игры и удалите DLL файлы DXVK из каталога.
3. Вы хотите играть в свою игру онлайн
DXVK — это уровень совместимости, который влияет только на графический вывод игры. Однако некоторые компании выступают против любых изменений в своих играх, чтобы обеспечить справедливую среду для всех.
DXVK может и не быть «мошенничеством», но он все же «меняет правила игры» и может быть помечен как таковой.
4. В Игре Уже есть встроенная поддержка Vulkan
Если игра уже использует Vulkan API, например Doom Eternal, нет причин устанавливать для вывода Direct3D, а затем преобразовывать его в Vulkan.
5. В игре используется Direct3D 12
Поскольку Direct3D 12 почти полностью совместим с Vulkan, перевод с одного передового графического API на другой не будет иметь никакого значения.