Film Damage
Dust, scratches, burns, and flicker in one pass
- image
- mask
- image
- mask
- film_damage_info
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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| settings_json | STRING | {"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} | — |
| maskopt | MASK | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| film_damage_info | STRING | — |