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

Flex Image Chromatic Aberration βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

Reactive RGB fringing

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Flex Image Chromatic Aberration βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • images
  • opt_feature
  • IMAGE
β—„strength1.00β–Ί
β—„feature_threshold0.00β–Ί
β—„feature_paramβ–Ύβ–Ί
β—„feature_moderelativeβ–Ί
β—„shift_amount0.010β–Ί
β—„angle0β–Ί

Chromatic aberration is the color fringing you get from cheap lenses (or deliberately, in a lot of glitch/VHS/lo-fi looks) - red, green, and blue not quite lining up at the edges of high-contrast areas. FlexImageChromaticAberration is a small, focused node that does exactly that split, and - because it's a Flex node - can be driven by a reactive Feature so the fringing pulses with audio, motion, or anything else you've extracted elsewhere in RyanOnTheInside's system.

How it works

It's genuinely just two parameters: shift_amount (0–0.5, default 0.01) controls how far apart the RGB channels get pushed - small values are subtle, "vintage lens" fringing; larger values start to look like a deliberate glitch effect. angle (0–720Β°, default 0) sets the direction of the split - 0Β° is horizontal, 90Β° is vertical, and because the range goes past 360Β° you can feed it a continuously increasing value from a Feature for a slowly rotating aberration direction rather than a fixed one.

Both parameters can be feature-modulated: feature_param picks which one (shift_amount, angle, or None to turn modulation off entirely), feature_mode decides whether the feature nudges the base value (relative) or replaces it outright (absolute), feature_threshold sets the minimum feature value before modulation kicks in at all, and the top-level strength scales how much influence the feature has once it's active.

Inputs and outputs that matter

  • images - required, the sequence to process.
  • shift_amount - the one setting that matters most; start small (0.005–0.02) and increase until the effect reads as intentional rather than like a display glitch.
  • angle - worth animating via a feature if you want the fringe direction to drift rather than sit static.
  • opt_feature (optional) - connect any Feature node here to drive shift_amount or angle 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. This is a lightweight pixel-shift effect - no model weights, no heavy dependency specific to this node.

Common issues & troubleshooting

Effect is barely visible. shift_amount's useful range tops out at 0.5 but most convincing-looking fringing lives well under 0.05 - if you're expecting a bold effect and cranking shift_amount toward its max, you'll get something that looks broken rather than stylized. For a strong, obvious split, pair a moderate shift_amount with high-contrast source footage; the effect is much more visible against sharp edges than soft gradients.

Fringing looks the same on every frame even with a feature connected. Check feature_param is actually set to shift_amount or angle and not left on None - the default disables modulation, so a connected opt_feature does nothing unless feature_param explicitly names a target.

Direction seems to snap instead of rotate smoothly. If you're driving angle from a feature, make sure the feature's own value range and your feature_mode (relative vs absolute) actually produce a smooth ramp - a feature that jumps between discrete states (like a thresholded on/off signal) will make the angle snap rather than sweep, regardless of this node's own settings.

CategoryRyanOnTheInside/FlexFeatures/Targets/Images

Inputs (8)

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: - shift_amount: Dynamically adjust color separation - angle: Dynamically adjust separation direction - 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)
shift_amountFLOAT0.0100–0.5Amount of RGB channel separation. Higher values create more color fringing (0.0 to 0.5)
angleFLOAT00–720Direction of the chromatic aberration effect in degrees. 0Β° is horizontal, 90Β° is vertical (0.0 to 720.0)
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β€”