Разработчик под ником WinterSnowfall представил релиз транслятора D7VK 2.2, который переносит вызовы классических графических API вроде Direct3D 7, 6, 5 и 3 на современные рельсы Vulkan. Основной фокус свежего обновления пришелся на доработку D3D3, остававшегося наименее развитым компонентом проекта с момента внедрения в версии 1.5. По словам создателя слоя совместимости, игры эпохи Direct3D 3 напоминают палантиры из вселенной "Властелин колец", представляя собой утерянные во времени артефакты, список которых сложно каталогизировать даже на профильных ресурсах.
Версия 2.2 базируется на вышедшем обновлении DXVK 3.1 и включает полную переработку механизма подсчета ссылок для устройств D3D3, что приблизило его поведение к нативной реализации от Microsoft. Разработчик совместно с энтузиастом под ником CkNoSFeRaTU провел масштабную валидацию буферов выполнения с помощью классических тестов Wine, исправив ошибки трансформации вершин из-за неверного формата FVF и баги в вычислениях проекционных матриц, затрагивавшие старые проекты на D3D6, D3D5 и D3D3. Кроме того, повышен уровень стабильности при обработке текстур, благодаря чему используемые поверхности больше не удаляются из памяти во время рендеринга.
Существенные изменения затронули и систему прозрачности color key, где алгоритм расчета нормализованных цветовых диапазонов оптимизировали и перевели на кэширование, что обеспечило прирост производительности без лишних вычислений. Авторы также устранили ошибку деления на ноль для палитровых поверхностей и оптимизировали конвейер отрисовки Begin(), Vertex() и End() для D3D6 и D3D5. Данная правка сократила потребление памяти и увеличила быстродействие в ретро-играх, включая классическую Frogger 1997 года выпуска.
Параллельно свет увидела новая сборка форка DXVK-Sarek 1.13.0, ориентированная на владельцев старых видеокарт с поддержкой только Vulkan 1.1 и 1.2. Разработчики перенесли в него все новшества ветки D7VK 2.1 и заново написали поддержку прозрачности color key под устаревший компилятор шейдеров при участии энтузиаста pythonlover02. Вдобавок в DXVK-Sarek появился обходной путь для альтернативного положения центров пикселей, позволивший полностью устранить раздражающие полосы и графические артефакты на фонах в культовой Resident Evil 2.
Необходимость в развитии подобных независимых прослоек обусловлена позицией авторов основного проекта DXVK, которые принципиально отказываются внедрять или поддерживать технологии старше Direct3D 8. Сам транслятор D7VK разрабатывается в первую очередь для операционных систем на базе Linux и связки с Wine, где проект выступает связующим звеном между системной библиотекой DDraw и бэкендом Direct3D 9. Поддержка Windows авторами официально не тестируется, а любителям запускать раритеты на современных платформах по-прежнему приходится мириться со сложной ручной подменой системных библиотек.
Источник: www.playground.ru