TS DLSS Upscaler
This node borrows your GPU's game upscaler for real frames
- images
- images
The pitch is genuinely weird, and it works: TS DLSS Upscaler feeds your pictures and video frames through NVIDIA's DLSS - the neural-rendering tech games use - and hands back a bigger, cleaner IMAGE. IMAGE in, IMAGE out, nothing else to wire; it ships in the comfyui-timesaver pack (search "Timesaver" in the Manager). The fine print before you get excited: Windows and an NVIDIA RTX card, full stop.
Know which upscaling job this does before you judge it: the upscaling world splits into three, and this node only does one. It won't add pores, lashes, or fabric weave the way a generative upscaler like SeedVR2 does - no invented detail, no hallucinated faces. It's the "more pixels" job: a sharper, larger image reconstructed from what's already there, closer to a very smart Lanczos than to a diffusion model. The community reads NVIDIA's hardware path as more natural than generative upscalers on already-clean sources - same family. Reach for it when your source is sharp but small and you want it bigger fast, especially video, where its temporal trick beats a still-image upscaler run frame by frame.
How it works
DLSS is a temporal upscaler, and that's the whole story: for a batch of consecutive frames the node estimates motion vectors with DIS optical flow and hands them to the runtime, so detail carries forward instead of every frame deciding on its own. That is exactly what per-frame image upscalers get wrong on video - fine repeating texture starts to shimmer when consecutive frames can't agree. DLSS also resets its history at a hard cut rather than smearing the previous shot across it.
Here's the part people trip on: DLSS doesn't resize with a normal algorithm. The worker takes 8-bit RGBA, so the node rounds your float IMAGE down to it - with blue-noise dithering on by default, so smooth gradients reach the network as detail instead of visible steps. And the network only understands display-referred SDR: feed it log footage or linear EXR via the source_curve dropdown and it converts there, then converts back after with the same curve - size changes, colour doesn't.
The "DLSS 5" name is NVIDIA marketing, but the implementation is real and signed: on first run the node downloads NVIDIA's DLLs plus a ReShade and a RenoDX add-on (~481 MB, once) into models/DLSS and drives them through D3D12.
The inputs that matter
Honestly, most of them are fine at default - the node was tuned by someone who measured things. The ones you'll actually touch:
images- one picture or a whole batch of video frames. Both sides must be at least 64 pixels.upscaling_factor-2× (Performance)is default, and there's also1.5×,1.724×, and3×. Output is capped at 7680×4320; ask for more and it names the largest factor that fits instead of failing vaguely.temporal- the one that bites. On (default) means "these are consecutive video frames, use motion vectors." For a batch of unrelated pictures, switch it off, or every picture drags the previous one's detail behind it. Ignored for a single image.download_if_missing- this is your license agreement, not a convenience toggle. Off, the node downloads nothing and you place the NVIDIA/ReShade/RenoDX files undermodels/DLSSyourself. The pack hosts none of the runtime and isn't affiliated with NVIDIA.
The rest are the DLSS "neural rendering" knobs - nr_style (Default/Natural/Cinematic), nr_intensity, local_tone_strength, local_structure_strength, and skin_structure_strength, kept separate so faces don't turn plastic. 1× (DLAA) doesn't resize at all: the network re-renders at the same size - cleanest for footage already big enough. The single output is images, upscaled, same order, same channels, alpha carried through.
Installing it
Install the pack, not the node:
cd ComfyUI/custom_nodes
git clone https://github.com/AlexYez/comfyui-timesaver
cd comfyui-timesaver
python -m pip install -r requirements.txt
or just search Timesaver in ComfyUI Manager and restart. Windows portable users: run pip from python_embeded\python.exe or dependencies land in the wrong interpreter. Nothing else installs - the runtime is fetched on first use, not by pip.
Where people get burned
- No RTX, no Windows? The node says so plainly instead of failing obscurely. DLSS runs through NVIDIA's signed D3D12 runtime and there is no other implementation of it. RTX 40/50 are officially supported; RTX 30 works on the experimental path and wants a current driver.
- The "result is NOT DLSS-enhanced" warning means neural rendering silently fell back to a resize - update your NVIDIA driver.
- First run downloads 481 MB. It's once, it has a progress bar, but don't mistake it for a hang.
If you have an RTX card and footage that just needs more pixels, this is the one to try before renting GPU hours for a generative video upscaler.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | One picture or a batch of frames [B,H,W,C]. Both sides must be at least 64 pixels. | |
| upscaling_factor | COMBO | 2× (Performance) | DLSS mode. 1× is DLAA: no resize, the network re-renders at the same size. The output is capped at 7680×4320. |
| dlss_model_preset | COMBO | M | Network revision. M measured best; the worker confirms what it applied. |
| nr_style | COMBO | Default | Neural rendering look: Default, Natural or Cinematic. |
| nr_intensity | FLOAT | 1.000–1 | How strongly neural rendering is applied. |
| local_tone_strength | FLOAT | 1.000–2 | Local contrast recovered by the network. |
| local_structure_strength | FLOAT | 1.000–2 | Local detail recovered by the network. |
| skin_structure_strength | FLOAT | 2.00-1–2 | Detail on skin, kept separate so faces do not turn plastic. |
| automatic_mask | BOOLEAN | true | Let the runtime decide where neural rendering is applied. |
| temporal | BOOLEAN | true | Treat the batch as consecutive video frames and feed motion vectors. Switch OFF for a batch of unrelated pictures. Ignored for a single image. |
| source_curve | COMBO | SDR (sRGB / BT.709) — no conversion | What the incoming values mean. The network only understands display-referred SDR, so log/HDR/linear pictures are converted before it and converted back after — exactly, by the same curve. |
| dither | BOOLEAN | true | Blue-noise dither on the way down to the worker's 8 bits, so gradients reach the network as detail instead of steps. |
| download_if_missing | BOOLEAN | true | Fetch the runtime into models/DLSS when it is not there (~481 MB, once). This is your agreement to download third-party components — NVIDIA (proprietary), ReShade (BSD-3), RenoDX — from the upstream project. This pack hosts none of them. Off, the node downloads nothing and you place the files yourself. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | The upscaled batch, same order, same channel count. |