- model
- lcs_data
- mask
- model
If you've ever wanted a "Cinematic" grade without opening an editor - or training a color LoRA - this is the node. LCS Tone Adjust gives you contrast, brightness, saturation, and color temperature, all applied inside the latent during sampling. Same underlying trick as the rest of the LCS pack: color lives in a 3D subspace of the 64D patch space, so you can twist those three coordinates during denoising and leave the structural 61 dimensions untouched.
Mechanically, each patch's 3D color vector is split into lightness (its projection onto the black→white axis) and chroma (the perpendicular residual). Then four simple operations run directly in LCS space - no HSL round-trip, which is why it's fast:
- contrast scales lightness around its mean
- brightness shifts lightness
- saturation scales chroma magnitude
- color temperature shifts chroma along the warm↔cool (amber↔blue) axis
One honest gotcha before you get excited: contrast here is lightness contrast, not the same knob as a pixel-space curve. It behaves, but don't expect byte-identical results to a post-processing grade - expect something that looks coherent with the model's own rendering instead.
Inputs
- model and lcs_data (from LCS Load Data) - same chain as every LCS node.
- preset - "Custom" (default) to work the sliders yourself, or pick Base, Cinematic, HDR, Vivid, Dramatic, Low Key, High Key, Warm, Cool, Desaturated.
- contrast 0–3 (default 1), brightness −1..1 (default 0), saturation 0–3 (default 1, 0 = grayscale), color_temperature −1..1 (default 0, + = warmer/amber).
- start_step / end_step - default 5–15.
- mask - optional, for localized adjustment only.
Output is a single model, straight into the KSampler.
The presets are the fun part
Pick Cinematic and the sliders snap to 1.20 / −0.05 / 0.90 / 0.05 in real time, then you can nudge from there. HDR pushes contrast to 1.40 and saturation to 1.20. Warm is the one to grab when you want a sunset without Color Intervene. There's a genuine server-side fallback too: if you run headless or batched (no frontend), a selected preset with untouched sliders applies the preset values itself.
Installing it
All LCS nodes share one pack:
cd ComfyUI/custom_nodes
git clone https://github.com/facok/ComfyUI-LCS.git
pip install einops safetensors
then restart. Or use ComfyUI Manager and search "LCS". Dependencies are minimal - einops and safetensors are almost certainly already in your env. If the nodes don't appear after install, update ComfyUI: this pack needs the newer V3 extension API (comfy_api.latest).
What to watch
The step window is the thing people get wrong. 5–15 works at 50 steps; on a distilled model like z-image-turbo you have a handful of steps total, so move the window to start at 0 or the adjustment barely registers. And know that if every slider sits at its default, the node no-ops entirely - it skips the hook, so a stray preset won't silently change your output.
Honest verdict: the most immediately useful node in the pack - a "why isn't this built into ComfyUI" kind of tool. The presets get you 90% of the way, and because the model keeps drawing through the adjusted space, tones look coherent rather than pasted over the top.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| lcs_data | LCS_DATA | Calibration data from LCSLoadData | |
| preset | COMBO | Custom | Select a tonal preset or Custom to use the sliders below |
| contrast | FLOAT | 1.000–3 | Lightness contrast multiplier (>1 = more contrast, <1 = less, 1 = no change) |
| brightness | FLOAT | 0.00-1–1 | Lightness shift (>0 = brighter, <0 = darker) |
| saturation | FLOAT | 1.000–3 | Saturation multiplier (>1 = more vivid, <1 = more muted, 0 = grayscale) |
| color_temperature | FLOAT | 0.00-1–1 | Color temperature shift (>0 = warmer/amber, <0 = cooler/blue) |
| start_step | INT | 50–50 | First step to apply adjustment |
| end_step | INT | 150–50 | Last step to apply adjustment |
| maskopt | MASK | Optional mask for localized adjustment |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |