DLSS Unlocked 是怎么工作的?从 dxgi.dll 代理挂钩到 MFG 解锁的完整技术链路深度剖析

原创2026-10-24 20:27:531,941 阅读

DLSS Unlocked 是怎么工作的?从 dxgi.dll 代理挂钩到 MFG 解锁的完整技术链路深度剖析

DLSS Unlocked 是一个开源的 GPU 功能解锁工具,它通过 dxgi.dll 代理挂钩、OptiScaler 拦截和 nvapi 伪装,把 DLSS 帧生成(DLSS Frame Generation)、MFG 多帧生成(2X/3X/4X)以及 DLSS 神经渲染(DLSS-NR)解锁到 RTX 20/30/40 全系显卡上的任意原生支持 DLSS2/DLSS3 的 DirectX 12 游戏中。本文将从入口 DLL 讲起,完整拆解 MFG 解锁背后的技术链路。

DLSS Unlocked 项目横幅:解锁显卡全部性能

一、它到底能解锁什么?

在了解原理之前,先明确 DLSS Unlocked 提供的核心能力:

功能 说明 对应显卡
MFG 多帧生成(2X/3X/4X) 原生 dlssg_sm86 解锁器 + Ada MFG 解锁器 RTX 20/30/40
DLSS-G 帧生成桥接 将 Streamline DLSS-G 调用翻译为原生 DLSS FG / XeFG / FSR 3.1 FG 全系
DLSS-NR 神经渲染 Pre-SR 多通道神经渲染后端 支持 DLSS 5 的游戏
Linux / Proton 支持 干净的模块化布局,无驱动死锁 全平台

⚠️ 前提条件:游戏必须原生支持 DLSS 超分辨率(Upscaling)和 DLSS 帧生成,工具只能"解锁",不能"凭空创造"。详见 README.md。

二、总体架构:一次游戏启动的完整链路

整个解锁过程可以拆成 5 个阶段,每个阶段对应仓库中的一个模块:

游戏启动 → ① dxgi.dll 代理被加载
         → ② OptiScaler 挂钩 D3D12 / Swapchain
         → ③ nvapi64 代理伪装 GPU 架构
         → ④ MFG 解锁器放行帧生成校验
         → ⑤ DLSS-NR / DLSSG 桥接接管渲染管线

下面逐层剖析。

2.1 第一步:dxgi.dll 代理挂钩(入口)

Windows 加载 DLL 时遵循"目录优先"规则——游戏目录下的 DLL 会优先于系统目录加载。DLSS Unlocked 正是利用这一点:

  • 把解锁模块命名为 dxgi.dll 放进游戏目录,游戏初始化 DirectX 12 时加载的就是代理,而不是系统原版;
  • 代理内部先做挂钩工作,再转发(proxy)所有调用到真正的系统 dxgi.dll,因此对游戏完全透明。

安装器 DLSS unlocked.iss 提供了 4 种入口命名方案:

安装名 适用场景
dxgi.dll 首选,适合 DX11/DX12 及 RE Engine 游戏
version.dll ReShade 兼容场景的替代挂钩
winmm.dll 备选挂钩入口
plugins/dlss-unlocked.asi ASI 插件模式

此外 NVIDIA Environment/ 目录还附带了独立的 dxgi.dll 与 nvapi64-proxy.dll,用于处理显卡识别相关的环境问题。

2.2 第二步:OptiScaler 挂钩 D3D12 管线

代理入口加载后,核心的 OptiScaler 模块开始挂钩渲染管线。具体钩子开关在 nvngx.ini 的 [Hooks] 段落中可以精细控制:

  • HookD3D12:挂钩 D3D12 Swapchain 及其方法,是超分/帧生成接管的基础;
  • HookSLProxy:当 NVIDIA Streamline(sl.interposer)在内存中时挂钩 Swapchain;
  • HookFSR3Proxy:当 FSR3 运行时在内存中时同样挂钩,为 DLSSG→FSR3 桥接做准备;
  • DisableEarlyHooking:控制非 nvngx 模式(dxgi.dll/winmm.dll 入口)下是否禁用早期挂钩,解决兼容性问题。

同文件的 [Spoofing] 段落则负责对 DXGI 报告伪装 NVIDIA GPU 信息(Dxgi=auto 默认开启),这是让游戏误以为显卡"支持帧生成"的关键一环。

2.3 第三步:nvapi64 代理与 GPU 架构伪装

游戏通常会调用 nvapi64.dll 查询显卡型号、显存大小,以决定是否允许开启帧生成。DLSS Unlocked 的 nvapi64-proxy.dll 在这一层截获查询并返回伪装结果。

命令行层面提供了精细控制(见 Troubleshooting.txt):

  • --dlss-arch=turing|ampere|ada:伪装不同的 NVIDIA GPU 架构;
  • --dlss-gpu-name="ZZZ" / --dlss-gpu-vram=32g:覆盖报告的 GPU 名称与显存大小;
  • --dlss-nvapi=mock/proxy/sys:选择使用 mock、proxy 还是系统原生 nvapi 接口;
  • --dlss-reflex-fps=ZZZ:设置包含生成帧在内的帧率上限。

