dlssg_for_sm86 README

The project's README from github.com/sdli1995/dlssg_for_sm86. As one markdown file: README.md.

DLSSG Native 0.2.4

简体中文 | English

Windows x64 / D3D12。运行文件为 version.dll 和 dlssg_sm86.ini。

自有 C++ 包装层、SM75/SM86 PTX/Cubin、310.1 模型和推理图都在一个 DLL 内。运行时不解压、加载或内存映射原厂 nvngx_dlssg.dll;仍使用系统 NVIDIA NGX/NVAPI/CUDA 驱动接口,无需 CUDA Toolkit。

0.2.4 简略更新说明

运行要求

不同配置的插帧额外显存参考

以下为 0.2.4 在 RTX 3080 Ti / 驱动 591.86 / PTX 下的参考预算,覆盖 SM86 默认精确、SM86 可选近似及 SM75 路由,共 27 组补测。按最终输出分辨率选行;例如 4K 输出 + DLSS 性能档仍使用 4K 这一行。

输出分辨率 2X:额外显存估计 3X:额外显存估计 4X:额外显存估计
1080p / 1920×1080 约 320 MiB 约 330 MiB 约 340 MiB
2K / 2560×1440 约 490 MiB 约 510 MiB 约 520 MiB
4K / 3840×2160 约 700 MiB 约 740 MiB 约 770 MiB

表值按预热后的进程本地显存增量计算,扣除基准程序预存输入和测试输出的占用,再加上一组 M 张 32 位输出缓冲,向上取整到 10 MiB(1 GiB = 1024 MiB)。这是稳定运行时的估计;游戏本体、额外在途帧、交换链及更大像素格式的开销还需另计,实际应留出高于表值的额外显存余量。这些数值不是整款游戏的最低显存容量或峰值保证;SM75 数值为 3080 Ti 上的路由参考。

本次测得默认精确档和可选近似档的显存占用相同;SM75 路由差异小于 1 MiB,采用同一取整预算。2X/3X/4X 复用常驻推理资源,因此降低倍率主要减少输出缓冲,未必显著降低总显存占用。

显存不足或超过 Windows 分配的显存预算时,可能出现偶发卡顿、帧时间尖峰,即使平均 FPS 看起来正常。 可降低贴图、输出分辨率或光追设置,并减少后台显存占用,为场景切换和资源加载留出余量。Microsoft 显存预算说明

安装与升级

适用 Windows x64、D3D12 游戏及 NVIDIA 驱动。无需额外安装 Python 或 CUDA Toolkit。当前模型为 310.1;Vulkan 支持见下一版本计划。

  1. 完全退出游戏。 首次安装直接进行下一步;从旧版升级时,把之前安装的本项目代理 DLL 和 dlssg_sm86.ini 备份到单独目录,再移出游戏目录中的旧代理。保留其他 Mod 的文件。
  2. 找到实际渲染 EXE 的目录。 《黑神话:悟空》为 D:\SteamLibrary\steamapps\common\BlackMythWukong\b1\Binaries\Win64,其中应有 b1-Win64-Shipping.exe。
  3. 复制一个代理 DLL 和 INI。 默认复制包根目录的 version.dll 与 dlssg_sm86.ini。若这个 DLL 名称被其他 Mod 占用,或游戏不会加载它,从 altnative 选择一个可用入口,按下表安装。每次只保留本项目的一个代理。
  4. 选择显卡路由。 3080 Ti 保持 Router=SM86, KernelImage=PTX;SM75/Turing 使用 Router=SM75, KernelImage=PTX。同一 INI 适用于全部入口。
  5. 重启游戏并启用 DLSS 帧生成。 在游戏中选择 2X/3X/4X;MaxGeneratedFrames=3 表示允许最多额外生成三帧,实际倍率由游戏请求。
入口 包内位置 用法
默认 version.dll 与 INI 放到渲染 EXE 旁
替代 altnative/winmm.dll 选择游戏会加载的名称,原名复制到 EXE 旁
替代 altnative/dinput8.dll 同上
替代 altnative/winhttp.dll 同上
替代 altnative/dxgi.dll 同上;当前仍为 D3D12 管线

