Статья удалена
1. Зачем это нужно?
Предположим у вас есть любимая игра, которая со временем начинает работать все хуже и хуже на новых OC, видеокартах, процессорах, так как изначально она сделана на API DirectX 9/10 с расчетом на слабое железо, а разработчики игры уже давно отпраздновали ее десятилетие и вспоминают о ней исключительно в памятные дни, и именно для таких случаев и подойдет смена API на более новый, с ручными изменениями настроек.
Обратная ситуация, игра вышла относительно недавно, но ваше железо еле-еле тянет ее большие и красивые локации (привет Александрии из AC: Origins), или же просто даже на мощном железе DirectX ведет себя нестабильно, здесь тоже может помочь Vulkan. Сразу скажу, смена API может привести к отличному результату в одной игре, но может не оправдать ваши надежды в другой, так как этот процесс крайне непредсказуем. Однако, процесс установки и деинсталляции настолько прост, что внесенные изменения можно полностью отменить за 5 минут, не переживая за потраченное время. Я лишь кратко покажу обычную установку, базовые команды и один небольшой тест.(в будущем добавлю еще несколько игровых процессов)
Цель поста самая простая, показать нечто странное, но способное преподнести неплохой результат в некоторых играх, а не провести полномасштабное сравнение DirectX и прослойки на Vulkan.
2. Коротко о том, что представляет из себя замена DirectX на Vulkan.
Говоря простым языком, это прослойка предоставляющая реализацию DXGI (DirectX Graphics Infrastructure), Direct3D 9/10/11, работающую через трансляцию вызовов в API Vulkan. Изначально это было придумано для использования на Linux, для запуска 3D-приложений и игр при помощи Wine, выступая в качестве более высокопроизводительной альтернативы встроенных в Wine реализаций Direct3D 9/10/11, работающих поверх OpenGL.Данной прослойкой активно занимается пользователь doitsujin, который постоянно выпускает разного рода патчи, повышающие стабильность при использовании DXVK.
Для Windows 10 мы будем использовать DXVK with Async patch, сделанную Sporif.
3. Установка и настройка
В первую очередь скачиваем с github нужные нам файлы.
Теперь определяем какой изначально API DirectX использует нужная вам игра. Обычно версия DirectX указана в системных требованиях, но можно посмотреть через MSI Afterburner во время игрового процесса. (Советую заранее скачать и настроить на отображение нужных показателей, для того, чтобы понять приносит ли пользу смена API)
Далее мы открываем путь установки игры, и вставляем туда все файлы d3d и dxgi, так как это просто быстрее. (для некоторых игр необходимы файлы из папки x32)
После этого создаем файл dxvk.conf.txt для более тонкой настройки, в которую можно добавить команды для API. В файл вписываем две строчки, которые полезны практически в любой игре:
d3d11.ignoreGraphicsBarriers = True
d3d11.relaxedBarriers = True
dxvk.enableAsync = true
При желании дополнительно (может вызвать нестабильность): d3d11.cachedDynamicResources = a
dxvk.numCompilerThreads = 0
Для некоторых игр, особенно на DirectX 9 стоит дополнительно увеличить доступную память командой, а иногда наоборот ограничить, это может помочь решить проблемы, связанные с потоковой передачей текстур в 64-разрядных играх, которые не поддерживают 4096 МБ или более видеопамяти
dxgi.maxDeviceMemory = *число*
dxgi.maxSharedMemory = *число*
Весь список команд большой и находится здесь:
4. Видеотест и вывод
Как я ранее упоминал, результат может быть крайне непредсказуем, и если изначально с игрой у вас что-то не получится, то стоит попробовать использовать команды (ссылка выше), кроме того, в первые минуты вашего игрового процесса, игра будет активно записывать данные в кэш, могут возникнуть сильные статтеры, но после этого в последующих игровых сессиях подобное происходить не будет (если игра адаптировалась под Vulkan), это обычное явление для данной прослойки. Записанный тест пока будет только в AC: Origins, так как больше всего именно в этой игре смена API на Vulkan приятно удивила.
Большинство игр, которые рассчитаны на быстрое передвижение (Mafia DE, Batman Arkham Knight и другие) могут наоборот ухудшить игровой процесс, так как необходимо создать достаточное количество кэша, и даже после этого могут возникать подлагивания, но попробовать никто не запрещает, в этих играх результат оказался лучше у DirectX.
Видеокарта: RX 6600XT Процессор: Ryzen 5 5600
Assassin's creed: Origins
Игровой процесс записан в Александрии, частота кадров падает до 60, при этом видеокарта нагружается ниже 90% из-за неравномерной и чрезмерной нагрузки на процессор, что в свою очередь влияет на падение производительности.
Игровой процесс все также в Александрии, уже на API Vulkan. Как можно заметить, при тех же самых настройках графики, частота кадров выше, а загрузка видеокарты около 90-95%, благодаря снижению нагрузки на ЦП.Ухудшения качества изображения я не заметил, естественно некоторые процессы происходят иначе, чем на DirectX 11, но моему глазу это заметно не было.
Если у вас нет никаких проблем с DirectX, то нет никакого смысла использовать Vulkan, который реализован не разработчиком игры, однако если есть какие-то проблемы с производительностью, то в некоторых случаях подобная смена API имеет смысл.