2.4 第四步:MFG 解锁——RTX 20/30 的核心戏码

多帧生成(MFG)本质上是让 GPU 每个实际渲染帧之间插入多个插值帧。NVIDIA 官方将其限制在 RTX 40 系上,而 DLSS Unlocked 通过多个上游解锁器解除限制:

  • dlssg_sm86(Turing/Ampere 原生解锁器):开箱即用,是 RTX 20/30 系 MFG 的主通路,安装后位于 OptiScaler/dlssg_sm86/ 子目录;
  • AdaMfgUnlock:RTX 40 系可一键切换到 Ada 架构的 MFG 解锁器,通过游戏内 Overlay 或 OptiScaler.ini 配置;
  • Dynamic MFG / NVSmooth30:动态帧生成与 RTX 30 系 Smooth Motion 解锁,对应 smooth-motion.asi(安装后重命名为 nvsmooth30.dll);
  • DLSS Enabler Headless:作为备选陪伴方案随包提供,对应 dlss-enabler.asi(安装为 dlss-enabler-headless.dll)。

使用 ReShade 的用户还可通过 SM86/ReShade.ini 获得 MFG 倍率热键:Ctrl+F2 至 Ctrl+F6 分别对应 2X~6X 生成,Ctrl+F10 切换 Dynamic 动态模式。

2.5 第五步:DLSS-G 桥接与 DLSS-NR 神经渲染

  • DLSSG→FSR3 桥接:dlssg_to_fsr3_amd_is_better.dll 将 NVIDIA Streamline 的 DLSS-G 调用无缝翻译为原生 DLSS FG、XeFG 或 AMD FidelityFX FSR 3.1 FG 调用,其调试开关在 dlssg_to_fsr3.ini 的 [Debug] 段落;
  • DLSS-NR 神经渲染:基于 wilsjo2 的 Pre-SR Multipass 后端,保留原生 SM75/SM86 MFG 解锁能力并提升 DLSS 5 兼容性,相关补丁后的 DLL(nvngx_dlssnr.dll)随安装写入游戏目录。

三、配置与故障排查速查

🔧 常用排查手段(参数详见 Troubleshooting.txt):

参数 作用
--dlss-debug / --dlss-debug=extra 在后台弹出调试控制台
--dlss-version 报告用于启用帧生成的 DLL 版本
--dlss-hags=on + --dlss-skip-validation 驱动不支持 HAGS 时模拟该功能
Ctrl+`` 连按两次 游戏内临时唤出调试控制台

Capcom / RE Engine 特别注意:该引擎有严格的内存与 Swapchain 完整性检查,需配合补丁版 REFramework dinput8.dll(安装包中的 "Patch REFramework" 选项),用于修复 XeFG 卡顿问题,说明见 REPatch/README.txt。

Linux / Proton 用户:除 DLL 覆盖外,还需添加启动参数:

WINEDLLOVERRIDES="dxgi=n,b" PROTON_ENABLE_NVAPI=1 PROTON_NVIDIA_NVCUDA=1 %command%

Proton 下 DX12 游戏若开启 OptiScaler 菜单崩溃,可将 OptiScaler.ini 中 [Menu] 的 OverlayMenu 设为 false。

四、仓库结构导览

目录/文件 职责
NVIDIA Environment/ dxgi 代理、nvapi64 代理、dlss-finder 识别模块
Dll version/ 核心代理 DLL 与 nvngx.ini 全量配置
DLLSG mod/ DLSSG→FSR3 桥接模块
SM86/ Turing/Ampere 伴生模块与 ReShade 热键配置
REPatch/ RE Engine 补丁版 REFramework
Licenses/ Streamline、FidelityFX、XeSS、REFramework 等授权与免责声明
DLSS unlocked.iss Inno Setup 安装器脚本(可阅读了解完整打包链路)

五、风险与合规提示 📌

  • 该项目为独立开源社区改造工具,与 NVIDIA/AMD/Intel 及任何游戏厂商无关联;
  • 仅建议用于单机游戏,多人与反作弊环境使用可能导致封号,LICENSE 与 License (DLSS unlocked).txt.txt) 中均有明确声明;
  • 完整法律说明见 Licenses/DISCLAIMER.txt。

总结

DLSS Unlocked 的精髓在于一条环环相扣的链路:dxgi.dll 代理抢占加载 → OptiScaler 挂钩 D3D12 管线 → nvapi64 代理伪装 GPU 能力 → MFG 解锁器放行帧生成校验 → DLSS-NR/FSR3 桥接接管渲染。理解这条链路后,无论是排查兼容性问题还是精细调参,你都知道该从哪一层下手。

登录后查看全文
dlss-unlocked