TRY MOSH-LITE
GET MOSH-PRO

Building Retro Effects

VHS, Bad TV, CRT, ScanLines, RGB Shift, Barrel Blur, ASCII and Grain — what each does, values worth starting from, and the order they belong in. All images below are a straight export from Mosh-Pro, using the same input frame.

Grade the Plate First

Every effect here is contrast-dependent. ScanLines darken alternate lines, a CRT vignette needs brightness in the corners, RGB Shift needs color to separate. Feed them a flat source with a strong color tint and they do almost nothing — usually why a first attempt looks weak.

So Color Correction goes first, and the job is to neutralise rather than beautify: pull the tint back toward neutral, keep contrast gentle, leave headroom. The effects under it add plenty of their own.

The ungraded source frame The source frame with color correction applied
Source (left) and graded plate (right). The change looks minor on its own — it is not. Everything after it depends on it.
Brightness 0.55 Contrast 0.42 Saturation 0.39 Hue Offset 0.00
Every slider does one obvious thing to the picture — drag it and watch. The fastest way to learn any of these is to run a single slider end to end and see where it breaks.

VHS

Tape artefacts: dropout bars, chroma noise, head-switching smear, and the on-screen furniture a VCR stamps over the picture. The most complete effect here — on its own it gets you most of a convincing tape look.

VHS in motion. The dropout bars drift down the frame and the static reseeds every frame — the movement is most of what sells it.
Text 0.80 Static 1.00 Bars 0.50 Seed 0.30

Text is the opacity of the PLAY indicator and timestamp overlay — 0 hides it. Static is the chroma noise floor, Bars the dropout streaks.

Seed only applies in image export mode. In video the artefacts are driven by time and move on their own. On a still their placement is fixed, so if a dropout band lands across a face you re-roll the layout rather than soften the effect — the shot above took three seeds to move the smear off the nose.

Text 1 and Text 2 replace the auto-generated timestamp with your own strings — useful across a sequence, where the live clock would otherwise keep changing.

RGB Shift

Separates the color channels spatially — the chroma misregistration you get from a badly-aligned tube or a cheap composite cable.

The frame with RGB shift applied
RGB Shift at 0.22. Visible as red and cyan fringing along the hair strands and the edge of the face.
Amount 0.22 Angle 0.00 Mode 0

The default of 0.10 is deliberately subtle — real misregistration is a few pixels, not a rainbow. The 0.22 above is roughly the ceiling for a period look: push much past it and the channels separate far enough that it stops reading as a misaligned tube and starts reading as glitch art, which is a different look altogether. Angle rotates the axis of separation; the horizontal default is what most analog kit actually did.

Bad TV

Analog transport warble — the picture bending as though tracking is off. Two distortion controls at different scales, plus roll speed.

Bad TV in motion. Roll Speed sets the vertical motion.
Thick Distort 0.50 Fine Distort 0.20 Roll Speed 1 Seed 0.00

Roll Speed is the vertical motion — how fast the band crawls up the frame. At 0 it stops and the warp stays put, which is what you want on a still, or when the drift fights real motion in the shot.

Half these values in a stack. Bad TV and VHS both displace the image, and at full strength together the subject stops being readable — which is fine if that is the point, and a mistake if it is not.

Barrel Blur

Simulates cheap glass — radial softening and color fringing toward the frame edges. The subtlest effect here, and the one that does most to sell the others.

The frame with barrel blur applied
Barrel Blur at 0.25. Center stays sharp; the corners soften and pick up chromatic fringing.
Amount 0.25 Invert off Concave off

Invert pushes the blur to the center instead; Concave flips the distortion. Both worth a look, but the default outward falloff is the one that reads as a lens.

ScanLines

Simulates the raster of an old monitor — the horizontal lines a CRT drew the picture with, one scan at a time. The most recognizable signal that footage came off a screen rather than out of a camera, which is why it does so much for so little.

Simple to set, and the one most often dialled too fine to see.

The frame with scanlines applied
ScanLines with the line count pulled well down, so the lines are thick enough to read at any size the page displays.
Amount 0.41 Width 0.46 Angle 0.00 Blend Mode softlight
Scanline spacing is measured in pixels, so it is resolution-dependent. A setting dialled in at 1080p will look twice as fine at 4K. Pick your export resolution before you tune this, not after — these values assume 1920×1080.

Grain

Two effects behind one Type control: Digital is pixellated sensor noise, Film is softer and clumps like real emulsion grain.

