RTX Denoise (TJ)
Kill the Noise Before Anything Sharpens It
- images
- images
Generative image tools have a denoiser built into every sampling step. Video that came from a camera doesn't. If you're running footage through a repair-and-upscale chain, the sensor noise and codec garbage in your frames get amplified by every stage downstream - and the sharpening stage amplifies it hardest, because that's what sharpening does.
So the order people converge on is denoise, then deblur, then upscale. RTX Denoise is the first station: it strips sensor and compression noise without touching your resolution, and it does it on the GPU's video-effects hardware rather than through a diffusion pass, which means it's fast enough to hammer 200 frames without thinking about it.
How it works, and what that buys you
NVIDIA's SDK treats this as a quality level of the same VideoSuperRes filter the RTX upscaler uses - DENOISE_LOW through DENOISE_ULTRA - rather than a separate denoise effect. The node maps strength onto that level, forces the output dimensions to match the input (the tooltip is explicit: "Denoise intensity. Resolution is never changed."), and runs your batch through it in chunks, one frame at a time, so VRAM stays flat regardless of clip length.
That places it in the "pixels" column of the upscaling taxonomy rather than the "detail" column: it can remove information, it cannot invent any. Which is exactly what you want from a denoiser. If your source is genuinely damaged - heavy compression, blotchy dark scenes, tape noise - a generative restorer like SUPIR is still the tool that repairs damage in one pass, and RTX Denoise won't replace it. For "my footage is just noisy and I want a clean base to upscale", this is the cheap fast answer.
Inputs and output
images- the IMAGE batch, straight off a frame loader.strength-LOW/MEDIUM/HIGH/ULTRA, defaultMEDIUM. On clean-ish footage, LOW. Save HIGH and ULTRA for footage that's genuinely fighting you - every level up trades some fine texture for smoothness, and this node will not put the texture back.get_name- this pack's wireless receive slot, filled from the provider list.setnode_name- defaults toRTX_Denoise; the name the output is published under for wireless pickup.
Output: images. Same size, same frame count. Chain it into RTX Deblur, then RTX VSR, and you've built the two-pass hardware chain people run at around 4GB of VRAM instead of a Topaz subscription.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/designloves2/ComfyUI-TJ_NODE.git
# restart ComfyUI
Or ComfyUI Manager → Install Custom Nodes → search TJ_NODE. Then the actual requirement: an RTX GPU plus NVIDIA's VFX SDK libraries, which come with the NVIDIA RTX video nodes pack (the README calls it comfyui_nvidia_rtx_nodes; it's the Comfy-Org RTX pack). Skip that and the node raises a RuntimeError naming the missing runtime.
These three RTX filters are in TJ_NODE on purpose rather than as edits to the NVIDIA pack: that pack is a git checkout, and a dirty working tree makes the ONE STUDIO updater skip it, freezing it at whatever version you patched. Nothing in TJ_NODE's own requirements.txt - llama-cpp-python, openpyxl, imageio, imageio-ffmpeg - is relevant here. Manager installs them regardless.
When it goes wrong
NVIDIA VFX SDK not available - NVIDIA RTX pack not installed, or a GPU that isn't RTX. There is no CPU fallback.
this NVIDIA VFX SDK build has no DENOISE_... level - the node checks a named quality level exists and reports the SDK version when it doesn't. Usually an outdated RTX runtime; update that pack, not this one.
You installed the pack, restarted, and still get the SDK error. Restart ComfyUI fully, not just the browser tab. The runtime is imported at node execution time and a half-restarted server will happily keep the old interpreter state.
Everything looks waxy. You're on HIGH or ULTRA for a source that didn't need it. Drop to LOW/MEDIUM and let the deblur stage do its job instead.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| strength | COMBO | MEDIUM | Denoise intensity. Resolution is never changed. |
| get_nameopt | COMBO | (none) | 1 options: (none) |
| setnode_nameopt | STRING | RTX_Denoise | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |