Разработчики D7VK продолжают расширять границы поддержки старых 3D-API. Версия 1.7 фокусируется на одной из наиболее сложных областей — устаревших (D3D6 и старше) вершинных преобразованиях, отсечении (clipping) и освещении (lighting). Хотя работа ещё не завершена полностью, результаты уже впечатляют.
Главные улучшения: освещение и преобразования
- Реализовано устаревшее функциональное освещение с аттенуацией для D3D6 и более ранних версий. Теперь тёмные планеты и юниты в O.R.B: Off-World Resource Base красиво освещены. Другие игры, использующие старое функциональное освещение, пока не столь «везучи» — работа над ними продолжается.
- Реализованы преобразования вьюпорта, отсечение, а также трансформации execute buffers для D3D3. Благодаря расследовательским навыкам @CkNoSFeRaTU, теперь в более-менее играбельном состоянии находятся многие ранние игры на D3D3 и более поздних версиях: Resident Evil, Revenant, Forsaken и многие другие.
Новые играбельные игры
После некоторых доработок в области игр, которые долгое время были сломаны на Linux/Wine (опять же с помощью @CkNoSFeRaTU), были найдены способы и обходные пути для запуска следующих тайтлов:
- Requiem: Avenging Angel — игра теперь запускается корректно вместо жалоб на отсутствие поддержки D3D (благодаря обходу причуды инициализации iClassFactory).
- Warhammer: Dark Omen — реализован обходной путь для презентации (blit-instead-of-flip), который корректно обрабатывает странный способ настройки цепочки обмена в игре. Теперь интро и геймплей работают, а не показывают чёрный экран. (Примечание: игра всё ещё страдает от нескольких ошибок поверхностного блинка в Wine, вызывающих пропадание/переворот элементов меню.)
Другие исправления и улучшения
- Улучшено управление счётчиками ссылок (reference counting): Это может помочь с совместимостью на Windows, хотя платформа остаётся неофициально поддерживаемой.
- Исправлена проблема с отчётом о видеопамяти на GPU с менее чем 2 ГБ VRAM и некоторых встроенных GPU.
- Добавлена минимальная реализация ComputeSphereVisibility: Этого достаточно для запуска Space Empires V (спасибо @Duneathor).
- Исправлена проблема очистки вьюпорта в D3D6: Благодаря расследованию @CkNoSFeRaTU исправлен цвет неба в Need For Speed III: Hot Pursuit (с современным патчем).
- Исправлены проблемы с завершением работы устройства в Incoming: Устранены падения при выходе из игры.
- Исправлены отсутствующие 2D-фоны в Return to Krondor.
- Переработаны модификации D3D9-бэкенда D7VK: Теперь они корректно взаимодействуют с существующей реализацией D3D8/9 для одновременного использования. Это упростило интеграцию между кодом D7VK и DXVK и открыло путь для… даунстриминга (см. следующий раздел).
Благодаря усилиям @pythonlover02, D7VK был портирован обратно на DXVK-Sarek. Это отличная новость для тех, кто всё ещё использует GPU с поддержкой только Vulkan 1.1/1.2, особенно:
- Видеокарт NVIDIA Kepler.
- Старых поколений встроенной графики Intel.
Производительность на таком оборудовании не будет выдающейся, но её будет достаточно для D3D7 и более ранних API. DXVK-Sarek теперь поддерживает всё от D3D3 до D3D11 включительно.
Разработчики рекомендуют дождаться следующего релиза DXVK-Sarek, так как некоторые улучшения портирования и качества жизни всё ещё в разработке. DXVK-Sarek также получит портирование последней работы по устаревшей модели освещения — переписанной поверх старого компилятора шейдеров DXVK.
Релиз D7VK 1.7 уже доступен на GitHub-странице проекта. Приятного погружения в ретро-гейминг и сообщайте о любых проблемах, особенно в малоизвестных играх!