
巫师3 MFG Bridge - RTX 40xx 多帧生成
在RTX 40系列GPU上,通过将游戏的Streamline 1运行时桥接到Streamline 2,在《巫师3:次世代》DX12中启用DLSS多帧生成x3。需要DLSS Enabler。
查看大图[size=5][b]关于此模组[/b][/size]
Witcher 3 MFG Bridge 是《巫师3》次世代版(DX12)的兼容性桥接器,可让 [b]DLSS Enabler[/b] 在 [b]RTX 40 系列 GPU 上驱动多帧生成(Multi Frame Generation)[/b]。
《巫师3》次世代版随附的是 NVIDIA Streamline 1.5.6,它完全没有帧倍增概念,无法向外部工具暴露多帧生成功能。此桥接器在保留游戏所期望的 Streamline 1 接口完整性的同时,在其旁边运行一个真正的 [b]Streamline 2.11.1[/b] 运行时。帧生成通过 Streamline 2 路径进行路由,DLSS Enabler 可在该路径上应用其 MFG 倍增值。
在我的 RTX 4070 测试环境中,这可实现 x3 帧生成:在相同游戏内设置下,大约从 [b]40 FPS 提升到约 100 FPS[/b]。
此桥接器不会修改游戏逻辑,不会重新分发任何游戏内容,也不会触及授权或 DRM。它是两个版本的公开 NVIDIA SDK 之间的 API 中间层。
源代码、完整技术说明和问题追踪器:
[url=https://github.com/not-JASH/w3-mfg-bridge][b]github.com/not-JASH/w3-mfg-bridge[/b][/url]
[line]
[size=5][b]1.0.0 中的新内容[/b][/size]
这是首个 [b]稳定[/b] 版本。它修复了针对 0.4.0 报告的持续卡顿问题。
[b]卡顿已修复。[/b] 如果 Streamline 2 侧没有活动的 Reflex 信号,DLSS-G 无法为生成的帧提供节奏控制,而它此前从未获得该信号。这由两个独立问题导致:
[list]
[]0.4.0 从 Streamline 1 结构中不存在的字段读取逐帧 Reflex 标记,因此读取到的是填充数据。[/]
[]更重要的是,《巫师3》通过 [b]NVAPI[/b] 直接驱动 Reflex,并且根本不会发出 Streamline Reflex 标记,所以一开始就没有可转发的内容。[/]
[/list]
桥接器现在会 [b]合成[/b] DLSS-G 所需的逐帧延迟标记序列和 sleep。在测试中,这将底层错误(eDLSSGStatusFailReflexNotDetectedAtRuntime)从 [b]每次会话 5432 次降至零[/b],并解决了卡顿问题。
第二个较小的卡顿来源也已被移除:帧生成选项此前每一帧都会被重新发送,这会与 Streamline 自身的呈现路径产生竞争。现在只有在实际发生变化时才会应用它们。
[b]倍增值上限现在会被检测并报告[/b],而不是假定。请参见下方章节——这取代了旧的“x3 是上限”说明,那只适用于我的机器。
[line]
[size=5][b]要求[/b][/size]
[list]
[]《巫师3》次世代版,[b]DX12[/b] 可执行文件。[/]
[]NVIDIA RTX 40 系列 GPU。[/]
[]较新的 NVIDIA 驱动,建议 R570 或更新版本。[/]
[]bin\x64_dx12 中的 DLSS 310 系列 DLL:nvngx_dlss.dll、nvngx_dlssg.dll[/]
[][b]DLSS Enabler 4.8.x[/b],使用 dxgi.dll 加载方式单独安装。本模组是基于版本 4.8.10.x 开发的。[/]
[/list]
DLSS Enabler [b]不[/b] 包含在此模组中。它捆绑了 OptiScaler 和帧生成模块,必须单独安装。
此处包含的 Streamline 运行时被有意固定为 2.11.1:Streamline 2.12 的帧生成器使用的 NGX 入口点会被 DLSS Enabler 4.8.x 明确禁用。
[line]
[size=5][b]倍增值上限——请阅读[/b][/size]
你的最大倍增值[b]并非在每个系统上都相同[/b]。它来自 DLSS-G 自身报告的限制,取决于你的驱动、你的 DLSS-G 构建版本以及你的 DLSS Enabler 版本。裸 Ada 报告 x2,我的机器在存在 DLSS Enabler 时报告 x3,而一些用户报告更高。
桥接器会检测你的上限并将其写入 witcher3.exe 旁的 [b]TW3 Streamline 2 Bridge.log[/b]:
[code]sl2_dlssg_state_first ... numFramesToGenerateMax=N[/code]
N 个生成帧意味着你的最大值是 [b]x(N+1)[/b]。例如 numFramesToGenerateMax=2 表示 x3。
[b]设置高于上限的倍增值会完全关闭帧生成。它不会回退到较低的倍增值。[/b] Streamline 会直接拒绝该请求。你在 DLSS Enabler 中选择的倍增值会在桥接器之后应用,桥接器无法将其调低,因此桥接器无法为你挽救这种情况——它会记录 sl2_dlssg_external_override_exceeds_cap,帧生成将保持关闭。
如果帧生成在你提高倍增值后立即停止工作,那就是发生了这种情况。请再次将其调低。
[line]
[size=5][b]安装[/b][/size]
[b]步骤 0 - 先决条件[/b]
[list=1]
[]使用 DLSS Swapper 或其他可信方法,将《巫师3》的 nvngx_dlss.dll 和 nvngx_dlssg.dll 更新到 310 系列 / DLSS 4 构建。[/]
[]使用 dxgi.dll 方法将 DLSS Enabler 4.8.x 安装到《巫师3》的 bin\x64_dx12 文件夹中。[/]
[]启动游戏一次,确认在安装此桥接器之前它仍能启动。[/]
[/list]
[b]步骤 1 - 安装此模组[/b]
将此压缩包的 bin\x64_dx12 文件夹内容复制到:
[code]...\The Witcher 3\bin\x64_dx12[/code]
你应该在 witcher3.exe 旁拥有以下文件:
[list]
[]tw3bridge.dll[/]
[]TW3 Streamline 2 Bridge.ini[/]
[]install.bat[/]
[]uninstall.bat[/]
[]_mfgbridge_install.ps1[/]
[]_mfgbridge_uninstall.ps1[/]
[]sl2 文件夹[/]
[/list]
[b]步骤 2 - 运行 install.bat[/b]
从 bin\x64_dx12 中双击运行一次 install.bat。安装程序将:
[list]
[]将原始 sl.interposer.dll 重命名为 sl.interposer_real.dll,但仅当其是预期的 1.5.x 文件时才会执行。[/]
[]将 witcher3.exe 备份为 witcher3.exe.mfgbridge-backup。[/]
[]修补 witcher3.exe 中的一个导入字符串,使游戏加载 tw3bridge.dll。[/]
[]将你本地的 nvngx_dlss.dll 和 nvngx_dlssg.dll 复制到 sl2。[/]
[]检查 DLSS Enabler 是否以 dxgi.dll 形式存在。[/]
[/list]
安装程序可随时安全地重新运行。它会在更改任何内容之前进行检查,并在遇到无法识别的文件时中止并给出消息,而不是触碰这些文件。
[b]步骤 3 - 游戏内[/b]
[list=1]
[]以 DX12 启动《巫师3》。[/]
[]在游戏的图形设置中启用 DLSS。[/]
[]在游戏的图形设置中启用帧生成。[/]
[]打开 DLSS Enabler 侧边栏(Home 键)。[/]
[]将 MFG 设置为 x3,或者若日志报告更高上限,则设置为你的上限。[/]
[]在 DLSS Enabler 侧边栏中启用 Reflex。[/]
[/list]
[b]从 0.4.0 升级:[/b] 解压覆盖现有安装,并再次运行 install.bat。无需其他操作。
[line]
[size=5][b]卸载[/b][/size]
从 bin\x64_dx12 运行 uninstall.bat。它会从备份恢复 witcher3.exe,恢复原始 Streamline interposer 名称,并移除桥接器文件。DLSS Enabler 自身的文件将保留在原处,如果你不再需要它们,必须单独移除。
[line]
[size=5][b]已知限制[/b][/size]
[list]
[]你的倍增值上限取决于系统,超过它会导致帧生成被禁用,而不是回退。请参见上方的上限章节。[/]
[]仅限 DX12。[/]
[]RTX 40 系列是目标硬件。RTX 20/30 系列显卡未经测试。RTX 50 用户应改用 WitcherFGMod,它面向 NVIDIA 原生的多帧生成。[/]
[]游戏更新或 Steam 的“验证游戏文件完整性”将恢复 witcher3.exe 并撤销导入修补。如果发生这种情况,请重新运行 install.bat。[/]
[]帧生成激活时,Reflex 会在内部被强制开启,因为 DLSS-G 没有它就无法控制帧节奏。你在游戏内的 Reflex 设置不会被更改。[/]
[/list]
[b]故障排除[/b]
[list]
[][b]游戏无法启动:[/b] 运行 uninstall.bat,确认游戏能以原版启动,然后重新安装。检查 witcher3.exe 旁的 TW3 Streamline 2 Bridge.log。[/]
[][b]世界黑屏但 UI 可见:[/b] 你的 sl2 中 DLSS DLL 缺失或过时。更新它们并重新运行 install.bat。[/]
[][b]帧生成无法启用:[/b] 确认 DLSS Enabler 已作为 dxgi.dll 安装,游戏内已同时启用 DLSS 和帧生成,并且你的倍增值等于或低于你的上限。[/]
[][b]卡顿:[/b] 检查日志中是否有 sl2_synthetic_reflex_markers 和 sl2_synthetic_reflex_sleep。如果这些行缺失,说明延迟标记未在你的设置中到达 Streamline 2——请在 GitHub 上附带日志提交 issue。[/]
[/list]
[line]
[size=5][b]兼容性[/b][/size]
[list]
[]与使用预期原版 Streamline 1.5.x interposer 的《巫师3》次世代版 DX12 设置兼容。[/]
[]除非经过专门测试,否则不兼容其他替换或修补同一 Streamline interposer 或导入路径的模组。[/]
[]如果安装了其他 Streamline / DLSS / 帧生成模组,请在安装此桥接器之前移除它或验证游戏文件。[/]
[/list]
[line]
[size=5][b]源代码和技术细节[/b][/size]
此模组是开源的。仓库包含完整源代码、构建设置,以及开发过程中解决的每种故障模式的详细技术说明——包括经过验证的 Streamline 1.x Reflex ABI、为何 Streamline 运行时被固定为 2.11.1,以及设备、交换链和帧生成所有权如何在两个运行时之间划分。
[url=https://github.com/not-JASH/w3-mfg-bridge][b]github.com/not-JASH/w3-mfg-bridge[/b][/url]
非常欢迎在 GitHub 问题追踪器上提交附带日志的错误报告。
[line]
[size=5][b]致谢[/b][/size]
[list]
[][b]WitcherFGMod[/b] - 展示了《巫师3》的并行 Streamline 2 架构,并作为架构先例,同时也是重新分发的 Streamline 2.11.1 二进制文件的来源。RTX 50 用户应改用 WitcherFGMod。[/]
[][b]DLSS Enabler[/b] 作者 artur-graniszewski - 驱动 MFG 的外部工具。未包含在内。[/]
[][b]OptiScaler[/b] 和 [b]dlssg-to-fsr3[/b] 作者 Nukem9 - 与 DLSS Enabler 捆绑。此处未包含。[/]
[][b]NVIDIA Streamline[/b] - Streamline 2.11.1 运行时根据其许可证重新分发。请参见 LICENSE-Streamline.txt。二进制文件未经修改,并由 NVIDIA 签名。[/]
[][b]CD PROJEKT RED[/b] - 《巫师3》和 REDengine。[/]
[/list]
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。