Files
minecraft-dlss/docs/forza-horizon5-dlss5-recipe.md

7.6 KiB
Raw Permalink Blame History

地平线 5(Forza Horizon 5)· DLSS 5 神经渲染 完整配方

2026-09-18 实测跑通。姊妹文档:endfield-dlss5-recipe.md(终末地)。 两者共用同一套结论:游戏自带 DLSS 时,只需要 OptiScaler-DLSSNR 一个组件。


一、最终可用配置

形态:目录代理单 DLL。 无反向代理注入、无 ReShade、无 feeder。

D:\SteamLibrary\steamapps\common\ForzaHorizon5\
    dxgi.dll                  OptiScaler-DLSSNR v0.2.0(OptiScaler.dll 改名而来)
    OptiScaler.ini            配置(见下表)
    OptiScaler\               后端 DLL(FidelityFX / XeSS / D3D12_OptiScaler\D3D12Core.dll)
    nvngx.dll_dlssnr.dll      神经转发器(包内自带)
    nvngx_dlssnr.dll          神经模型 310.8.0.0(需自备)
    nvngx_dlss.dll            游戏自带 3.1.11.0 —— **不要动**
    nvngx_dlssg.dll           游戏自带 —— 不要动
    sl.*.dll                  游戏自带 Streamline 2.10.3 —— 不要动

启动方式:Steam 正常启动,不需要换启动器。

关键 ini 设置(OptiScaler.ini)

段 键 值 为什么
[Upscalers] Dx12Upscaler dlss 地平线是 D3D12;神经通路必须骑在游戏自己的 DLSS 上
[DlssNr] Enabled true 默认关
[DlssNr] WhitePointScale 1.0 默认 auto 会逐帧测光导致亮度泵动(同终末地)
[DlssNr] TransferStrength 0.7 满档 1.0 = 完全是模型的画面 → 噪点明显。0.7 是降噪起点
[DlssNr] ColourStrength 0.5 1.0 = 连模型的颜色一起用 → HDR 场景下色彩噪点偏重
[Menu] ShortcutKey 0x24(Home)
[Menu] OverlayMenu false 见「三、已解决的故障」——覆盖层与输入钩子会卡死游戏
[Hotfix] ManualInputPolling true 同上:不 hook WndProc,改成自己轮询
[Hotfix] CheckForUpdate false 关掉联网版本检查,少一个变量

二、验收判据(缺一不可)

读 D:\SteamLibrary\steamapps\common\ForzaHorizon5\OptiScaler.log:

  1. CheckWorkingMode OptiScaler working as dxgi.dll, system dll loaded
  2. HookNgxApi NVSDK_NGX_XXXXXX_GetFeatureRequirements found, hooking!
  3. DLSSFeatureDx12::InitDLSS _CreateFeature result: NVSDK_NGX_Result_Success
  4. DlssNr::EvaluateAfterUpscale DLSS-NR reached through the game's DLSS input ← 核心
  5. DlssNr_Dx12::Dispatch DLSS-NR running at 2560x1440
  6. 进程模块表里出现 两个 dxgi.dll(游戏目录的 OptiScaler + 系统 dxgi)
  7. 无 Application Hang / Application Error

三、已解决的故障(都有实证,不必再走)

3.1 启动后「未响应」→ Application Hang

OptiInput::InstallWindowSubclass  subclass installed  previousWndProc:… → optiWndProc:…
OptiInput::InstallHooks  Win32 message / key state / GetMessagePos / clip cursor /
                         HID / **raw input** / windows input / position input hooks installed
OptiInput::UpdateXInputIntegrationLocked XInput hooks installed
… 之后 Windows 记录 Application Hang,游戏被关闭

OptiScaler 给游戏主窗口挂了子类化窗口过程并装了 raw input + XInput 钩子, 而地平线是重度输入的游戏 → 消息泵被卡住。

修法(两个一起,实测有效):

[Hotfix] ManualInputPolling=true    ; 不去 hook WndProc,改成自己轮询输入
[Menu]   OverlayMenu=false          ; 关掉覆盖层

3.2 在菜单里切到 FSR → 游戏崩溃

21:59:08  FeatureProvider_Dx12::ChangeFeature changing backend to FSR 2.2.1
21:59:11  Application Error: ForzaHorizon5.exe  0xc0000005  偏移 0x92dfbc

