Разработчики D7VK продолжают совершенствовать свой инструмент, открывающий доступ к сокровищнице ретро-гейминга. Версия 1.6 — это не просто набор исправлений, а серьёзная внутренняя переработка. Основные изменения затронули взаимодействие с бэкендом DXVK для Direct3D 9, особенно в области обработки вершин и управления вертикальной синхронизацией (VSync).
Производительность: прирост для GPU-bound сценариев
Оптимизация обработки вершин должна положительно сказаться на производительности в сценариях, где узким местом является видеокарта. Для игр эпохи D3D7 это, конечно, требует «картофельного» уровня GPU, и заметно это будет в основном в бенчмарках. Однако некоторые игры, такие как Praetorians, получат ощутимый прирост благодаря улучшенной обработке буферов SYSTEMMEM, которые теперь помечаются как DYNAMIC. Положительный эффект увидят и владельцы классических 3DMark 2000/99.
Исправление регрессий и новые играбельные игры
В версии 1.6 устранены регрессии, в основном затрагивавшие игры на Direct3D 5, которые появились после добавления поддержки D3D3 в предыдущем релизе. Кроме того, исправления позволили сделать играбельными несколько классических проектов:
- DethKarz
- Total Annihilation: Kingdoms
- Moto Racer
Подробности исправлений и улучшений
- Обработка вершин: Переработаны маппинги вершин, что улучшило производительность и решило проблемы с буферами, вызывавшие падения в Age of Wonders II: The Wizard's Throne и Escape From Monkey Island.
- Управление VSync: В DDraw теперь корректно экспонируются возможности
DDCAPS2_FLIPNOVSYNCи управления интервалом переворота (flip interval). Благодаря этому в Re-Volt стали доступны ранее заблокированные настройки VSync. - Исправление регрессии в Deathtrap Dungeon: Устранена проблема, вызванная несовместимостью вьюпортов между D3D3 и D3D5.
- NFS III: Hot Pursuit: Благодаря расследованию @CkNoSFeRaTU выявлен и исправлен баг в D3D6-рендерере (особенно в очистке фонового цвета).
- Moto Racer: Исправлено некорректное пропускание обновления цветового ключа (color key) при вызовах
SetTexture(), что устранило артефакты прозрачности. - Прозрачность в D3D6: Исправлен баг, из-за которого состояния альфа-смешивания, установленные приложением, ошибочно переопределялись. Это вернуло правильную прозрачность в Need for Speed III: Hot Pursuit, Slave Zero и, возможно, других играх.
- Metal Fatigue: Обойдена проблема с точностью цветового ключа.
- Текстурные артефакты: Исправлена недоработка в перемаппинге текстур при сбросе цепочки обмена (swapchain). Это устранило периодическую порчу текстур после смены режимов в Vampire: The Masquerade — Redemption, Crusaders of Might and Magic, Tony Hawk's Pro Skater 2 и Total Annihilation: Kingdoms.
- Total Annihilation: Kingdoms: Обойден игровой баг, мешавший корректному воспроизведению видеовставок и анимации меню.
- Объём видеопамяти: При отчёте о текстурной/видеопамяти теперь рекламируется полный 32-битный объём в 2 ГБ (ранее было 1 ГБ). Это изменение необходимо, так как некоторые поздние игры на D3D9 запрашивают эти данные через DDraw, и их потребление может превышать 1 ГБ.
- DethKarz: Благодаря расследованию @CkNoSFeRaTU обойдена проблема с поддержкой 8-битного режима/текстур, что предотвращало краш при запуске и пропадание текстур в игре. Теперь игра стартует корректно и использует 16-битные текстуры.
Король Glide мёртв, да здравствует король Glide?
Разработчики отмечают редкий случай, когда D3D6-рендерер предлагает больше возможностей, чем его Glide-аналог. Для игры Total Annihilation: Kingdoms рекомендуется использовать D3D, так как он обеспечивает:
- Нативную поддержку широкоформатных разрешений (16:9).
- Лучшую фильтрацию текстур (хотя бы билинейную, которой нет в Glide).
- Аппаратный курсор.
Релиз D7VK 1.6 уже доступен на GitHub-странице проекта. Приятного погружения в ретро-гейминг!