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