A ReShade addon that enables DLSS multi-frame generation (3x / 4x and above) on GeForce RTX 40-series cards, which NVIDIA ships gated to RTX 50-series only — and corrects the frame interpolation so the extra frames carry new motion instead of repeats.
Nothing on disk is modified. Every patch is applied to the mapped image at runtime and reverted when the addon unloads. No NVIDIA files are redistributed here.
Note
Vulkan support is new in version 0.6 and remains experimental while its game compatibility matrix grows. Direct3D 12 behavior remains the established path.
This repository is a fork of the original ReShade/RenoDX addon project created by Dreamt. Full credit for that original addon implementation goes to Dreamt and the contributors already credited in this repository.
The underlying technical approach originates from
dashdogy's RTX40MFG-Unlock.
Dashdogy identified Ada's higher-multiplier midpoint compaction problem and
developed the original ASI implementation that verifies the active Streamline
wrapper and NGX provider, intercepts slGetFeatureFunction, adjusts
slDLSSGSetOptions, observes real presentation counts through
slDLSSGGetState, and applies the corrected slot-9 temporal program entirely
in mapped process memory. Dreamt then adapted this work into the ReShade/RenoDX
addon on which this fork is based.
This fork expands the original project with broader game and runtime compatibility work. Its additions include:
- Support and fixes for S.T.A.L.K.E.R. 2: Heart of Chornobyl, including its native 3x/4x selector and bundled/OTA provider handling.
- Temporal-patch compatibility with newer 310.9 DLSS-G providers.
- Safer ReShade addon lifecycle handling across temporary device probing and addon reloads.
- Bounded background provider discovery, removing continuous module enumeration
from the active
Presentpath. - Additional compatibility controls for Streamline flip metering and software pacing fallback behavior.
- Runtime diagnostics using
slDLSSGSetOptionsandslDLSSGGetState, including requested multipliers, DLSS-G status, and actual presentation telemetry. - Experimental Vulkan renderer and NGX provider discovery.
- Compatibility testing and documentation across the games and runtime combinations listed below.
These additions extend Dreamt's addon and dashdogy's research; they do not replace or claim authorship of either original contribution.
- Tested Games
- Requirements
- Usage
- Using with RenoDX DLSS5
- Verifying Operation
- Experimental Vulkan Support
- Settings
- Troubleshooting
- How it works
- Building
- Credits
| Game | Status |
|---|---|
| S.T.A.L.K.E.R. 2: Heart of Chornobyl | Working |
| God of War Ragnarök | Working |
| Death Stranding 2: On the Beach | Working |
| Clair Obscur: Expedition 33 | Working |
| The Last of Us Part II Remastered | Working |
| Resident Evil Requiem | Working |
| Assassin's Creed IV: Black Flag | Working |
| PRAGMATA | Working |
| Cyberpunk 2077 | Working |
| Alan Wake 2 | Working |
| Dragon's Dogma 2 | Working |
| The Blood of Dawnwalker | Maybe |
| Starfield | Working |
| Star Wars Outlaws | Working |
| Marvel's Spider-Man 2 | Working |
| Mortal Shell II | Working |
| Resonance: A Plague Tale Legacy | Working |
| Black Myth: Wukong | Working |
| Assetto Corsa Rally | Working |
| Indiana Jones and the Great Circle | Working — launch with +r_allowBlackListedLayers 1 so ReShade can load through Vulkan |
| Hell Is Us | Working |
| Silent Hill 2 | Working |
| Forza Horizon 6 | Working |
| Assassin's Creed Shadows | Working |
| Stellar Blade | Working |
| Doom the Dark Ages | Working — launch with +r_allowBlackListedLayers 1 so ReShade can load through Vulkan |
| Horizon Forbidden West | Working |
| 007 The First Light | Working |
These are the games personally tested with this fork; this is not a claim of universal compatibility. Results may vary with the game version, DLSS and Streamline versions, GPU, drivers, and configuration.
| Game | Reaches | Notes |
|---|---|---|
| Cyberpunk 2077 | 6x | Has its own 2x/3x/4x selector; the addon can force beyond it |
| Deep Rock Galactic | 6x | FG is on/off only, so the addon drives the count entirely. Needs a modern nvngx_dlssg.dll (see below) |
| Grand Theft Auto V Enhanced | 4x | Genuine ceiling — its bundled sl.dlss_g 2.9.1.0 clamps to 3 generated frames |
| S.T.A.L.K.E.R. 2: Heart of Chornobyl | 4x | Uses both a bundled snippet and an opaque NVIDIA OTA provider. The addon patches both, bypasses Streamline's stale Ada limit, and exposes 3x/4x through the native menu |
Other titles may work, but compatibility should be evaluated per game and runtime version.
- GeForce RTX 40-series. See Why not 30-series? below.
- ReShade with addon support (this is an
.addon64, not an effect). - A game shipping DLSS frame generation via Streamline, with a reasonably modern
nvngx_dlssg.dll(310.x). Games still on the DLSS 3 snippet (3.5.x) contain no multi-frame code at all and need a newer one dropped in beside the executable. When an update is needed, use the latestnvngx_dlssg.dllavailable from TechPowerUp.
- Install ReShade with addon support, or install the appropriate RenoDX mod for the game.
- Download the latest release from this fork.
- Place
renodx-mfgunlock.addon64in the ReShade addon location used by the game. This is commonly the directory containing the game executable, but a game-specific RenoDX package may use its own addon folder. - Use the latest
nvngx_dlssg.dllavailable from TechPowerUp. Back up the DLL bundled with the game before replacing it. - Launch the game and select the desired Multi Frame Generation multiplier directly from the game's graphics settings. If the game only provides an on/off Frame Generation option, use Force frame multiplier in the ReShade MFG Unlock addon panel instead.
The latest nvngx_dlssg.dll is the normal recommendation when this addon is
used by itself. When using it together with RenoDX DLSS5, first read the
version-specific guidance below instead of mixing individual DLLs from
different packages.
MFG Unlock and the RenoDX DLSS5 addon can work together, but compatibility may depend on the complete Streamline and NVIDIA NGX/DLSS runtime combination. Their coexistence should not yet be treated as universal across runtime versions, games, or load orders.
| Configuration | Result | Confidence |
|---|---|---|
| Streamline 2.12.129 with the corresponding 310.7.129 NVIDIA DLLs | Working together and individually | Known-good user report |
| Streamline 2.14.0 with 310.9 NVIDIA DLLs | Severe menu slowdown reported in STALKER 2 and Cyberpunk 2077 when both addons were loaded | Under investigation; not confirmed universal |
Special thanks to mugensc for reproducing the combined-addon issue, testing both addons separately, and identifying the 2.12.129 / 310.7.129 combination as a working solution. That careful isolation is the basis for the compatibility guidance in this section.
The report above establishes a useful workaround, but it does not prove that Streamline 2.14.0 or the 310.9 provider is independently defective. The cause may involve runtime changes, hook/load order, a local-versus-OTA provider selection, or an interaction that only occurs when both addons are active.
- Follow the RenoDX DLSS5 installation and early-loading instructions. The
RenoDX documentation may require its DLSS addon to be listed under
[ADDON] LoadFromDllMaininReShade.ini. - Keep all Streamline files from one package together. Keep the NVIDIA NGX/DLSS DLLs on the matching build; do not update only one DLL in the set.
- Restart the game after every addon, Streamline, or NVIDIA DLL change.
- Test MFG Unlock alone, RenoDX DLSS5 alone, and then both together.
- If the combined configuration falls into single-digit framerates, use the known-good 2.12.129 / 310.7.129 set while the newer combination is being investigated.
ForceOTAPlugins=0 means this addon does not force OTA loading. It does not
prevent the game itself from requesting an OTA provider. Check the ReShade and
Streamline logs to confirm the actual loaded module paths and versions rather
than assuming the DLL beside the executable was selected.
Useful information for a compatibility report:
- Game name and version.
- GPU and driver version.
- MFG Unlock and RenoDX DLSS5 addon versions.
- Versions and paths of
sl.interposer.dll,sl.dlss_g.dll,nvngx_dlssg.dll, andnvngx_dlssnr.dllactually loaded by the process. - Selected multiplier and whether the problem also occurs at native 2x.
- ReShade and Streamline/DLSS-G logs from the same run.
See the current RenoDX installation notes for its addon-specific loading requirements.
Open ReShade, select the Add-ons tab, and open MFG Unlock. With DLSS Frame Generation enabled in the game, check the following:
- The expected renderer is detected.
- The DLSS-G provider was found and its architecture gates were rewritten.
- The temporal fix was applied.
slDLSSGSetOptionsandslDLSSGGetStatewere intercepted.- The DLSS-G runtime status is OK.
- Actual presentation telemetry rises above one when generated frames are active.
The presentation count comes from NVIDIA Streamline's slDLSSGGetState. For
frame-pacing analysis, use NVIDIA FrameView and inspect
MsBetweenDisplayChange; ordinary Present-based counters may not represent the
final display timing used by DLSS-G.
Version 0.6 introduces an experimental Vulkan compatibility path. It recognizes
Vulkan NGX providers while keeping the existing renderer-independent Streamline
slDLSSGSetOptions and slDLSSGGetState integration.
This does not add Frame Generation to games that do not already integrate Streamline DLSS-G. Vulkan support has not yet completed the same game matrix as Direct3D 12 and should not be considered stable or universal. When testing, confirm that the overlay reports Vulkan (experimental) and use the verification checklist above.
Vulkan MFG Unlock support has been tested successfully. ReShade requires the following game launch option so its Vulkan layer is allowed to load:
+r_allowBlackListedLayers 1
Without this option, ReShade—and therefore the addon—may not initialize in the game.
Written to your ReShade.ini under [RenoDX.MFGUnlock]:
| Key | Default | Meaning |
|---|---|---|
Enabled |
1 |
Master switch for the whole addon |
MaxCount |
4 |
The DLSSG.MultiFrameCountMax value reported to the runtime |
ForceFlipMeteringOff |
0 |
Normally leave off. Enable only if 3x/4x freezes; this forces Streamline's legacy software pacing fallback and requires a game restart |
TemporalFix |
1 |
The interpolation correction. Leave on |
ForceMultiplier |
0 |
0 respects the game's own choice; 2–6 forces that multiplier |
RaiseFrameCeiling |
0 |
Raises an old Streamline plugin's compiled hard limit to 6x. Off by default because that breaks some games; the stale device-limit bypass needed by STALKER 2 is always applied |
ForceOTAPlugins |
0 |
Asks Streamline to load the driver's OTA plugin set. Off by default; see notes |
If a game has its own multiplier selector, leave ForceMultiplier at 0 and use
the game's setting.
- Confirm that ReShade was installed with full addon support.
- Confirm that the
.addon64file is in the addon location used by that game. - Check the ReShade log for an addon loading or API-version error.
- Toggle Frame Generation off and on after the game reaches its graphics menu.
- Confirm that the DLSS-G provider and Streamline hooks are shown as active in the MFG Unlock panel.
- Confirm that the game is loading the expected
nvngx_dlssg.dll, including its full path and version in the log.
- Check the
slDLSSGGetStateresult and DLSS-G status displayed in the addon. - Check whether actual presentation telemetry exceeds one.
- Look for Streamline or NGX errors before changing the forced multiplier.
- First leave Force legacy software flip pacing disabled with current Streamline builds.
- If the image freezes specifically at higher multipliers, enable the compatibility option and fully restart the game.
- Measure final presentation pacing with FrameView rather than relying only on a Present-based overlay graph.
- Follow the Using with RenoDX DLSS5 section.
- Test each addon individually and restart between tests.
- Use a complete matched runtime set; do not replace only one Streamline or NVIDIA DLL.
- Record the actual loaded module paths because an OTA provider may override a local DLL.
Three gates decide whether multi-frame generation is available, and the addon opens the two that matter:
nvngx_dlssg.dllexportsNVSDK_NGX_GetGPUArchitectureas a hardcoded minimum architecture —mov eax, 0x190(Ada). A 40-series card already clears this, so it is left alone.DLSSGInstanceManager::PopulateParameterscompares the NVAPI arch id against0x1b0(Blackwell) to decide whether to advertise a max frame count of 5 or 1.- A second compare against the same constant feeds a runtime capability flag that drives generation itself.
Patching (2) without (3) makes the options appear and then render black. The addon rewrites both compares, in both encodings, in memory only — NGX verifies the snippet's Authenticode signature at load time, so the same bytes changed on disk make frame generation disappear entirely.
Unlocking the count alone is not enough. The interpolation kernel blends with a
compiled-in 0.5, so every generated frame lands at the temporal midpoint: 4x
produces three identical half-way frames, the counter doubles and the motion does
not get smoother. The addon decompresses the kernel's PTX, rewrites the blend
weight to come from the kernel's own temporal parameter, and re-emits the fatbin
so the driver JITs the corrected version.
DLSS-G owns frame generation and presentation pacing; this addon does not implement a separate frame scheduler or issue generated-frame presents. With current Streamline builds, pacing is normally left to the runtime. The optional legacy compatibility setting disables the plugin's flip-metering path and forces its existing software fallback only when higher multipliers otherwise freeze presentation.
Each source file documents its own area in detail — start with the header comment
in addon.cpp.
Not because of the gates — those are just constants. Because the DLSS 4 snippet
ships no Ampere machine code. Its 70 fatbins carry PTX sm_89 ×70,
PTX sm_120 ×31 and cubin sm_89 ×31, and nothing for sm_80/sm_86. PTX is
forward-compatible only, so sm_89 PTX cannot be JIT-compiled down to sm_86; the
module load fails outright.
Retargeting is theoretically open — the kernels use only
mma.sync m16n8k16/m16n8k8 FP16 and ldmatrix, with zero instructions newer
than sm_86 (no FP8, no wgmma, no TMA), and the old hardware optical-flow
dependency is gone in DLSS 4. But frame generation costs roughly a fixed amount
per generated frame, and Ampere has far less FP16 tensor throughput per SM, so
the generation pass would likely cost more than the frame it saves. It was
investigated and deliberately dropped.
The addon is built as part of a RenoDX tree, which supplies ReShade, ImGui, Detours, and the NGX/Streamline headers.
git clone --recursive https://github.com/clshortfuse/renodx
cp -r src/addons/mfgunlock <renodx>/src/addons/
cd <renodx>
cmake --preset vs-x64
cmake --build build.vs --config Release --target mfgunlockThe build globs src/**/**/addon.cpp, so no CMake changes are needed. The output
is build.vs/Release/renodx-mfgunlock.addon64.
Prebuilt binaries are attached to Releases.
- dashdogy/RTX40MFG-Unlock provided the foundational reverse engineering and original working ASI implementation. Dashdogy diagnosed the midpoint compaction bug, demonstrated the corrected slot-9 temporal program, established the verified Streamline/NGX interception strategy, and showed how to apply the fix only to mapped process memory without modifying NVIDIA DLLs on disk.
- Dashdogy's project is published under the
MIT License.
The implementation in
midpoint.hppremains independently written for the ReShade-addon format and was verified by reproducing the original patcher's output digest byte-for-byte. - Dreamt created the original ReShade/RenoDX addon adaptation and repository from which this project is forked.
- Special thanks to mugensc for the RenoDX DLSS5 compatibility testing and known-good runtime combination.
- Built on RenoDX by clshortfuse, and ReShade by crosire.
Not affiliated with or endorsed by NVIDIA. This modifies process memory of a running game; use it on your own hardware at your own risk, and expect anti-cheat in multiplayer titles to object. Results on hardware NVIDIA did not ship this feature for are to be judged by eye.
MIT — see LICENSE.