Nodes/CRT-Nodes/Post-Process Suite (CRT)
ComfyUI Node

Post-Process Suite (CRT)

One node that can color-grade, sharpen, glow, grain, and vignette

By PGCRT·Created 2 years ago·Updated 2 days ago· 132
Post-Process Suite (CRT)
  • image
  • IMAGE
enable_upscalefalse
upscale_model_pathNone
downscale_by0.50
rescale_methodbicubic
precisionauto
batch_size1
enable_levelsfalse
exposure0.00
gamma1.00
brightness0.00
contrast1.00
saturation1.00
vibrance0.00
enable_color_wheelsfalse
lift_r0.00
lift_g0.00
lift_b0.00
gamma_r1.00
gamma_g1.00
gamma_b1.00
gain_r1.00
gain_g1.00
gain_b1.00
enable_temp_tintfalse
temperature0
tint0
enable_sharpenfalse
sharpen_strength2.50
sharpen_radius1.9
sharpen_threshold0.01
enable_small_glowfalse
small_glow_intensity0.01
small_glow_radius0.1
small_glow_threshold0.25
enable_large_glowfalse
large_glow_intensity0.25
large_glow_radius50.0
large_glow_threshold0.30
enable_glarefalse
glare_typestar_4
glare_intensity0.65
glare_length1.50
glare_angle0
glare_threshold0.95
glare_quality16
glare_ray_width1.0
enable_chromatic_aberrationfalse
ca_strength0.005
ca_edge_fallof2.00
enable_ca_hue_shiftfalse
ca_hue_shift_degrees0
enable_vignettefalse
vignette_strength0.50
vignette_radius0.70
vignette_softness2.00
enable_radial_blurfalse
radial_blur_typespin
radial_blur_strength0.020
radial_blur_center_x0.50
radial_blur_center_y0.25
radial_blur_falloff0.25
radial_blur_samples16
enable_film_grainfalse
grain_intensity0.02
grain_size1.00
grain_color_amount0.00
enable_lens_distortionfalse
barrel_distortion0.000

Every finished image needs some final pass - a touch of contrast, a sharpen, a vignette, a bit of grain to kill the plastic look - and doing that in ComfyUI usually means chaining four or five single-purpose FX nodes. Post-Process Suite (CRT) is the all-in-one alternative: one node with an enormous optional panel of effects, each gated behind its own enable switch, so you get the whole color-grading workbench without a wall of nodes. It's the CRT pack's flagship FX node for a reason.

How it's structured

The only required input is image. Everything else is optional and disabled by default - which is the design that makes a 60-field node usable. You flip on the sections you want and tune those; the off sections cost nothing. The sections:

  • Upscale - an optional spandrel-based model upscale (upscale_model_path picks from your upscale_models folder), with downscale_by, rescale_method, and precision (auto/32/16/bfloat16) to keep it sane.
  • Levels - exposure, gamma, brightness, contrast, saturation, vibrance. The classic global color/tonal trio.
  • Color wheels - per-channel lift / gamma / gain (nine floats, the RGB shadow/mid/highlight split).
  • Temp & tint - white-balance adjustment, −100 to 100.
  • Sharpen - sharpen_strength, radius, threshold. The threshold is the important one: it keeps the sharpen off flat areas so you don't amplify noise.
  • Small glow / Large glow - the modern "bloom but soft" look; small glow is fine halation, large glow is the cinematic haze.
  • Glare - anamorphic-style lens flares (star_4, star_6, star_8, anamorphic_h) with angle, length, and quality controls.
  • Chromatic aberration - edge color fringing with ca_strength and falloff, plus an optional hue-shift mode.
  • Vignette - strength, radius, softness.
  • Radial blur - spin or zoom blur around a center point.
  • Film grain - intensity, size, and color_amount for that analog finish.
  • Lens distortion - barrel_distortion for warping.

Output is the graded IMAGE.

The honest take

The killer combination for photorealism is Levels (or the wheels) + Sharpen + Grain: contrast, a thresholded sharpen, and grain to hide the digital smoothness - that's most of the way to a filmic look in one node. The glares and aberration are fun and very much optional. Where people get burned is turning on everything and getting a fried image; the enable switches are there so you don't.

