Nodes/ComfyUI-DLSS5-Enhancer-v15/DLSS5 Sharpening & Grain
ComfyUI Node

DLSS5 Sharpening & Grain

The cheap anti-AI-look pass, done inside the render

By Strix-3D·Created 18 days ago·Updated 5 days ago· 4
DLSS5 Sharpening & Grain
    • pro_controls
    ◄Sharpeningtrue►
    ◄Sharpening MethodNVIDIA NIS►
    ◄Sharpness50►
    ◄Graintrue►
    ◄Grain Amount20►
    ◄Grain Size1.0►
    ◄Color Grain0►
    ◄Tonal Response70►
    ◄Grain Seed0►
    ◄Grain Animatedtrue►
    ◄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.

    CategoryDLSS5_v17

    Inputs (11)

    NameTypeDefaultDescription
    SharpeningBOOLEANtrueEnable Sharpening.
    Sharpening MethodCOMBONVIDIA NIS2 options: NVIDIA NIS, AMD CAS
    SharpnessINT500–100Sharpness intensity (cas_sharpness).
    GrainBOOLEANtrueEnable Grain.
    Grain AmountINT200–100—
    Grain SizeFLOAT1.00.1–5—
    Color GrainINT00–100—
    Tonal ResponseINT700–100—
    Grain SeedINT00–999999—
    Grain AnimatedBOOLEANtrueAnimate grain over time.
    Pro ControlsoptSTRINGInput from DLSS5 Pro Controls.

    Outputs (1)

    NameTypeDescription
    pro_controlsSTRING—