D7VK

D7VK логотип

D7VK — это проект с открытым исходным кодом, созданный для преобразования вызовов устаревших графических API Microsoft — Direct3D 7, 6 и 5 — в современные команды Vulkan. Он предназначен для работы в среде Wine на Linux, предоставляя альтернативу встроенному в Wine программному рендереру WineD3D и другим решениям для совместимости.

Проект был создан разработчиком WinterSnowfall как отдельная ветка от основного DXVK (который занимается Direct3D 8, 9, 10 и 11). Основная цель D7VK — не просто эмулировать старые API, а обеспечить их эффективную трансляцию на современные графические конвейеры через проверенный D3D9-бэкенд DXVK и Vulkan. Это позволяет добиться лучшей производительности, стабильности и поддержки современных функций (например, сглаживания) в классических играх по сравнению с чисто программными методами.

Разработчик подчёркивает, что работа с такими древними API, как DirectDraw (DDraw), к которым относились D3D5-7, — это «земля крайне проблемной совместимости». Поэтому D7VK сознательно принимает минималистичный подход, фокусируясь на играх, использующих современный (для того времени) режим Immediate Mode, и не поддерживая устаревший конвейер D3D3 (Execute Buffers) или Retained Mode. Проект позиционируется как ещё одна опция на столе у энтузиаста ретро-гейминга, а не как универсальное и единственное решение.

Для работы D7VK требуется система Linux с установленным Wine и видеодрайверами, поддерживающими Vulkan. Основным сценарием использования является запуск старых Windows-игр на Linux.

Основные возможности и технические особенности

Поддержка нескольких API: Несмотря на название D7VK, проект реализует трансляцию для Direct3D 7 (основной фокус), а также для Direct3D 6 и 5 в экспериментальном режиме. Все они работают через единый компонент ddraw.dll.

Архитектура на базе DXVK: D7VK не является полностью самостоятельным движком. Он действует как прокси-слой: перехватывает вызовы D3D5-7, преобразует их в команды D3D9 и передаёт на обработку в хорошо отлаженный бэкенд от DXVK, который уже транслирует их в Vulkan. Это обеспечивает высокую эффективность и позволяет использовать многие настройки DXVK.

Целевая совместимость: Проект оптимизирован для игр, использующих Immediate Mode рендеринг. Игры, полагающиеся на крайне устаревший конвейер D3D3 или активно смешивающие DDraw с GDI, скорее всего, работать не будут — для них рекомендуется использовать WineD3D.

Наследование функций DXVK: Пользователи получают доступ к знакомой системе конфигурации через файлы .conf, HUD для отображения FPS и статистики (DXVK_HUD), а также к возможности принудительного включения сглаживания (FSAA) через настройку d3d7.emulateFSAA = Forced.

Установка и использование

1. Подготовка: Убедитесь, что в системе установлены корректные драйверы Vulkan для вашей видеокарты (AMD, NVIDIA, Intel).

2. Установка D7VK: Скачайте последний релиз с GitHub. Для использования в конкретном Wine-префиксе (папке с игрой) скопируйте файл ddraw.dll в директорию, где находится исполняемый файл игры (.exe).

3. Настройка Wine: Откройте winecfg для этого префикса. На вкладке «Библиотеки» (Libraries) добавьте переопределение (override) для ddraw и установите его как native, builtin (именно в таком порядке). Это заставит Wine использовать D7VK вместо собственной реализации.

4. Запуск и проверка: Запустите игру. Для проверки, что используется именно D7VK, можно включить HUD, установив переменную окружения (например, в запускающем скрипте): DXVK_HUD=1 или DXVK_HUD=fps,version. На экране должна появиться информация.

Ограничения и важные замечания

Не универсальность: Разработчик честно заявляет, что D7VK не является панацеей и не будет работать со всеми играми подряд из-за огромного количества специфичных хаков и нестандартного кода в старом ПО. Если игра не работает, первым делом стоит попробовать встроенный в Wine рендерер WineD3D или альтернативные рендереры, если игра их предоставляет (например, OpenGL).

Вертикальная синхронизация (VSync): В старом Direct3D поддержка отключения VSync была опциональной, и многие игры её не запрашивают. D7VK по умолчанию включает VSync для соответствия оригинальному поведению. Управлять этим можно через настройки DXVK (d3d9.presentInterval), но в некоторых играх это может вызвать проблемы.

Высокий FPS: Многие старые игры не рассчитаны на работу с частотой выше 60 или даже 30 FPS — физика, логика игры или ввод могут сломаться. D7VK включает встроенные ограничители FPS для известных проблемных игр.

Экспериментальная поддержка D3D6/5: Реализация для версий 6 и 5 API является дополнительной и может быть менее стабильной, чем для D3D7.

Основная платформа — Linux/Wine: Хотя технически файл DLL можно скопировать рядом с игрой и на Windows, эта конфигурация практически не тестируется разработчиком, и её работоспособность не гарантируется.

Для кого этот проект?

D7VK — это инструмент в первую очередь для энтузиастов и сохранителей игрового наследия, которые хотят запускать конкретные классические 3D-игры (например, Sacrifice или Disciples II, как упоминает автор) на современном Linux-железе с максимально возможной эффективностью и качеством изображения. Это не обязательный компонент, а одна из опций, которая в удачных случаях может обеспечить лучший опыт, чем другие доступные методы.

Проект является ярким примером развития экосистемы совместимости с открытым исходным кодом, где нишевые инструменты создаются сообществом для решения конкретных задач, продолжая и расширяя идеи более крупных проектов, таких как DXVK и Wine.

Страница релизов D7VK на GitHub Вики DXVK по конфигурации (настройки в основном применимы и к D7VK).
  • Просмотров: 770

Этот веб-сайт использует технические и функциональные файлы cookie. Чтобы зарегистрировать учетную запись, связаться с нами, получить наши продукты или услуги, вы должны принять нашу Политику Конфиденциальности. Нажимая кнопку «Принять» или щелкая любую ссылку на этой странице, вы соглашаетесь на использование файлов cookie и принимаете нашу Политику использования cookie-файлов.