DLSS5 Sharpening & Grain
The cheap anti-AI-look pass, done inside the render
- pro_controls
Why you'd reach for it
Adding grain is the single cheapest move in the whole post-processing layer for making generated footage read as captured, and the community has settled on it the way it settles on boring truths: motion blur, grain, a bit of aberration, and suddenly the clip isn't obviously synthetic. Same for sharpening - after an upscale, a touch of edge work is what stops the result looking like a resized JPEG.
Normally you do both after the render, in a second application, which means a second encode. This node does them as stages inside the native DLSS 5 pass instead: one invocation, one encode, grain that never gets smeared by a later re-encode.
It's also, quietly, the node that decides whether those two stages run at all. The toggles don't just zero values - they add and remove the cas_sharpening and grain stage flags from the preset, and the CLI ignores stages that aren't enabled.
How it works
It takes the incoming pro_controls JSON (or builds a new one), then merges in sharpening keys - sharpening_method, cas_sharpness - and grain keys - grain_amount, grain_size, grain_color, grain_response, grain_seed, grain_animated. Then it adds or removes the two stage flags on both image_enabled_stages and video_enabled_stages.
The nice bit: switch a group off and the code actively pops the stale keys out of the dict rather than leaving them at zero. So a value inherited from an upstream node's preset can't leak through. Chain it after DLSS5 Pro Controls and/or DLSS5 Color Enhancement, and its pro_controls output goes into the Enhance node's socket.
The settings worth setting
Ten widgets, and most people should touch four.
- Sharpening (default on) and Sharpening Method - NVIDIA NIS or AMD CAS. The author's own framing is the useful one: NIS is for recovering edges from a soft source, CAS for boosting micro-contrast on something already detailed. On an RTX card rendering through NVIDIA's pipeline, NIS is the obvious default and CAS is the one to try when a clip looks locally mushy but the edges are fine.
- Sharpness - 0 to 100, default 50. Halve it.
- Grain (default on) with Grain Amount (default 20) - this is the anti-AI-look dial. Somewhere in 10–25 dissolves the "AI smooth" tell without turning into a noise demo. 60+ is a deliberate aesthetic, not a fix.
- For video, Grain Animated (default on) and Grain Seed - animate it or you've built a fixed pattern that reads as sensor dirt, and the seed is what makes two runs comparable when you're A/B-ing.
The rest - Grain Size (0.1 to 5.0), Color Grain (0 means monochrome), Tonal Response (default 70, how grain tracks luminance) - are texture tweaks. Push Grain Size up for a coarse, shot-on-film feel, keep it near 1.0 for camera-ish.
The failure mode to expect
Over-sharpening after a neural reconstruction pass. Sharpening is blur-and-difference at heart: subtract a blurred copy, add the high-frequency back scaled by an amount. Do that to an image that just had detail invented in it and you're amplifying the invention, including the parts the model guessed. Result: crunchy edges, halos on hair, pores that look etched.
The pack's own suggested fix for a plastic look is on the Enhance side - drop NR Intensity to 0.6–0.7 or switch to Natural style - and that's the right first move. This node is for the last 10%, not the rescue.
Second failure mode: you disabled grain and are wondering why the preset still looks grainy. Check whether another grain node is downstream or whether you're looking at the pre-node file. And as always with this pack, a muted control node contributes nothing - the grain you see is the source's.
Install
Ships with the pack, category DLSS5_v17, no model files of its own. Fresh install:
cd ComfyUI/custom_nodes
git clone https://github.com/Strix-3D/ComfyUI-DLSS5-Enhancer-v15
.\python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-DLSS5-Enhancer-v15\requirements.txt
.\python_embeded\python.exe ComfyUI\custom_nodes\ComfyUI-DLSS5-Enhancer-v15\install.py
Restart after. The install.py step downloads about 700MB of runtime and asks you to accept the third-party licenses; you need Windows and an RTX 20-series or newer card for the render to actually run. The control node itself loads on anything - the error, if you skipped the runtime, surfaces at Enhance as a missing VE_CLI.exe.
A sensible chain
Pro Controls → Color Enhancement → this node → Enhance (Video), with Scale at 1.0 if you're upscaling via in-render DLSS SR, or 2.0 if you're using the RTX upscale pass. Sharpness 25, grain 15, animated, NIS. Then leave it alone for a week before changing anything, because the temptation with grain is to keep adding.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| Sharpening | BOOLEAN | true | Enable Sharpening. |
| Sharpening Method | COMBO | NVIDIA NIS | 2 options: NVIDIA NIS, AMD CAS |
| Sharpness | INT | 500–100 | Sharpness intensity (cas_sharpness). |
| Grain | BOOLEAN | true | Enable Grain. |
| Grain Amount | INT | 200–100 | — |
| Grain Size | FLOAT | 1.00.1–5 | — |
| Color Grain | INT | 00–100 | — |
| Tonal Response | INT | 700–100 | — |
| Grain Seed | INT | 00–999999 | — |
| Grain Animated | BOOLEAN | true | Animate grain over time. |
| Pro Controlsopt | STRING | Input from DLSS5 Pro Controls. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pro_controls | STRING | — |