所有 DLL 都包含完整推理资源。替代入口复制时保持原文件名;其他文件可保留在下载目录。不额外混用上游 SM75 包中的代理、注入器或后端。

HardwareBilinear=0 为默认精确档;需要可选近似采样时改为 1,仅 SM86 生效,生成像素可能变化。两档预设见 INI 说明。更改配置后重启游戏。

排查加载时临时设置 Logging.Level=2,日志位于 EXE 旁 dlssg_sm86/logs;若未出现项目日志,核对渲染 EXE 目录和所选 DLL 是否由游戏加载。正式游玩可恢复 Level=1。保留游戏自带的 DLSSG 文件。卸载时退出游戏,移除本次选择的代理 DLL 和 INI,需要回退时恢复备份。

杀软误报与签名

本项目通过系统 DLL 代理和 LoadLibrary hook 接入游戏,这类行为可能被安全软件的启发式检测误报。Native 化已经取消原厂 feature DLL 的解压和手动映射,但仍需保留接入 hook;是否属于误报,要结合具体检测结果由对应厂商复核。

全部五个 DLL 都使用 DLSSG Native Project 项目自签证书,可在 Windows 文件属性的“数字签名”中查看。签名用于核验签名者和文件完整性,不提供 Windows 默认信任,也不保证消除杀软告警。证书链不受信任、SmartScreen 的信誉提示与杀软检出属于不同检查;自签文件仍可能收到 SmartScreen 提示。Microsoft SmartScreen 说明

遇到告警时,先核对下载来源及发布 ZIP 旁的 .sha256,再记录安全软件名称、检测名称、病毒库版本和被检测 DLL 的 SHA256,向对应厂商提交误报复核。Microsoft Defender 的提交入口为 Microsoft 文件分析;核对哈希和签名不能代替厂商的检测结论。

统一基线:Release 0.1.0 → Native 0.2.4

本表统一使用 2026-09-07 的 dist/Release/version.dll,SHA256 03d445237d519ac48cd9226278a0f07aecd7ac597697697eb64404e1d51b3c5a。本表两档使用本次已签名 0.2.4 DLL c844646d…,与运行包中的文件相同。九个条件全部重新实测,GPU 为 RTX 3080 Ti / SM86,驱动 591.86。

单位为每个真实帧对应整组帧生成的 GPU 毫秒数,包含共用预处理;2X/3X/4X 分别生成 1/2/3 帧。默认精确档为 HardwareBilinear=0,可选近似档为 1。

分辨率 倍率 Release 0.1.0 (ms) 0.2.4 默认精确 (ms) 耗时降低 0.2.4 可选近似 (ms) 耗时降低
1080p 2X 1.530 0.990 35.26% 0.981 35.90%
1080p 3X 2.252 1.594 29.23% 1.572 30.21%
1080p 4X 2.979 2.201 26.13% 2.160 27.49%
2K / 1440p 2X 2.497 1.638 34.38% 1.629 34.77%
2K / 1440p 3X 3.774 2.610 30.84% 2.575 31.78%
2K / 1440p 4X 4.958 3.579 27.82% 3.706 25.26%
4K 2X 3.186 2.099 34.12% 2.066 35.14%
4K 3X 5.071 3.453 31.90% 3.366 33.61%
4K 4X 7.115 4.804 32.48% 4.752 33.20%

耗时降低统一按 (Release 耗时 − 当前耗时) / Release 耗时 计算,使用未取整数据。毫秒数为各轮中位数的中位数。每个条件四轮,旧 Release 在每轮前后各测一次,精确/近似顺序交替;每次测 256 组,共 144 次运行。GPU 未锁频,未删除异常值。

所有版本使用相同的合成《悟空》资源格式输入、PTX、HIGH=100 计算队列,每次 Evaluate 独立提交;1.5 秒负载预热后 Reset,再预热 64 帧。旧 Release 的内核格式由 Auto/Cubin 显式改为 PTX,其余计算路径来自该原始 DLL。旧版显式加载与内嵌资源一致的 310.1 feature DLL;初始化、解压和加载时间均不计入本表。