不要在地平线里实时切后端。 要换就改 ini 再重启(而且 Dx12Upscaler 必须是 dlss, 否则神经通路没有游戏自己的 DLSS 可骑)。

3.3 遗留:菜单显示得出,但收不到输入

[W] OptiInput::LogInputHealthSnapshotLocked menu is visible but no window/queue/raw input
    was received this frame. input:0x…, foreground:0x…, focused:yes, subclassed:yes.

菜单能唤出(menu visibility changed 0 -> 1),但鼠标键盘进不去。 不影响神经渲染,所有参数都从 ini 调、改完重启游戏即可。

3.4 游戏自身的帧生成在报错(与 OptiScaler 无关)

[E] present.h:288[updateStatus] eDLSSGStatusFailReflexNotDetectedAtRuntime
    - sl.reflex must be enabled and active

游戏自己的 DLSS-G 处于失败状态。「远处物体闪动」很可能来自这里 —— 建议在游戏画面设置里关掉帧生成,或把 Reflex 打开。

3.5 左上角两个重叠的 FPS 数字

不是 OptiScaler 的(ShowFps=auto=关)。是 NVIDIA App 的性能叠加(绿色) 与 Steam 的游戏内 FPS 显示 都默认在左上角。关掉其中一个即可。


四、调参对照表(全部来自 ini 里的原文说明)

键 含义 方向
TransferStrength Detail strength:0 = 超分器原样(真旁路)→ 1 = 模型的画面 → >1 超出模型本意 ↓ 降噪/压远处闪动
ColourStrength Colour strength:0 = 完全保留游戏颜色、只让亮度带模型判断;1 = 连模型颜色一起用 ↓ 去色彩噪点
MaxRatio Highlight guard(默认 2.0x):限制这一遍最多提亮多少倍 2x 说明书说已足够
WorkingScale 模型工作分辨率,画面本身不降,开销按平方走;>1.0 超采样在 D3D12 可用(终末地 D3D11 上不可用) ↓ 变软/省开销
ScalingDownscaler 只在 WorkingScale>1.0 时用 上采样时再动
DebugView 0 关 / 1 模型看到的 / 2 模型原始答案 / 3 改动量放大 20 倍 灰屏 = 模型没在改
AutoCapture 写 dlssnr-capture 前后对比帧 实测未触发
Intensity / Preset / Style / Local* NVIDIA 自己的参数;Preset 改动需重启

五、回滚

& 'E:\deepseek\_tmp\feedkit\revert-forza.ps1'

按安装清单精确删除(12 个文件),并与安装前快照交叉核对。 上一轮的 ReShade / DFC 残留保留在 E:\deepseek\game-backups\ForzaHorizon5\leftovers-*\。


六、与终末地的差异对照

终末地 地平线 5
反作弊 ACE → 目录代理会被 ACE-Setup64.exe / PlatformProcess.exe 等吞掉 无 → 目录代理最简形态即可
注入方式 外部注入(injector.exe,只进 Endfield.exe) 目录代理 dxgi.dll
渲染 API 只有 D3D11 / Vulkan(没有 D3D12 后端) D3D12
超分器键 Dx11Upscaler=dlss_12(dx11on12,D3D11 上唯一能跑神经渲染的选项) Dx12Upscaler=dlss
超采样 WorkingScale>1 不可用 可用
Smooth Motion 必须为 Vulkan 关掉 无此约束
启动 桌面 终末地-DLSS5启动.bat(含提权) Steam 正常启动
坑 目录代理污染 ACE 进程 窗口子类化 + raw input 钩子卡死消息泵

七、产物清单

文件 作用
E:\deepseek\_tmp\feedkit\forza-install-optiscaler.ps1 安装脚本
E:\deepseek\_tmp\feedkit\revert-forza.ps1 回滚脚本
E:\deepseek\_tmp\feedkit\OptiScaler-DLSSNR-v0.2.0.zip 原料(124 MB,SHA256 8EECE7A4D7DE6DE5917F0C99AC60540B2D77022E7699BBA717B0A6D9E1829BCE)
E:\deepseek\game-backups\ForzaHorizon5\ 证据:hang-run-*\(含 Application Hang 事件)、OptiScaler.ini 各阶段备份、安装清单、安装前快照、leftovers-*\