DLSS5 Frame Enhancer π ReActor
NVIDIA's Game-Renderer Detail Pass, Moved Into ComfyUI
- image
- mask
- enhanced_image
What this node actually is
When NVIDIA announced DLSS 5 in March 2026, the subreddit split in half: "is this real-time diffusion running over a game renderer?" versus "vaporware that makes games look like Instagram filters." Mechanically it's a neural reconstruction pass - it takes a frame that already exists and rebuilds detail inside it, fast, with no sampler and no seed.
This node puts that pass behind an IMAGE socket: one image in, one out, no prompt, no seed lottery, no second model loading into VRAM.
Why it ships in a face-swap pack is the interesting part: inswapper_128 produces a soft 128-pixel face patch, and the obvious fix - running the result back through a generative upscaler - is the wrong one, because every generative rung rewrites identity. A reconstruction pass doesn't reinvent the face, it sharpens it. That's the niche.
How it works, and the one thing it won't do
The pack calls it "isolated Host mode", and that's the whole design. The node is a thin ctypes wrapper around three DLLs: neuroframe_engine.dll and neuroframe_caller.dll (Merserk's C++ bridge) plus NVIDIA's nvngx_dlssnr.dll. Your image tensor becomes a plain CPU float32 buffer, a pointer goes to the DLL, and the DLL fills a destination buffer. ComfyUI's CUDA context is never touched, which sidesteps this ecosystem's most reliable recurring pain.
The catch is temporal. Frames go through one at a time and the bridge is told to reset on every one, so nothing carries between them - and DLSS in a game is impressive precisely because it reuses information across frames. The C struct underneath even has fields for shimmer suppression and optical-flow preference; the node hardcodes both off and exposes neither. Video gets per-frame enhancement, not temporal coherence.
The inputs worth touching
Required: image, plus the style dropdown (Default, Nature, Cinematic) - three looks, pick the one that isn't fighting your grade. Then the floats, all of which ship with sane defaults.
intensity (0β2, default 1.0) is the master dial; move it in small steps, not straight to 2. skin_structure (β1 to 2, default 0.5) decides whether this looks like a photograph or a waxwork - too-smooth skin is AI's most common tell, and this is the knob aimed at it. local_structure (default 1.0) handles hair strands and fabric weave. grain_preservation (default 0.0) matters more than it looks: adding grain back is the cheapest way to make output read as captured rather than generated, and a reconstruction pass that scrubs it away undoes that.
The rails are tone_preservation and color_strength (0β1, both 0.5), which keep colour and contrast from drifting, and face_skin_protection (0β1, default 0.0) - the clamp you'll want the moment the enhancer starts handing people pores they didn't order. nr_passes (1β4) stacks the reconstruction; auto_mask is the author's one-click AI masking of complex areas to prevent over-detailing.
The optional mask input is why this node lives in this pack. The README sells it as enhancing a frame "or faces by mask" - so swap with ReActor, mask the face, reconstruct only that region. The code indexes the mask per frame, so your mask batch should match your image batch. Output is a single enhanced_image (IMAGE) and there's no mask passthrough, so branch a copy off earlier if you still need it.
Install
ComfyUI Manager: search "ReActor", install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Gourieff/ComfyUI-ReActor
Then run install.bat (Windows) or install.py from inside the pack folder. Fair warning: requirements.txt is the whole pack's bill - albumentations, onnx, opencv-python, numpy, segment_anything, ultralytics. That's a face-swap suite installed for one enhancement node. Silver lining: 0.7.x dropped InsightFace and the C++ build tools, so this is the easiest era to install ReActor in.
The DLSS part is manual. Grab neuroframe_dlls.zip from the ReActor HuggingFace dataset and drop neuroframe_caller.dll and neuroframe_engine.dll into custom_nodes/ComfyUI-ReActor/r_dlssnr/dll - or custom_nodes/comfyui-reactor-node/r_dlssnr/dll, since both folder names exist and the node's description lists both. Then supply nvngx_dlssnr.dll yourself; NVIDIA prohibits redistributing it, which is why the pack links a license instead of shipping the binary.
Requirements, from the node itself: Windows 10/11, driver 616.x or newer, RTX 40- or 50-series (older unconfirmed). The DLLs are Windows binaries, so Linux and macOS are out.
When it breaks
The errors are unusually decent, because the bridge hands back strings. Missing DLL: .../neuroframe_engine.dll means it couldn't find the file where it looked - check which of the two folder names you have first. Bridge initialization failed: with text after it usually means an old driver, an unsupported GPU, or a half-extracted zip. The bridge also compares an ABI version from the DLL against its own, so updated Python with stale DLLs is a real failure mode. Update both together.
If it runs and the result looks worse, that's not a bug, it's taste. DLSS 5's look is aggressive, and on an already-clean render it pushes toward hyper-real rather than photographic. Back off intensity and skin_structure, raise tone_preservation, and mask when only one region needs the treatment. Scalpel, not final polish.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| style | COMBO | 3 options: Default, Nature, Cinematic | |
| intensity | FLOAT | 1.000β2 | 0..2, def: 1.0 |
| local_tone | FLOAT | 0.000β2 | 0..2, def: 0.0 |
| local_structure | FLOAT | 1.000β2 | 0..2, def: 1.0 |
| skin_structure | FLOAT | 0.50-1β2 | -1..2, def: 0.5 |
| color_strength | FLOAT | 0.500β1 | 0..1, def: 0.5 |
| tone_preservation | FLOAT | 0.500β1 | 0..1, def: 0.5 |
| face_skin_protection | FLOAT | 0.000β1 | 0..1, def: 0.0 |
| grain_preservation | FLOAT | 0.000β1 | 0..1, def: 0.0 |
| nr_passes | INT | 11β4 | 0..4, def: 1 |
| auto_mask | BOOLEAN | false | AI Automatic masking of complex areas to prevent over-detailing |
| maskopt | MASK | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| enhanced_image | IMAGE | β |