精确档计时后输出与旧 Release 逐字节一致;近似档的真实帧及 alpha 不变,生成 RGB 有差异。这里是 GPU pipeline 耗时,整组跨度包含 Evaluate 之间的提交空隙;游戏渲染、Present、上传和读回不计入。不能将耗时降幅当作游戏 FPS 增幅。

本轮 1440p 4X 测量波动较大,近似档中位数慢于默认档,表中保留原始结果。追加 20 次与 0.2.3 的交错对照后,两版默认 / 近似档的中位数差异均不足 0.4%,未复现明显回退。近似采样不保证在所有条件下更快,建议优先使用默认精确档。

插帧后帧率怎么估算

先在相同场景、输出分辨率、DLSS 超分档位和画质设置下关闭帧生成,得到帧率 F_off。用 1000 / F_off 换算基础帧时间,再从上表按分辨率、插帧倍率和默认精确/可选近似配置选择整组插帧耗时 T_FG(毫秒)。

基础帧时间 T_base (ms) = 1000 / F_off
开启插帧后的帧组时间 T_group (ms) ≈ T_base + T_FG
真实帧/帧组速率 G (组/s) ≈ 1000 / T_group
插帧后总帧率 F_out (FPS) ≈ G × M
                       = 1000 × M / (1000 / F_off + T_FG)

M 是总倍率(2X/3X/4X 对应 2/3/4)。一组包含一个真实帧和 M − 1 个生成帧;上表的 T_FG 已包含整组生成帧和共用预处理,不能再乘 M − 1。在这个估算中,开启插帧后的真实帧/帧组速率 G 低于关闭插帧的 F_off。

例如,未开帧生成约 50 FPS,基础帧时间为 20 ms。采用上表 RTX 3080 Ti / SM86 的 4K 4X 插帧组耗时:

配置 插帧组耗时 T_FG (ms) 估计帧组时间 (ms) 估计真实帧/帧组速率 (组/s) 估计插帧后总帧率
Release 0.1.0 7.115 27.115 36.9 147.5 FPS
0.2.4 默认精确(HardwareBilinear=0) 4.804 24.804 40.3 161.3 FPS
0.2.4 可选近似(HardwareBilinear=1) 4.752 24.752 40.4 161.6 FPS

1080p、1440p 或 2X/3X 时,换用上表对应行,并填入该画质设置下自己测得的 F_off。这些插帧耗时来自 3080 Ti / SM86;其他显卡或 SM75 路由应使用对应实测耗时。

这是将基础渲染时间与插帧组开销相加的粗略估计。游戏中的 GPU 资源争用、同步、CPU 开销、限帧及显示器刷新率会影响最终结果;估计值不保证等于计数器读数或实际显示帧率。

《黑神话:悟空》实测反馈

用户提供的 RTX 3080 Ti 同场景近似读数:4K 输出、DLSS 性能档、全景光线追踪关闭、全影视级画质。关闭帧生成时约 50 FPS,开启 4X 后:

状态 真实帧/帧组速率 含生成帧的总帧率
优化前 约 36 组/s 约 144 FPS
0.2.3 性能优化后的用户反馈 约 40 组/s 约 160 FPS

帧组速率和总帧率均提升约 11.1%,即约 +4 组/s、+16 FPS。这里记录的是用户反馈的游戏实测,不是上述公式计算出的结果,这份 0.2.3 历史反馈未在 0.2.4 中重新进行游戏测量。不能把离线插帧耗时降低的百分比直接当作游戏 FPS 增幅。

诊断与边界

默认 Logging.Level=1 只记错误;排查时改为 2 或 3,日志在 dlssg_sm86/logs。可选 GPU 计时项见 INI 说明。

