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…

这是什么?DLSSG Native 是一个 DLL mod,让 NVIDIA RTX 20(SM75)和 RTX 30(SM86)系列显卡也能在 D3D12 游戏里跑 DLSS 帧生成,尽管 NVIDIA 官方并不支持在这些显卡上用帧生成。它把自带的 C++ 封装、面向两代 GPU 的 PTX/Cubin 内核以及 310.1 推理模型打包进单个 DLL,而不使用 NVIDIA 原版的功能 DLL。
这是独立应用,还是放进游戏文件夹里的东西?它是一个 mod,不是应用:把一个代理 DLL(默认是 version.dll)和一个 INI 配置文件(dlssgsm86.ini)复制到包含游戏渲染可执行文件的文件夹即可。没有安装器,也没有要单独运行的程序。
怎么把它装进游戏?完全退出游戏,找到包含实际渲染 EXE 的文件夹,把 version.dll 和 dlssgsm86.ini 复制进去(如果 version.dll 已被占用,可改用 winmm.dll、dinput8.dll、winhttp.dll 或 dxgi.dll 等备用代理名)。在 INI 里按你的 GPU 代际选 Router=SM86 或 SM75,然后重启游戏并在设置里启用 DLSS 帧生成。
需要先装 CUDA Toolkit 或 Python 吗?不需要。它只需要一个提供 NGX/NVAPI/CUDA 接口的 NVIDIA 驱动(在 591.86 版驱动上测试过);无需单独安装 CUDA Toolkit 或 Python。
用之前有什么需要知道的坑吗?它通过 DLL 代理和 LoadLibrary 挂钩来工作,启发式杀毒引擎可能将其标记为可疑,尽管这些 DLL 是自签名的合法文件——SmartScreen 仍可能报警。它最多生成 3 帧(2X/3X/4X),不支持 6X、动态倍率、Reflex Warp 或自动 Reflex 矩阵查询。
它仅限 Windows 和 DirectX 12 游戏吗?是的——它目前只能在 Windows 10/11 x64 上用于 D3D12 游戏;Vulkan 支持计划在以后的版本提供,目前还没有。
它实际支持哪些 NVIDIA 显卡?SM86 路线面向 RTX 30 系列,已在真实的 RTX 3080 Ti 上验证过;SM75 路线面向 RTX 20 系列/Turing 显卡,但目前只通过了前向传播 PTX 测试,实际的 Turing/Cubin 验证仍未完成。
帧生成要额外占多少显存?在 RTX 3080 Ti 上,0.2.4 在 1080p 下额外占用约 320-340 MiB,1440p 下约 490-520 MiB,4K 下约 700-770 MiB,取决于 2X/3X/4X 倍率,这是在游戏本身所需显存之外的额外开销。
0.2.4 比最初的 0.1.0 版本快多少?在 RTX 3080 Ti 上,各分辨率和倍率下的 GPU 帧生成耗时降低了约 26-35%;例如 4K 4X 下每组帧从 7.115 ms 降到 4.804 ms。
支持 Vulkan 吗?还不支持——当前版本只适用于 D3D12;Vulkan 资源互操作和同步计划在下一个版本实现。
Creator
sdli1995
Size
34.9 MB
Stars
4.6K
Age
1mo
Commits · 90 Days