CRT TV Effect
Make any image look like it's glowing on an old TV
- image
- IMAGE
The CRT look is a full stack of effects pretending to be one thing: phosphor tint, scanlines, bloom, barrel curvature, chromatic aberration, noise. Most "CRT" filters are a scanline overlay and a vignette and a prayer. CRT TV Effect from WtlNodes is the opposite - a 12-step effect chain where every layer is a real, tunable stage, from the phosphor dots to the electron-beam sweep. It's the most control-dense node in the pack, and it's aimed at people who want an authentic retro look rather than a sticker of one.
The chain, in roughly the order it's applied: phosphor tint → defocus → phosphor dots → halation → bloom → scanlines → beam sweep → noise → barrel curvature → chromatic aberration → vignette. You get a slider for essentially every stage. That's a lot of knobs, but they're organized and each one is honestly labeled, so you can build a clean minimal look or go full 1990s corner-store-monitor.
The controls that actually matter
scanline_intensity/scanline_spacing- the dark lines between display rows. Spacing 8 (default) reads as a classic CRT; spacing 2–4 looks like a finer high-res tube. The scanlines use a cos² periodic darkening, which is why they look organic instead of like a printed grid.curvature- barrel distortion that makes the image bulge like a glass tube. 0.1 is subtle; 0.3+ is "very round TV."chromatic_aberration- the red/blue edge shift at screen edges, the signature CRT giveaway.phosphor_tint/phosphor_dots/phosphor_dot_size- the color cast and the dot-matrix texture of the actual phosphor.grayscaletoggles a clean black-and-white phosphor look.beam_intensity/beam_position/beam_width/beam_glow- the stylized bright sweep trace across the screen. This is the showpiece: a moving bright band with per-column luma modulation. If you want the "caught mid-refresh" shot, this is it.bloom/halation- glow around brights, separately from the beam.noise/vignette/defocus- the finish: static grain, edge darkening, soft focus.
Plus the pack's apply_type live-preview dropdown, and an IMAGE output.
How to not drown in it
The 18 controls are intimidating, and the trap is cranking everything. A convincing CRT is mostly scanlines, a touch of curvature, a little chromatic aberration, and a hint of bloom - the phosphor dots and beam are optional flavor. Start with scanline_intensity 0.6, curvature 0.1, chromatic_aberration 1.5, everything else low, then add one effect at a time. The defaults are actually a sane baseline; treat the node as "the defaults, plus whatever you're curious about."
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Scorpiosis0/ComfyUI-WtlNodes.git
Restart ComfyUI, or install via ComfyUI Manager (search "WtlNodes"). No models, no heavy deps.
Gotchas
- Full stack = slow-ish. Twelve chained image passes on a big batch adds up. For batch work, keep effects minimal or apply once.
- The beam sweep is static in a still. It's a rendered bright band at a position you set - for an animated sweep you'd step
beam_positionover frames. grayscaleremoves the color entirely. If you flip it and the image looks colorless, that's the feature - it gives you the phosphor-tint-on-mono look.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| beam_intensity | FLOAT | 0.750–1 | — |
| beam_position | FLOAT | 60.00–100 | — |
| beam_width | FLOAT | 2.50.3–20 | — |
| beam_glow | FLOAT | 0.600–1 | — |
| scanline_intensity | FLOAT | 0.600–1 | — |
| scanline_spacing | INT | 82–16 | — |
| curvature | FLOAT | 0.100–0.5 | — |
| chromatic_aberration | FLOAT | 1.50–5 | — |
| halation | FLOAT | 0.500–1 | — |
| bloom | FLOAT | 0.350–1 | — |
| phosphor_tint | FLOAT | 0.700–1 | — |
| phosphor_dots | FLOAT | 0.200–1 | — |
| phosphor_dot_size | FLOAT | 5.01–12 | — |
| defocus | FLOAT | 0.400–1 | — |
| noise | FLOAT | 0.300–1 | — |
| vignette | FLOAT | 0.400–1 | — |
| grayscale | BOOLEAN | false | — |
| apply_type | COMBO | 3 options: none, auto_apply, apply_all |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |