Nodes/MKRShift_Nodes/Color Warp Chroma/Luma
ComfyUI Node

Color Warp Chroma/Luma

Drag a mesh to build a selective grade

By criskb·Created 7 months ago·Updated 5 months ago· 0
Color Warp Chroma/Luma
  • image
  • mask
  • image
  • mask
  • color_warp_chromaluma_info
settings_json{"warp_points_json":"[]","strength":0.65,"falloff":1.0,"mix":1.0,"mask_feather":12.0,"invert_mask":false}

Most color nodes make you turn a knob and hope. x1ColorWarpChromaLuma lets you drag points on a mesh that maps color space to itself - grab a region of chroma/luma space and pull it somewhere else, and every pixel in that region follows. It's a selective grade without an HSL qualifier's sliders, and it's one of the two mesh-warp nodes in MKRShift Nodes' Color/Grade branch (its sibling is the hue/sat version).

The pack is young - no impressions, no Reddit presence when I checked - so think of this as fresh, deterministic code with an unusually good UI rather than a community-vetted classic.

How it works

The mental model: imagine a 2D map where the axes are chroma and luma. The node places source anchors (light points) and destination targets (red points) on that map; drag a destination and you warp color space, so colors near that region shift toward where you dragged. It's a mesh deformation of the color domain - the same idea as a color lookup mesh, except you build it by dragging in the node instead of loading a file.

The author's docs cover the physical UI, which is worth reading before you grab it:

  • Red points are draggable destination targets; light points are source anchors
  • Dragging updates warp_points_json automatically
  • Shift+Click adds a point, Alt+Click removes the nearest one

strength controls how hard the warp applies, falloff how quickly it fades with distance from the dragged region, and mix blends the warped result back with the original. Everything round-trips through settings_json, so the graph stays deterministic.

Outputs: image, mask (warp matte), color_warp_chromaluma_info.

Inputs that matter

  • warp_points_json - the actual mesh, but you'll never type it; the drag UI owns it
  • strength - keep it under 1.0 while you're placing points, then push it once the region behaves
  • falloff - the difference between a surgical pull and a global push
  • mix - the safety valve

Installing

ComfyUI Manager → search MKRShift Nodes, or:

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

Restart ComfyUI. No models, no new dependencies.

Where people get burned

  • The UI is the only sane way in. Hand-editing warp_points_json is possible (it's a JSON array) but brutal; break the JSON and the mesh silently resets to defaults, and then you're rebuilding your grade.
  • Dragging the wrong point type. Red = destination (where the color goes), light = source (what gets pulled). Dragging a light anchor and wondering why nothing moved is the classic first minute.
  • The mask output is the warp matte, not your input mask. Pack-wide convention.

Pick the hue/sat sibling when you want to recolor (skies, skin, product tints); pick this one when you want to reshape the tonal response - pulling luma/chroma relationships into a flatter or richer look. Either way, it's grading by direct manipulation, and that's a genuinely nice way to work.

CategoryMKRShift Nodes/Color/Grade

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
settings_jsonSTRING{"warp_points_json":"[]","strength":0.65,"falloff":1.0,"mix":1.0,"mask_feather":12.0,"invert_mask":false}
maskoptMASK

Outputs (3)

NameTypeDescription
imageIMAGE
maskMASK
color_warp_chromaluma_infoSTRING