Nodes/MKRShift_Nodes/Film Damage
ComfyUI Node

Film Damage

Dust, scratches, burns, and flicker in one pass

By criskb·Created 7 months ago·Updated 5 months ago· 0
Film Damage
  • image
  • mask
  • image
  • mask
  • film_damage_info
settings_json{"dust_amount":0.25,"scratch_amount":0.22,"burn_amount":0.1,"flicker_amount":0.08,"seed":1977,"mix":1.0,"mask_feather":12.0,"invert_mask":false}

Sometimes you don't want to fix the image - you want to make it look like it spent decades in a dusty projector. x1FilmDamage layers the whole analog-degradation kit - dust, scratches, light burns, and exposure flicker - over your frame in one procedural pass, with a single seed controlling the "story" of the damage. It's the sibling of the pack's x1Film (grain + vignette) but where that node polishes, this one ages.

It's part of MKRShift Nodes by Cris K B, under MKRShift Nodes/VFX/Stylize.

How it works

Every effect is procedural and randomized off one seed (default 1977 - the author has taste). The node generates:

  • dust_amount (default 0.25) - scattered specks and motes, the fine-layer dirt that accumulates in the gate.
  • scratch_amount (default 0.22) - the vertical hairline scratches of a film pulled through a projector, the big "this is old film" tell.
  • burn_amount (default 0.1) - localized brightness surges where the stock was overexposed or heat-damaged, the glowing spots and patches.
  • flicker_amount (default 0.08) - the global brightness instability of a lamp fighting to stay lit, which sells motion in video the way a single still can't.

Each is a separate randomized pass with its own spatial distribution, combined by the mix knob against the original. Because the whole thing is driven by the seed, you get consistent "weather" across a batch - re-running the same seed gives the same damage, which you want if you're matching damage across frames of a clip rather than re-rolling every frame.

The inputs that matter

Inside the settings_json:

  • dust_amount / scratch_amount - the two that do most of the "old film" work.
  • burn_amount / flicker_amount - the less-is-more ones; burns especially tip into "lens flare meme" fast.
  • seed - the damage pattern's random seed (default 1977). Change it to change the story.
  • mix - overall strength (default 1.0).

Optional mask input plus mask_feather / invert_mask, and outputs image, mask, and a film_damage_info string.

Installing it

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

Restart ComfyUI, or use ComfyUI Manager (search MKRShift_Nodes). No requirements.txt, no model files, no keys.

Where it fits

The trap is piling all four effects up at their defaults and getting a frame that looks like it survived a house fire. The effect that reads as "vintage" is usually just one or two of these: heavy scratches + light dust, or burns + flicker, with the others at 0.05 or below. Keep burn_amount low - it's the one that tips from "archival" to "glitch art." And pair it with the pack's x1Film grain at low strength for the full analog sandwich. For music-video and horror-grading work, this is genuinely the best node in this category, because you don't need to hunt down (or license) actual damaged-film footage.

CategoryMKRShift Nodes/VFX/Stylize

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
settings_jsonSTRING{"dust_amount":0.25,"scratch_amount":0.22,"burn_amount":0.1,"flicker_amount":0.08,"seed":1977,"mix":1.0,"mask_feather":12.0,"invert_mask":false}
maskoptMASK

Outputs (3)

NameTypeDescription
imageIMAGE
maskMASK
film_damage_infoSTRING