ComfyUI Node

Prism Echo

The chromatic afterimage effect that punches above its weight

By criskb·Created 7 months ago·Updated 5 months ago· 0
Prism Echo
  • image
  • mask
  • image
  • mask
  • prism_echo_info
settings_json{"echoes":4,"distance":36.0,"angle":24.0,"decay":0.62,"chroma_split":0.45,"glow":0.28,"mix":1.0,"mask_feather":12.0,"invert_mask":false}

x1PrismEcho is a pure play node: it takes your image and echoes it out along an angled direction, offsetting each copy and splitting it chromatically, so you get that neon "motion afterimage" look - like a light streak, or a ghosted duplicate trailing off the subject with RGB fringing. It's the kind of effect that normally takes a multi-node chain of shift, color-split, and blend operations, compressed into one settings string.

It sits in MKRShift Nodes' VFX/Play branch - the pack's playground category, where the effects are there to be fun more than to be correct. There's a real place for that in finishing work: a subtle prism echo on a logo, a title card, or a highlight frame is the difference between "stock" and "designed."

How it works

The mechanism is a set of offset ghost copies, layered with decay. The settings:

  • echoes (default 4) - how many ghost copies trail out
  • distance (36) - how far each copy travels from the last
  • angle (24°) - the direction the trail heads. Compose it with your subject's motion
  • decay (0.62) - how fast each ghost fades. Low decay = long neon streaks, high decay = subtle depth
  • chroma_split (0.45) - the RGB channel offset on each copy. This is what makes it prismatic rather than just a double-exposure
  • glow (0.28) - softens and brightens the ghosts so they read as light rather than as hard copies
  • mix (1.0) - overall wet-dry blend with the original

All in a settings_json string, the pack's house style. The defaults are a solid "obviously an effect" starting point; you'll dial distance, angle, and decay first.

Inputs and outputs

Required: image and settings_json. Optional: mask, which restricts the echo to part of the frame. That's the professional move - echo the logo or the subject, keep the background clean.

  • image - the echoed, prismatic result
  • mask - the effective influence mask
  • prism_echo_info - summary string of resolved settings

Where it fits

It's a stylize/finishing node with real mileage in motion-graphics-style stills: music covers, poster typography, product hero shots with "energy," retro-synth aesthetics. Because chroma_split and glow exist, you can go from a faint warm ghost (low split, low glow) to a full VHS-neon smear (high split, high glow) with the same node. It pairs naturally with the rest of VFX/Play - x1RippleWarp for distortion, x1Kaleido for symmetry - but it's also fine standalone on an otherwise clean graph.

One honest note: this is a "dose it carefully" effect. decay at 0.62 and four echoes reads as tasteful; crank echoes to 12 with chroma_split high and you've built a hallucination. If your client says "too much," pull mix down before you rebuild.

Installing it

ComfyUI Manager (search "MKRShift Nodes") or:

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

Restart, no requirements, no model downloads, no ffmpeg. The pack is a big install for a play effect - this is a "you're already using the pack" node, not a reason to install it. But it's a good example of how much polish the VFX branch gives you for free once you're in.

Where people get burned

Feeding it a full-frame busy image - the echo smears everything into a rainbow mess and it's hard to tell what went wrong. Start with a clean, high-contrast subject or use the mask input to confine the effect. Also, remember distance is in pixels: at high resolutions 36px is subtle, so scale it up with your image size.

CategoryMKRShift Nodes/VFX/Play

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
settings_jsonSTRING{"echoes":4,"distance":36.0,"angle":24.0,"decay":0.62,"chroma_split":0.45,"glow":0.28,"mix":1.0,"mask_feather":12.0,"invert_mask":false}
maskoptMASK

Outputs (3)

NameTypeDescription
imageIMAGE
maskMASK
prism_echo_infoSTRING