Christmas Patriarch

Как включить RTX Remix в игре Killing Floor

Короткий ответ: поставить можно, пользоваться — нет. Рантайм прицепится к Killing Floor, и на нескольких закрытых внутренних картах вы получите геометрию с трассировкой пути. Всё остальное — небо, ландшафт, половина материалов и всё освещение — сломается, и причины заложены в том, как Unreal Engine 2.5 разговаривает с Direct3D. Эта страница объясняет механизм, даёт точные шаги установки для тех, кто хочет увидеть результат своими глазами, и называет цену доведения до нормального вида.

Что делает RTX Remix

Remix — не инжектор шейдеров. Он заменяет рендерер игры на границе API и пересобирает сцену с нуля:

  1. d3d9.dll, положенный рядом с исполняемым файлом игры, перехватывает каждый вызов Direct3D 9. Для 32-битных игр клиентский d3d9.dll передаёт вызовы в NvRemixBridge.exe — 64-битный серверный процесс, который выполняет настоящий рендеринг в 64-битном адресном пространстве.
  2. Рендерер (dxvk-remix) хеширует каждую текстуру и меш, которые видит, и восстанавливает граф сцены из вызовов отрисовки.
  3. Эта сцена рендерится полной трассировкой пути через Vulkan ray tracing, сверху добавляется DLSS.
  4. Remix Toolkit позволяет привязать к этим хешам замены: PBR-материалы, USD-меши с большим числом полигонов и расставленные вручную источники света.

Шаг 2 — это и есть вся суть. Remix может пересобрать сцену только если игра описывает её стандартными терминами — через fixed function pipeline, где геометрия, трансформации, материалы и источники света приходят как документированное состояние D3D, а не как непрозрачный байт-код шейдеров. Официальное руководство NVIDIA по совместимости говорит прямо: игры DirectX 8 и 9 на фиксированном конвейере, лучшие шансы у релизов 2000–2005 годов, «игры, вышедшие после 2010 года, как правило несовместимы, если их не дорабатывали», а игры на DirectX 9.0c «обычно почти полностью на шейдерах, поэтому скорее всего работать не будут». Поддержка вершинных шейдеров есть, но она экспериментальная и ограничена простыми случаями.

Требования к железу

МинимумРекомендуется
ВидеокартаЛюбая RTXGeForce RTX 4070
Видеопамять—12 ГБ
Процессор—Intel i7-13700K / Ryzen 7 7700X
Оперативная память—32 ГБ
Накопитель—10 ГБ NVMe SSD
СистемаWindows 10Windows 11

«Любая RTX» — это жёсткий порог, а не пожелание. Remix рендерит через аппаратную трассировку лучей, поэтому Pascal и более старые карты исключены полностью: у GTX 1080 Ti нет RT-ядер, и рантайм на ней не запустится вообще, сколько бы видеопамяти и оперативной памяти за ней ни стояло. Программного запасного пути нет.

Подходит ли Killing Floor?

Проверки на локальной установке (SteamLibrary\steamapps\common\KillingFloor\System):

То есть API подходит и разрядность подходит. А описание сцены — нет, и именно оно решает исход.

Установка по шагам

Это самый быстрый способ увидеть результат самому. Заложите час. Сначала сделайте резервную копию System\KillingFloor.ini.

1. Скачайте рантайм. Загрузите архив релиза RTX Remix runtime. В нём есть d3d9.dll (перехватчик-мост) и папка .trex\ с NvRemixBridge.exe и вторым d3d9.dll (собственно рендерер dxvk-remix).

2. Скопируйте рядом с исполняемым файлом. И d3d9.dll, и целиком папка .trex\ кладутся в каталог игры System\ — тот, где лежит KillingFloor.exe, а не в корень игры:

SteamLibrary\steamapps\common\KillingFloor\System\
├── KillingFloor.exe
├── d3d9.dll          <- клиент моста (32-бит)
├── rtx.conf
└── .trex\
    ├── NvRemixBridge.exe
    └── d3d9.dll      <- рендерер dxvk-remix (64-бит)

3. Добавьте d3d8to9, если идёте путём DirectX 8. d3d8to9 от crosire переводит вызовы D3D8 в D3D9 на фиксированном конвейере — именно так были собраны попытки с UT2004. Его d3d8.dll кладётся в ту же папку System\.

4. Укажите движку нужное устройство рендеринга. В KillingFloor.ini альтернативы уже есть, закомментированные, в секции [Engine.Engine]:

[Engine.Engine]
RenderDevice=D3D9Drv.D3D9RenderDevice
;RenderDevice=D3DDrv.D3DRenderDevice
;RenderDevice=Engine.NullRenderDevice
;RenderDevice=OpenGLDrv.OpenGLRenderDevice

Сначала попробуйте D3D9Drv — Remix нацелен на D3D9 напрямую. Если экран пустой или игра не запускается, переключитесь на старый D3DDrv (DirectX 8) вместе с установленным d3d8to9: драйвер DX8 сильнее опирается на фиксированный конвейер, а это то, что нужно Remix:

[Engine.Engine]
;RenderDevice=D3D9Drv.D3D9RenderDevice
RenderDevice=D3DDrv.D3DRenderDevice

Учтите: в файле несколько блоков вида [Engine.Engine] — правьте активный, остальные не трогайте.

5. Запустите игру и нажмите Alt + X. Если рантайм прицепился, поверх игры откроется меню графических настроек Remix. Это меню и есть вердикт: видимая геометрия, освещённая трассировщиком пути, означает, что конвейер захвата работает и есть с чем работать дальше. Чёрный экран, каша из геометрии или отсутствие меню означают, что Remix так и не получил пригодную сцену.

Что вы увидите на самом деле

Unreal Tournament 2004 работает на том же семействе рендереров Unreal Engine 2.5, что и Killing Floor, и сообщество уже проводило этот эксперимент с d3d8to9 и Remix. Итог по отчётам: часть внутренних карт играбельна, часть полностью сломана, ландшафты и небо отрисовываются некорректно. От Killing Floor ждите того же — закрытые коридорные карты частично работают, открытые непригодны.

Оригинальный Unreal Engine 1 через одни лишь обёртки показал себя не лучше. Даже с патчем OldUnreal 227f, дающим нативное устройство рендеринга D3D9, результат описывали как неиграбельный: большая часть текстур полупрозрачная или отсутствует, сильные артефакты.

Почему всё ломается

Четыре структурные причины, и ни одна не лечится конфигом.

Лайтмапы вместо источников света. Unreal Engine 2.5 просчитывает статическое освещение заранее, в текстуры-лайтмапы, и накладывает их на геометрию мира через вторую текстурную ступень. Набор источников света для этого освещения он в D3D не передаёт никогда. Поэтому Remix восстанавливает геометрически корректную сцену вообще без источников света, а трассировщик пути без света рисует чёрное. Каждый источник приходится расставлять руками в Toolkit, для каждой карты отдельно.

Загрязнённое альбедо. Запечённое освещение лежит внутри диффузных текстур. Скормите их трассировщику, который сам считает настоящие отражённые лучи, — и свет применится дважды, а в поверхности будут вписаны тени там, где освещение теперь динамическое. Лечится только ручной классификацией и перетегированием материалов и последующей отрисовкой чистого альбедо.

Шейдерные пути. Устройство рендеринга D3D9 в UE2.5 не держится фиксированного конвейера. Проекторы, декали, зеркальные материалы и пути скелетных мешей идут через шейдеры, и именно эти вызовы отрисовки Remix восстановить не может — они пропускаются или растеризуются вне трассируемой сцены.

Небо и ландшафт. И то, и другое рендерится особыми путями со своими трансформациями и обработкой координат — поэтому в UT2004 они ломаются первыми. Открытые карты Killing Floor зависят от обоих.

Единственный работающий подход

Для Unreal Engine 1 сообщество перестало бороться с обёртками и написало устройство рендеринга специально под Remix: D3D9DrvRTX с поддержкой Unreal Tournament, Unreal, Deus Ex, Rune, Undying и других. Список того, что ему пришлось сделать, — честная оценка стоимости любого порта в семействе Unreal:

Это переписанный рендерер, а не настройка. Такое же лечение для Killing Floor означает портирование открытого устройства рендеринга Unreal Engine 2 со всем перечисленным выше — исходники D3D9Drv от Tripwire закрыты — а затем художественную работу. И вот она — большая цифра: свет и материалы делаются под каждую карту, а сервер со 165 картами умножает это на 165. Одна нормально сделанная карта — это десятки часов.

Мультиплеер и античит

Remix работает только на стороне клиента. Сервер видит обычного клиента, для остальных игроков ничего не меняется. Но вы кладёте подменный d3d9.dll в каталог игры и запускаете второй процесс, который владеет рендерингом. Графические обёртки обычно допускаются, но гарантии нет, а в Killing Floor включён VAC. На своих серверах решать вам; на публичных — оценивайте риск сами.

Что делать на не-RTX железе

ReShade с шейдером screen-space GI работает на Pascal и старее, ставится минут за пятнадцать, не трогает код движка и не может сломать геометрию карт. Он даёт заметную часть визуального скачка — приближение непрямого освещения, ambient occlusion, современный тонмаппинг — за смешную долю усилий. Апскейл текстур тоже не зависит от Remix и обрабатывается пакетно по существующим пакетам.

Статус проверки

Проверено локально: KillingFloor.exe — 32-битный x86 (PE machine 0x014C); D3D9Drv.dll, D3DDrv.dll и OpenGLDrv.dll присутствуют в System\; в KillingFloor.ini есть закомментированные варианты устройства рендеринга, приведённые выше.

Не проверено: сама процедура установки на Killing Floor не выполнялась, потому что Remix требует видеокарту RTX, а на машине, где это писалось, стоит GTX 1080 Ti. Предсказанный результат выведен из результатов по UT2004 и Unreal Engine 1, приведённых ниже, на том же семействе рендереров — считайте это хорошо обоснованным прогнозом, а не отчётом о тесте. Если у вас есть железо RTX, часовая проверка из раздела установки закроет вопрос.

Источники