Skip to content

Curves

Applies per-channel RGB curves for precise tonal control via an interactive curve editor and CPU-baked LUT.

Category: Color Menu path: Color > Curves

Ports

PortTypeDirectionDescription
inimageRgba16finputInput image
outimageRgba16foutputCurve-adjusted result

Parameters

ParamTypeDefaultDescription
mastercurveRampIdentity (0,0)-(1,1)Master curve applied to all channels before per-channel curves.
redcurveRampIdentity (0,0)-(1,1)Red channel curve.
greencurveRampIdentity (0,0)-(1,1)Green channel curve.
bluecurveRampIdentity (0,0)-(1,1)Blue channel curve.

Each curve is a CurveRamp with control points and interpolation mode (Linear or Smooth). Points are sorted by position. All curves are keyframeable.

How It Works

The four curves are evaluated on the CPU into a single 256-entry lookup table (LUT), stored as a 256x1 Rgba16Float texture. The R channel stores the master curve, G stores the red curve, B stores the green curve, and A stores the blue curve.

The GPU shader processes each pixel in two stages. First, the master curve is applied to all three channels (using the R channel of the LUT). Then the per-channel curves are applied: red through the G channel, green through the B channel, and blue through the A channel.

Because the LUT is Rgba16Float, the GPU provides free hardware linear interpolation between the 256 entries, giving smooth results even with few control points.

Usage Examples

Basic: S-curve contrast

  1. Add a Curves node after your image source
  2. In the master curve editor, add a point near the shadows (position ~0.25) and pull it down slightly
  3. Add a point near the highlights (position ~0.75) and pull it up slightly
  4. This classic S-curve increases contrast while preserving black and white points

Creative: Cross-processing look

  1. In the red curve, create an S-curve with lifted shadows
  2. In the green curve, create a slight inverse S-curve
  3. In the blue curve, lift the shadows and lower the highlights
  4. This mimics the cross-processed film look

Advanced: Animated curve morph

Keyframe the curve points to morph between different looks over time. When keyframe point counts match, the curves interpolate componentwise for smooth transitions.

Tips

  • The master curve is applied first, then per-channel curves. Use master for overall tonal adjustments and per-channel for color grading.
  • Click on the curve to add control points. Select a point and press Delete to remove it.
  • Use the interpolation mode selector to switch between Linear (angular) and Smooth (rounded) interpolation.
  • The identity diagonal (bottom-left to top-right) means no change. Points above the diagonal brighten; below darkens.
  • Presets are available for common shapes: Identity, Ease In, Ease Out, S-Curve.
  • The LUT is baked per frame, so animating curve points has no performance penalty beyond normal keyframe evaluation.
  • Levels -- simpler input/output range remapping with gamma
  • ColorCorrect -- CDL-style grading (exposure, lift/gamma/gain)
  • Colorize -- maps luminance to a color gradient ramp
  • 3D LUT -- apply pre-built .cube color transforms