调用方必须提供正反 clip 矩阵;最高生成 3 帧,不支持 6X/动态倍率、Reflex Warp 或 Reflex 自动矩阵查询。输入状态为 NON_PIXEL_SHADER_RESOURCE,输出为 UAV;调用方负责提交、同步和显示。本版优化的是 GPU 计算开销,不能将离线耗时下降当成实测游戏 FPS 增幅。

SM75 路由已在 3080 Ti 上完成前向 PTX 检查;物理 Turing/Cubin 和新版游戏长期运行仍待验证。

SM75 来源与致谢

感谢 Coldwood1026 的 RTX 20 系列 / SM75 适配工作。GPU 资源引用 dlssg_for_sm75(原名 dlssg_for_sm86)的固定提交 c60c2aa…,由本项目独立宿主加载和调度。来源及许可见 THIRD_PARTY_NOTICES.txt。

下一版本计划

  1. Vulkan 支持:增加 Vulkan 资源接入、互操作与同步,并验证 SM75/SM86 路径。
  2. 模型更新到最新 DLSSG:实施时固定最新可用版本及哈希,适配模型/推理图并评估画质、显存和耗时。

当前版本仍为 D3D12 + 310.1 模型。详细计划见 路线图。

dlssg_for_sm86 (sdli1995/dlssg_for_sm86)

Searching Database…

What is this?DLSSG Native is a DLL mod that lets NVIDIA RTX 20 (SM75) and RTX 30 (SM86) series GPUs run DLSS Frame Generation in D3D12 games, even though NVIDIA doesn't officially support frame generation on those cards. It bundles its own C++ wrapper, PTX/Cubin kernels for both GPU generations, and the 310.1 inference model into a single DLL instead of using NVIDIA's original feature DLL.
Is this a standalone app or something I drop into a game folder?It's a mod, not an app: you copy a proxy DLL (version.dll by default) and an INI config file (dlssgsm86.ini) into the folder containing the game's rendering executable. There's no installer or separate program to run.
How do I install it into a game?Fully quit the game, find the folder containing the actual rendering EXE, and copy version.dll plus dlssgsm86.ini there (or use an alternate proxy name like winmm.dll, dinput8.dll, winhttp.dll or dxgi.dll if version.dll is taken). Pick Router=SM86 or SM75 in the INI for your GPU generation, then restart the game and enable DLSS Frame Generation in its settings.
Do I need to install CUDA Toolkit or Python first?No. It only needs an NVIDIA driver exposing the NGX/NVAPI/CUDA interfaces (tested with driver 591.86); installing CUDA Toolkit or Python separately is not required.
Any catches I should know about before using it?It works by DLL proxying and LoadLibrary hooking, which heuristic antivirus engines can flag as suspicious even though the DLLs are self-signed and legitimate — SmartScreen may still warn. It also caps at 3 generated frames (2X/3X/4X) and does not support 6X, dynamic multipliers, Reflex Warp, or automatic Reflex matrix queries.
Is this limited to Windows and DirectX 12 games?Yes — it currently only works on Windows 10/11 x64 with D3D12 games; Vulkan support is planned for a future release but isn't available yet.
Which NVIDIA GPUs does it actually work with?The SM86 route targets the RTX 30 series and has been validated on a real RTX 3080 Ti; the SM75 route targets RTX 20 series/Turing cards but has only passed a forward-pass PTX test so far, with physical Turing/Cubin validation still pending.
How much extra VRAM does frame generation use?On an RTX 3080 Ti, 0.2.4 adds roughly 320-340 MiB at 1080p, 490-520 MiB at 1440p, and 700-770 MiB at 4K depending on the 2X/3X/4X multiplier, on top of whatever VRAM the game itself needs.
How much faster is 0.2.4 than the original 0.1.0 release?GPU frame-generation time dropped by about 26-35% across resolutions and multipliers on an RTX 3080 Ti; for example 4K at 4X fell from 7.115 ms to 4.804 ms per frame group.
Is Vulkan supported?Not yet — the current version only works with D3D12; Vulkan resource interop and synchronization are planned for the next release.
Creator
sdli1995
Size
34.9 MB
Stars
4.6K
Age
1mo
Commits · 90 Days