Nodes/Tenser Tensor/TT Postproduction (Advanced)
ComfyUI Node

TT Postproduction (Advanced)

The full color suite in one node

By tenser-tensor·Created 7 months ago·Updated 5 months ago· 0
TT Postproduction (Advanced)
  • image
  • IMAGE
image_enhancertrue
brightness_factor0.00
contrast_factor1.00
gamma_factor1.00
gamma_gain1.00
hue_factor0.00
saturation_factor1.00
sharpness_factor0.00
posterize_bits8
solarize_thresholds1.00
apply_luttrue
lut_file
lut_strength1.00
lut_colorspace
add_film_graintrue
grain_seed0
grain_scale0.25
grain_strength0.20
grain_saturation0.50
grain_toe0.05
grain_upscale_mode
grain_antialiastrue
image_upscalertrue
upscaler_device
upscale_model_name
upscaler_tile512
upscaler_overlap64

Take the regular TT Postproduction - LUT grade, film grain, upscale - and bolt a full image-enhancement stage onto the front, and you get TT Postproduction (Advanced). Where the plain version is "grade it, grain it, blow it up," this one adds brightness, contrast, gamma, hue, saturation, sharpness, posterize, and solarize before any of that. It's the node you reach for when a render is close but needs real corrective work, and you'd rather do it in the graph than tab out to an editor.

The order matters and it's sensible: the new image_enhancer stage runs first (the "negative → usable" corrections), then the LUT gives it the look, then film grain adds texture, then the upscaler finishes. Each stage has its own master toggle - image_enhancer, apply_lut, add_film_grain, image_upscaler - so you can stack them or isolate one while you tune. Only the values you change are applied; leave a factor at its default and that adjustment is skipped entirely.

The enhancer inputs, for when a render needs real surgery:

  • brightness_factor (-1 to 1, default 0) and contrast_factor (0–5, default 1) - the bread and butter. A slightly underexposed render gets +0.1 brightness; a flat one gets 1.1 contrast.
  • gamma_factor + gamma_gain - gamma lifts the midtones without clipping black or white the way brightness does. This is your "the whole image feels dim" fix.
  • hue_factor (±3.14 rad) and saturation_factor (0–3, default 1) - note hue is in radians, so 3.14 is a full half-turn, not a 360° wheel.
  • sharpness_factor (0–3) - mild values (0.3–0.5) rescue a soft render; aggressive values add halos, so don't get greedy.
  • posterize_bits (0–8, default 8) and solarize_thresholds (0–1, default 1) - the stylized pair. Both at defaults do nothing; drop posterize_bits to force banding, and pull solarize_thresholds below 1 for the inverted-highlights solarize look.

Everything after the enhancer is identical to the plain TT Postproduction: the .cube LUT grade via colour-science (drop files in ComfyUI/custom_nodes/ComfyUI-TenserTensor/lut/), the multi-scale YCbCr film grain (with grain_seed for reproducible grain), and the tiled spandrel upscale with automatic OOM fallback. The upscale-stage defaults are worth repeating: image_upscaler is on by default and it needs a real model in models/upscale_models/ - leave it on with no model and the node errors. Either point upscale_model_name at one or flip the toggle off.

Install is the pack standard:

cd ComfyUI/custom_nodes
git clone https://github.com/tenser-tensor/ComfyUI-TenserTensor

or search "TenserTensor" in ComfyUI Manager and restart.

The usual caveats apply. The pack's declared dependencies are gguf and kornia, but this node's code path also imports colour-science and spandrel (both ship with ComfyUI core, so normally no extra install). And while the whole pack is being migrated to API V3, this V1 class is marked deprecated - the TT_PostproductionAdvancedNode is the maintained replacement. If you're building a grading chain you'll reuse for months, start from the V3 node; if you're patching an existing workflow, this one keeps working.

CategoryTenserTensor/Postproduction

Inputs (28)

NameTypeDefaultDescription
imageIMAGE
image_enhancerBOOLEANtrue
brightness_factorFLOAT0.00-1–1
contrast_factorFLOAT1.000–5
gamma_factorFLOAT1.000–3
gamma_gainFLOAT1.000–3
hue_factorFLOAT0.00-3.14–3.14
saturation_factorFLOAT1.000–3
sharpness_factorFLOAT0.000–3
posterize_bitsINT80–8
solarize_thresholdsFLOAT1.000–1
apply_lutBOOLEANtrue
lut_fileCOMBO0 options:
lut_strengthFLOAT1.000–1
lut_colorspaceCOMBO2 options: linear, logarithmic
add_film_grainBOOLEANtrue
grain_seedINT00–18446744073709550000
grain_scaleFLOAT0.250.25–2
grain_strengthFLOAT0.200–10
grain_saturationFLOAT0.500–2
grain_toeFLOAT0.05-0.2–0.5
grain_upscale_modeCOMBO5 options: bilinear, bicubic, lanczos, nearest, area
grain_antialiasBOOLEANtrue
image_upscalerBOOLEANtrue
upscaler_deviceCOMBO2 options: default, cpu
upscale_model_nameCOMBO0 options:
upscaler_tileINT512256–4096
upscaler_overlapINT640–256

Outputs (1)

NameTypeDescription
IMAGEIMAGE