RH DLSS5 Enhance (NR / Upscale)
It really runs DLSS 5 on your frames — the hard part is sourcing the NVIDIA runtime yourself
- image
- video
- images
- video
- status
Two things decide whether you even want this node out of the way. First, the name isn't a lie: no API, no key, no cloud. RH_DLSS5Enhance drives NVIDIA's actual DLSS 5 Neural Rendering runtime (NGX feature 18) on your GPU, through the same D3D12 contract a game engine uses. Second, the catch: this pack ships zero of the NVIDIA runtime. You source nvngx_dlssnr.dll and friends yourself, because NVIDIA won't let the author redistribute them. If that sounds like a dealbreaker - it's one afternoon, and then it just works.
The author is RunningHub, a cloud ComfyUI platform, and this pack is what they built to run DLSS over their Linux GPU pool. That explains the design: on Windows the D3D12/NGX bridge loads in-process via ctypes (easy); on Linux frames stream over pipes to dlss5nr_host.exe under Wine - verified, but a project. See the install section.
What it actually does (and what it isn't)
Feed it an IMAGE batch or a VIDEO (LoadImage or LoadVideo, both optional, both processed if connected) and pick a mode:
1x (DLAA / native)- Neural Rendering at native size. Think of it as NVIDIA's denoise/cleanup pass: it reconstructs detail and scrubs compression artifacts without adding pixels.1.5x / 1.724x / 2x / 3x- fixed NVIDIA upscaling factors. The ordinary DLSS super-resolution carrier runs first, then the neural pass on top. Fixed factors only; no arbitrary 1.7x-of-whatever.
Per the KB's upscaling essay this belongs firmly in the "more pixels / cleanup" bucket, not the "invent detail" one. It will not grow pores and eyelashes the way SeedVR2 or SUPIR do - it's closer to Lanczos with a really good sharpener, and the community reads that as more natural on already-clean sources. Where it genuinely shines: scrubbing artifacts off AI-rendered video frames, and cleaning up generations before a real upscale. That's also the trap: genuinely soft or damaged source? Wrong tool - you want a generative restorer.
Mechanically: frames go in as RGB float plus FP16 motion vectors (optical flow via OpenCV DIS or NVIDIA hardware NVOFA, or zero for stills), reconstruct against temporal history, and come out as plain IMAGE/VIDEO. Scene cuts reset that history so you don't get ghosts. Hence batch_mode: for independent stills set it to still images so every frame resets.
The knobs that matter
There are a lot of widgets; a beginner sets four and leaves the rest:
upscaling_mode- 1x to start. You don't neednvngx_dlss.dllfor 1x, which is handy while you're testing.style-default/natural(stays closer to source) /cinematic(pushes contrast).structure(default 1.5) - detail reconstruction strength. If output looks plasticky or over-sharpened, drop it. This is the first thing to turn when something looks wrong.skin+auto_mask- withauto_maskon (the default), the model finds skin regions itself and applies theskinstrength there.skindefaults to −1, which means "let the model decide" - push it up for portraits with smooth-but-structured skin. Leavepresetat 0,intensityat 1.0.
Outputs: images → SaveImage, video → SaveVideo (video I/O needs a recent ComfyUI with the VIDEO type; IMAGE works everywhere), plus a status string naming backend and size. Nice touch: channel_order auto-detects the R/B swap that differs between runtime builds; force RGBA/BGRA there if colors look wrong.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/RH-RunningHub/ComfyUI-RH-DLSS5
Then the real install: create ComfyUI/models/dlss5/ and drop in, unrenamed, nvngx_dlssnr.dll (always; ~166 MB universal build, RTX 20–50), nvngx_dlss.dll (only for >1x), and _nvngx.dll (from a driver package: 7z e <driver>.exe "Display.Driver/_nvngx.dll"). No HuggingFace mirrors exist - NVIDIA sources only, per the README's provenance table. Restart ComfyUI and "RH DLSS5 Enhance (NR / Upscale)" appears under image/upscaling. ComfyUI Manager may list the pack as "ComfyUI-RH-DLSS5", but the DLLs are never auto-downloaded either way.
Where people get burned
- Missing runtime DLLs is the number one failure - the node raises until
nvngx_dlssnr.dllis findable (lookup: yourruntime_dir→models/dlss5→ the bundledruntime/fallback). - Wrong colors - R/B swapped is a known quirk across runtime builds;
autousually catches it on frame one, otherwise force the channel order. - Linux - Wine 11 + DXVK 3.1 + vkd3d-proton + DXVK-NVAPI in the prefix, plus Xvfb for headless boxes. The README's layered self-check is worth running top to bottom; on a container the classic failure is missing
libnvidia-rtcoresurfacing asvr -3. - The GPU question - RTX required, current driver. The tested 310.8 runtime build targets RTX 30/40; stock NVIDIA SDK builds may be RTX 50-only.
If you're on Windows with an RTX card, this is the easiest "real NVIDIA DLSS in ComfyUI" I've seen. Expect to spend most of your time on file acquisition, not the node itself.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| imageopt | IMAGE | Optional image batch (e.g. LoadImage). Each batch entry is one frame in temporal order. | |
| videoopt | VIDEO | Optional video (e.g. LoadVideo). Frames are processed in temporal order. | |
| upscaling_modeopt | COMBO | 1x (DLAA / native) | 1x enhances at native size; other modes upscale with the DLSS carrier (feature 1) before the neural pass (feature 18). Fixed NVIDIA factors only. |
| styleopt | COMBO | default | Neural rendering style. Natural stays closer to the source; cinematic pushes contrast. |
| presetopt | INT | 00–9 | Internal render preset hint (DLSSNR.Hint.Render.Preset). Keep 0 unless the runtime documents another value. |
| intensityopt | FLOAT | 1.000–2 | Neural pass strength. Above 1.0 usually has no extra effect; below 1.0 blends towards the source. |
| toneopt | FLOAT | 1.000–2 | Local tone mapping strength (DLSSNR.LocalToneStrength). |
| structureopt | FLOAT | 1.500–2 | Local detail / structure reconstruction strength (DLSSNR.LocalStructureStrength). |
| skinopt | FLOAT | -1.00-1–2 | Skin structure strength (DLSSNR.SkinStructureStrength). Only active with auto_mask on. Negative leaves the parameter at the model default (the reference tool's -1). |
| auto_maskopt | COMBO | on | Let the model detect skin regions it reconstructs. Gates the skin parameter. |
| motionopt | COMBO | auto | Motion vectors for temporal accumulation. auto = hardware NVOFA optical flow when available, else DIS optical flow, else zero motion; nvof = hardware NVOFA (falls back to DIS with a note); optical_flow = OpenCV DIS; none = zero motion. |
| scene_change_thresholdopt | FLOAT | 0.240.01–1 | Mean luminance change above which temporal history resets (scene cut detection). Optical flow only. |
| batch_modeopt | COMBO | temporal sequence | still images resets temporal history for every frame; temporal sequence keeps history between frames (video / coherent batches). |
| warmup_framesopt | INT | 00–120 | Warm-up budget reported to the worker. 0 is fine; the first frame initialises temporal history via reset. |
| keep_audioopt | COMBO | on | Keep the original audio in the VIDEO output when the environment supports it. |
| backendopt | COMBO | auto | auto picks the native backend for the OS. linux-wine streams frames to dlss5nr_host.exe under Wine; windows-bridge runs the D3D12 bridge in-process. |
| channel_orderopt | COMBO | auto | Channel layout of the NR output. auto detects R/B swap on the first frame; force RGBA/BGRA if colours look wrong. |
| hdropt | COMBO | off | on feeds linear light to the neural model instead of the sRGB proxy (matches the reference --nr-hdr; higher-fidelity tonal response, costs a colour-space roundtrip). off keeps the default sRGB-encoded path. Existing workflows default to off. |
| global_toneopt | FLOAT | -1.00-1–2 | Global tone strength (DLSSNR.GlobalToneStrength) - the knob that lets the model shift overall brightness (the reference tool's global_tone). -1 leaves it at the model default; 0 disables global tone; 0-2 overrides manually. No-op on the 310.8 test runtime (verified); may act on other DLL builds. |
| detailopt | FLOAT | 1.000–2 | Composite strength over the original frame (reference tool's detail): 0 = keep the original, 1 = full NR result, up to 2 = amplify the model's change (brightening/denoise) beyond 100%. Blended in linear light. |
| coloropt | FLOAT | 1.000–1 | Chroma follow (reference tool's color): 0 = keep the original hue and take only the model's luminance, 1 = take the model's colour fully. Guards against the model shifting colours. |
| runtime_diropt | STRING | Optional override of the runtime folder holding nvngx_dlssnr.dll (and nvngx_dlss.dll for >1x). Empty uses DLSS5_RUNTIME_DIR, then the plugin's runtime/ folder. | |
| wine_prefixopt | STRING | Linux only: WINEPREFIX for the worker. Empty keeps the environment default. The prefix needs DXVK-NVAPI + vkd3d-proton for NVIDIA NGX. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| video | VIDEO | — |
| status | STRING | — |