The frame with digital grain The frame with film grain
Digital (left) and Film (right) at matched settings.
Type Digital / Film Amount 0.80 Scale 2.50 Speed 1.00 RGB on Blend softlight

Scale sizes the grain particles and Speed controls how fast the pattern churns between frames — at zero it freezes, which looks wrong on video and is exactly right for a still. RGB toggles between colored and monochrome noise; film stock is closer to monochrome.

Grain goes last, at the bottom of the list. Grain belongs to the print, not the image — anything running after it smears the grain and the result reads as compression, not film.

Stacking Them

Individually these are demonstrations; together they are a look. Read top to bottom, the order follows the path a real signal takes: the tape damages the image, the cable misregisters it, the transport warps it, the glass softens it, the screen draws it as lines, and the film records grain over everything.

The frame with the full retro stack applied
All six, at roughly half the values used in isolation above.

These stack well together, but less is more — in combination you can usually dial each one back from where it sat on its own.

Once dialled in, save it as a preset — controls are at the top of the effects panel. Name it, hit +, and the whole chain comes back in one click on the next clip. Presets are files, so looks can be shared both ways.

In Motion

Most of these are time-based. Dropout bars travel, the Bad TV roll crawls up the frame, grain churns. They work on a still too — the artefacts come from time, not from the input moving — but the reason to use them is what they do across frames.

The stack from the previous section, rendered over the clip the still frame came from. Watch the dropout bars travel and the grain churn.
Note: all seven passes run in real time on the GPU, at up to 4K. No render step between moving a slider and seeing the result — you tune against the finished full-resolution output, and export writes out what you were already looking at.

Other Retro Effects

Everything so far damages the picture but leaves it the same image. These two replace the frame with their own rendering of it, so they do not layer with the rest the same way.

CRT

A whole display in one pass: phosphor triads, screen curvature and corner vignette.

The frame with the CRT effect applied
CRT with the phosphor scale raised so the triads are visible. Watch the window frame at the right edge — it bows.
Amount 1.00 Scale 0.60 Curve 0.50 Vignette 0.80 Brightness 0.50

Scale is the control that matters. At the default the phosphor mask is so fine it vanishes below full resolution, which reads as broken rather than small. Push it up until you can see the structure.

CRT has its own line structure, so adding ScanLines on top is optional — two grids can interfere and read as moiré. If you want both, pull the ScanLines amount right down.

Curve needs something straight in frame to read against — with no hard lines the bow is nearly invisible.

ASCII

Replaces the image with a grid of characters chosen by brightness. The most destructive effect here — it substitutes the picture rather than degrading it.

The oldest look in the set: text-only terminals and line printers drew pictures this way decades before graphics cards, and it became the house style of the dial-up BBS scene in the 80s and 90s. With Colorize on, what you get is closer to the ANSI art those boards ran than to plain ASCII.

The frame rendered as ASCII characters
ASCII at size 2 with the Barysh ramp, colorized. Dense enough that the portrait survives as tone while every cell is still a character — open it full size to see them.
Amount 1.00 Size 2.00 Colorize 1.00 Char Set Barysh

Size is the cell size; raise it if you want the characters legible rather than read as texture. Colorize tints each character from the source pixel — at zero you get monochrome.

Char Set is not just density: ramp length sets how many tonal steps you get, glyph shapes set the texture.

Set Ramp
Barysh .:-=+*%@# The default. Even tonal steps, solid blacks — the safe choice.
Karpinsk .°*oO@ Round glyphs, six steps. Reads almost as halftone rather than text.
Okha .:+j6bHM Mixed weights, blockier midtones.
Luza .:*o&8@# The ramp from the original PhotoMosh.
Sharya ._/:-+=()<> Punctuation only, so it never reaches solid black. Good over dark plates.
Ukhta .:^"~cvo*SO80# Fifteen steps — the smoothest gradation before Donetsk.
Donetsk .`~:;!>+=icjtJY56SXDQKHNWM Twenty-seven steps. Holds shadow detail the short ramps crush.

60+ Effects, Not Just These

Retro is one corner of it. Mosh-Pro ships 60+ creative effects for images and video, subtle through to destructive — Data-Mosh, Optical-Flow, Pixel Sort, Kaleidoscope, Luma-Mesh, Feedback, Soft and Hard Glitch, Super 8, Slit Scan, Dither, Watercolor, 8-Bit CGA, Light Streak, 3D Transform, ChromaKey and Remove Background, plus masking and grouping to control where any of them land.

All of it real time on the GPU, up to 4K, with audio-reactive and MIDI control if you are driving it live.

© 2026 Airtight Interactive