Nodes/ComfyUI-RH-DLSS5/RH DLSS5 Enhance (NR / Upscale)
ComfyUI Node

RH DLSS5 Enhance (NR / Upscale)

It really runs DLSS 5 on your frames — the hard part is sourcing the NVIDIA runtime yourself

By RH-RunningHub·Created about 22 hours ago·Updated about 21 hours ago· 2
RH DLSS5 Enhance (NR / Upscale)
  • image
  • video
  • images
  • video
  • status
upscaling_mode1x (DLAA / native)
styledefault
preset0
intensity1.00
tone1.00
structure1.50
skin-1.00
auto_maskon
motionauto
scene_change_threshold0.24
batch_modetemporal sequence
warmup_frames0
keep_audioon
backendauto
channel_orderauto
hdroff
global_tone-1.00
detail1.00
color1.00
runtime_dir
wine_prefix

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 need nvngx_dlss.dll for 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 - with auto_mask on (the default), the model finds skin regions itself and applies the skin strength there. skin defaults to −1, which means "let the model decide" - push it up for portraits with smooth-but-structured skin. Leave preset at 0, intensity at 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.dll is findable (lookup: your runtime_dirmodels/dlss5 → the bundled runtime/ fallback).
  • Wrong colors - R/B swapped is a known quirk across runtime builds; auto usually 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-rtcore surfacing as vr -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.

Categoryimage/upscaling

Inputs (23)

NameTypeDefaultDescription
imageoptIMAGEOptional image batch (e.g. LoadImage). Each batch entry is one frame in temporal order.
videooptVIDEOOptional video (e.g. LoadVideo). Frames are processed in temporal order.
upscaling_modeoptCOMBO1x (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.
styleoptCOMBOdefaultNeural rendering style. Natural stays closer to the source; cinematic pushes contrast.
presetoptINT00–9Internal render preset hint (DLSSNR.Hint.Render.Preset). Keep 0 unless the runtime documents another value.
intensityoptFLOAT1.000–2Neural pass strength. Above 1.0 usually has no extra effect; below 1.0 blends towards the source.
toneoptFLOAT1.000–2Local tone mapping strength (DLSSNR.LocalToneStrength).
structureoptFLOAT1.500–2Local detail / structure reconstruction strength (DLSSNR.LocalStructureStrength).
skinoptFLOAT-1.00-1–2Skin structure strength (DLSSNR.SkinStructureStrength). Only active with auto_mask on. Negative leaves the parameter at the model default (the reference tool's -1).
auto_maskoptCOMBOonLet the model detect skin regions it reconstructs. Gates the skin parameter.
motionoptCOMBOautoMotion 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_thresholdoptFLOAT0.240.01–1Mean luminance change above which temporal history resets (scene cut detection). Optical flow only.
batch_modeoptCOMBOtemporal sequencestill images resets temporal history for every frame; temporal sequence keeps history between frames (video / coherent batches).
warmup_framesoptINT00–120Warm-up budget reported to the worker. 0 is fine; the first frame initialises temporal history via reset.
keep_audiooptCOMBOonKeep the original audio in the VIDEO output when the environment supports it.
backendoptCOMBOautoauto 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_orderoptCOMBOautoChannel layout of the NR output. auto detects R/B swap on the first frame; force RGBA/BGRA if colours look wrong.
hdroptCOMBOoffon 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_toneoptFLOAT-1.00-1–2Global 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.
detailoptFLOAT1.000–2Composite 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.
coloroptFLOAT1.000–1Chroma 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_diroptSTRINGOptional 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_prefixoptSTRINGLinux only: WINEPREFIX for the worker. Empty keeps the environment default. The prefix needs DXVK-NVAPI + vkd3d-proton for NVIDIA NGX.

Outputs (3)

NameTypeDescription
imagesIMAGE
videoVIDEO
statusSTRING