Gotchas

  • The upscale section needs a model. upscale_model_path defaults to None; until you point it at a real model in models/upscale_models/, the enable switch does nothing but confuse.
  • batch_size caps memory for the upscale path - leave it low unless you have headroom.
  • It's order-fixed. Effects run in the suite's internal order; you can't reorder sections. For a custom order, use the individual CRT FX nodes instead.

Install CRT-Nodes via ComfyUI Manager (CRT-Nodes) or git clone https://github.com/plugcrypt/CRT-Nodes.git into custom_nodes, install requirements.txt, restart. The spandrel and opencv-contrib-python deps in that file are what power the upscale and FX paths.

CategoryCRT/FX

Inputs (69)

NameTypeDefaultDescription
imageIMAGE
enable_upscaleoptBOOLEANfalse
upscale_model_pathoptCOMBONone0 options:
downscale_byoptFLOAT0.500.25–1
rescale_methodoptCOMBObicubic5 options: nearest-exact, bilinear, area, bicubic, lanczos
precisionoptCOMBOauto4 options: auto, 32, 16, bfloat16
batch_sizeoptINT11–100
enable_levelsoptBOOLEANfalse
exposureoptFLOAT0.00-3–3
gammaoptFLOAT1.000.1–3
brightnessoptFLOAT0.00-1–1
contrastoptFLOAT1.000–3
saturationoptFLOAT1.000–3
vibranceoptFLOAT0.00-1–1
enable_color_wheelsoptBOOLEANfalse
lift_roptFLOAT0.00-1–1
lift_goptFLOAT0.00-1–1
lift_boptFLOAT0.00-1–1
gamma_roptFLOAT1.000.1–3
gamma_goptFLOAT1.000.1–3
gamma_boptFLOAT1.000.1–3
gain_roptFLOAT1.000–3
gain_goptFLOAT1.000–3
gain_boptFLOAT1.000–3
enable_temp_tintoptBOOLEANfalse
temperatureoptFLOAT0-100–100
tintoptFLOAT0-100–100
enable_sharpenoptBOOLEANfalse
sharpen_strengthoptFLOAT2.500–3
sharpen_radiusoptFLOAT1.90.1–5
sharpen_thresholdoptFLOAT0.010–1
enable_small_glowoptBOOLEANfalse
small_glow_intensityoptFLOAT0.010–2
small_glow_radiusoptFLOAT0.10–10
small_glow_thresholdoptFLOAT0.250–1
enable_large_glowoptBOOLEANfalse
large_glow_intensityoptFLOAT0.250–2
large_glow_radiusoptFLOAT50.030–100
large_glow_thresholdoptFLOAT0.300–1
enable_glareoptBOOLEANfalse
glare_typeoptCOMBOstar_44 options: star_4, star_6, star_8, anamorphic_h
glare_intensityoptFLOAT0.650–100
glare_lengthoptFLOAT1.500.1–100
glare_angleoptFLOAT0-180–180
glare_thresholdoptFLOAT0.950–1
glare_qualityoptINT164–32
glare_ray_widthoptFLOAT1.00.1–5
enable_chromatic_aberrationoptBOOLEANfalse
ca_strengthoptFLOAT0.0050–0.1
ca_edge_fallofoptFLOAT2.000–2
enable_ca_hue_shiftoptBOOLEANfalse
ca_hue_shift_degreesoptFLOAT0-180–180
enable_vignetteoptBOOLEANfalse
vignette_strengthoptFLOAT0.500–2
vignette_radiusoptFLOAT0.700.1–3
vignette_softnessoptFLOAT2.000–4
enable_radial_bluroptBOOLEANfalse
radial_blur_typeoptCOMBOspin2 options: spin, zoom
radial_blur_strengthoptFLOAT0.0200–0.5
radial_blur_center_xoptFLOAT0.500–1
radial_blur_center_yoptFLOAT0.250–1
radial_blur_falloffoptFLOAT0.250.001–1
radial_blur_samplesoptINT168–64
enable_film_grainoptBOOLEANfalse
grain_intensityoptFLOAT0.020–0.15
grain_sizeoptFLOAT1.000.25–4
grain_color_amountoptFLOAT0.000–1
enable_lens_distortionoptBOOLEANfalse
barrel_distortionoptFLOAT0.000-0.5–0.5

Outputs (1)

NameTypeDescription
IMAGEIMAGE