Nodes/RyanOnTheInside/Flex Image Color Grade βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

Flex Image Color Grade βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

LUT-based grading that can react over time

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Flex Image Color Grade βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • images
  • opt_feature
  • IMAGE
β—„strength1.00β–Ί
β—„feature_threshold0.00β–Ί
β—„feature_paramβ–Ύβ–Ί
β—„feature_moderelativeβ–Ί
β—„intensity1.00β–Ί
β—„mix1.00β–Ί
β—„lut_fileβ–Ί

This is a straightforward LUT-based color grade - point it at a .cube (or similar) LUT file, blend it in, done - with the RyanOnTheInside twist that the grade's intensity or blend can be driven by a reactive Feature instead of staying static for the whole clip. Useful if you want a look that intensifies with the music, or eases in and out rather than snapping on at full strength from frame one.

How it works

lut_file is a plain string path to the LUT file you want applied. This node doesn't ship any LUTs itself - you point it at one you already have, which means the actual "look" is entirely up to whatever LUT you supply; the node's own job is just applying it and controlling how much. intensity (0–1, default 1) sets how strongly the grade is applied, and mix (0–1, default 1) is a separate blend between the graded and original image - the two overlap in effect but give you two independent dials: intensity for how hard the LUT itself pushes, mix for how much of that result shows through versus the untouched source.

Both intensity and mix can be feature-modulated: feature_param chooses which one a connected feature drives (or None to disable modulation), feature_mode picks relative (nudges around your base value) or absolute (feature value replaces it outright), feature_threshold gates when modulation starts, and strength scales how much pull the feature has once active.

Inputs and outputs that matter

  • images - required.
  • lut_file - the path to your LUT; get this right first, since nothing else matters if the file can't be found or loaded.
  • intensity / mix - your two grading dials, worth understanding as separate before reaching for feature modulation.
  • opt_feature (optional) - connect a Feature node to animate the grade over time.

Output is a single IMAGE.

How to install it

Via ComfyUI Manager, search "RyanOnTheInside." Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt

then restart. No LUTs are bundled - you'll need to supply your own .cube file (there are plenty of free ones floating around from the color-grading/film community) and know its path on disk.

Common issues & troubleshooting

Node errors or does nothing with lut_file set. lut_file is a plain string, not a file picker, so a typo'd path, a relative path that doesn't resolve from wherever ComfyUI actually runs, or an unsupported LUT format will all silently fail to produce the effect you expect. Use an absolute path while you're testing, and confirm the LUT format is one your build of this node actually parses.

Grade looks identical no matter what LUT you use. Check intensity and mix aren't both effectively zeroed out by a feature modulation you forgot was connected - if opt_feature is wired in and feature_param targets intensity or mix, the visible grade strength depends entirely on that feature's value at each frame, not just the sliders you set.

Applied grade looks different than it does in your usual grading software. LUTs are notoriously sensitive to the color space and gamma assumptions of whatever's applying them - a LUT built for a video editor's linear/log pipeline can look noticeably different run against ComfyUI's raw image tensors. If the look is off, it's worth testing the same LUT at intensity/mix = 1 with no other effects in the chain to isolate whether the mismatch is this node or something upstream.

CategoryRyanOnTheInside/FlexFeatures/Targets/Images

Inputs (9)

NameTypeDefaultDescription
strengthFLOAT1.000–1Overall strength of the effect (0.0 to 1.0) Higher values create more dramatic changes, while lower values are more subtle.
feature_thresholdFLOAT0.000–1Minimum feature value to trigger the effect (0.0 to 1.0) Only applies the effect when the feature value exceeds this threshold. Lower values make the effect more sensitive, higher values make it more selective.
feature_paramCOMBOChoose which parameter to modulate: - intensity: Dynamically adjust grading strength - mix: Dynamically adjust blend amount - None: No parameter modulation
feature_modeCOMBOrelativeHow to apply the feature modulation: - relative: Changes are centered around the original value - absolute: Changes scale directly from zero to the maximum
imagesIMAGEInput image sequence to be processed (IMAGE type)
intensityFLOAT1.000–1Strength of the color grading effect (0.0 to 1.0)
mixFLOAT1.000–1Blend factor between original and graded image (0.0 to 1.0)
lut_fileSTRINGPath to the LUT file
opt_featureoptFEATUREOptional feature input for modulation Connect any feature node here to control the effect. Features can come from audio, motion, color, or other sources.

Outputs (1)

NameTypeDescription
IMAGEIMAGEβ€”