Overview
The familiar tone curve from painting tools. Redrawing the light/dark relationship as
a free curve provides fine one-node control over contrast, gamma, and fades. Use it for
nonlinear corrections that the brightness family cannot handle, such as lifting only
the shadows.
Select the node to display the curve editor in the inspector. Double-click to add a control point, right-click to delete one, and drag to move it.
Usage tips
- The go-to S-curve lowers shadows and raises highlights for stronger contrast, making a flat pixel-art base crisper.
- It is effective before
gradient_map: shape the luminance distribution with the curve before assigning colors to control the area occupied by each one. channel = Alphais useful for adjusting the feel of a fade animation, turning a linear fade into an eased one.- A small number of control points, about 3–4, is easiest to handle. Too many can make the curve undulate and reverse tones.
Common pitfalls
- Nothing changes: the default straight line from (0,0) to (1,1) is a pass-through. Add or move a control point to create an effect.
- Tones reverse unnaturally: part of the curve slopes downward. Unless intentional, simplify the points and restore a monotonic increase.
- A damaged curve-data error appears: malformed JSON or fewer than two control
points is no longer treated silently as a straight line. Choose the
Linearpreset in the inspector curve editor to restore the safe default. - The pixel-art color count increases: a continuous curve creates intermediate
colors. For a strict palette, place
palette_quantizedownstream or adjust the palette itself withpalette_adjust_*nodes.
Technical details
- The curve uses the same Catmull-Rom interpolation as the inspector editor, so preview and result match.
- Internally it is converted to and applied as a 256-step LUT.
- The unedited two-point default from (0,0) to (1,1) passes input through exactly.
- Unreadable control-point data produces a node error without overwriting the saved
data. Choosing the
Linearpreset explicitly replaces it with the valid default. Levelsclips and rescales the value range;Tone Curveprovides a freely shaped tonal curve.
Examples
- Increase contrast: create a four-point S-curve that lowers shadows and raises highlights.
- Adjust a fade: use
channel: Alphato shape opacity change. - Correct a color cast: adjust the curve of an individual channel such as
channel: Red.
Related nodes
levels— easier when only clipping the range at white and black pointsauto_levels— expand the range automaticallybrightness— simple brightness and contrast changesgradient_map— the go-to next step for coloring curve-shaped luminance