Модификация d3d9.dll для принудительного AF для всех текстур - PullRequest
0 голосов
/ 10 марта 2020

поэтому я бы хотел, чтобы старая игра выглядела лучше на новых видео драйверах, использующих модифицированный d3d9.dll, который будет находиться в родительском каталоге основных игр.

В драйверах изменилось несколько вещей с появлением карт nvidia серии 400 (возможно, хотя я и не подтвердил), из-за которых старые игры по умолчанию выглядели хуже. Изменения были (перефразируя информацию, любезно предоставленную через PM на форуме nvidia):

Начиная с карт Geforce серии 400 и связанных драйверов nvidia на некоторых текстурах возникала чрезмерная пикселизация при движении сцены в старом DirectX 9 игр.

Для карт ниже, чем на основе Fermi (до 400 серии), драйвер читает следующие опции: QUALITY_ENHANCEMENTS (фильтрация текстур - качество) PS_TEXFILTER_DISABLE_TRILIN_SLOPE (Фильтрация текстур - трилинейная оптимизация) PS_TEXFILTER_BILINEAR_IN_ANISO (Фильтрация текстур - Anisotropi c оптимизация фильтра) PS_TEXFILTER_ANISO_OPTS2 (Фильтрация текстур - Anisotropi c пример оптимизации) PS_TEXFILTER_NO_NEG_LODBIAS (Фильтрация текстур - Отрицательное смещение LOD)

Из них следующее теперь игнорируется в новых драйверах: PS_TEXFILTER_BILINEAR_IN_ANISO (Фильтрация текстур - Anisotropi c оптимизация фильтра) PS_TEXFILTER_NO_NEG_LODBIAS (фильтрация текстур - отрицательное смещение LOD)

В англ. sh, 3 выпуска:

  1. Anisotropi c фильтрация не распространяется на некоторые текстуры.

  2. Anisotropi c фильтрация не применяется к текстурам, использующим отрицательный LOD. Параметр «Фильтрация текстур - Качество» - «Высокое качество» должен применять AF к текстурам с отрицательным LOD, но эта опция частично нарушена, поэтому она этого не делает. Не работает только 32-битный драйвер DX9 (то есть все 32-битные игры DX9, большинство из которых были 32-битными).

  3. Параметр «Фильтрация текстур - Отрицательное смещение LOD» - «Зажим» полностью удален из драйвер, но все еще существует в панели управления как плацебо.

Хотя мне удалось найти метод, чтобы исправить эту проблему на windows 7 (хотя я не был шанс протестировать, чтобы подтвердить это), соответствующая DLL, которая должна быть модифицирована, несовместима с Win XP.

Я думаю, что если я смогу вставить измененный d3d9.dll в основной каталог игр для решения этих проблем, он будет более модульным и независимым от требований ОС.

Я смог найти источник d3d9.dll, который был отредактирован в шестнадцатеричном формате, чтобы игнорировать пользовательские вызовы lod из игры (в свою очередь, приводить LOD к 0), но принудительное AF было бы хорошим дополнением. Я обнаружил, что соответствующей функцией вызова является SetSamplerState.

Так как же можно go сделать оболочку для d3d9.dll? Я бы не имел ни малейшего представления, с чего начать ...

ура

1 Ответ

0 голосов
/ 14 марта 2020

Я нашел решение этой проблемы, в основном кто-то, обладающий инсайдерскими знаниями об изменении файлов DirectX9, предоставил мне набор соответствующих файлов, d3d9.dll, d3d9x_24 и d3d9x_25.dll, которые заставляют AF x 16 для всех текстур в играх DX9 (повторно -включение визуальных эффектов, видимых, когда игра была завершена).

...