Film exposure flicker
How frame-to-frame changes in shutter timing alter the exposure of complete film frames, producing a global brightness pulse without moving or locally deforming the image.
Visible effect
Complete frames pulse brighter and darker
Film exposure flicker makes one complete frame brighter or darker than its neighbours. The frame remains geometrically stable: shadows, highlights, grain, and every object rise or fall together because the recorded exposure changed before development and scanning.
The strongest diagnostic is temporal, not spatial. Pause on any one affected frame and it may look like a simple exposure adjustment; play the sequence and the changing frame-wide luminance becomes a visible pulse.
Physics
Exposure depends on the shutter-open interval
A motion-picture camera should expose film only while one frame is stationary in the gate. The rotary shutter, pulldown claw, and drive must keep a repeatable phase relationship. Variation in shutter angle, drive speed, or synchronization changes how long successive frames receive light and therefore changes their recorded exposure.
This effect belongs to capture timing. Illumination flicker changes the scene light before it reaches the camera; projector flicker modulates already-developed frames during reproduction. All three can look like brightness variation, but they enter the image system at different stages.
Mathematics
A bounded exposure offset held for one frame
Rate f_e selects integer exposure state k. A deterministic signed hash h, parameterized by seeds, chooses an offset within amplitude Astops. Converting stops to multiplier m preserves the photographic rule that one stop doubles or halves linear exposure.
The same multiplier applies to every coordinate u in linear-light frame L. The random sequence is a compact teaching approximation; measured shutter or scanner variation may have drift, periodicity, correlation, or isolated faults.
Shader
One linear-light exposure transform
The runtime chooses one frame-held exposure multiplier on the CPU. The exact GLSL function below decodes the sampled colour, scales all three channels equally in linear light, mixes the result, and returns display-encoded RGB.
// WHAT: Change the exposure of one complete simulated film frame.
// HOW: Multiply linear-light RGB by a frame-held exposure multiplier.
// WHY: Unequal shutter-open intervals alter the light recorded across the
// whole frame; they do not create a spatial brightness pattern.
vec3 filmExposureFlicker(
vec3 sourceSrgb,
float exposureMultiplier,
float effectMix
) {
vec3 linearSource = pow(
max(sourceSrgb, vec3(0.0)),
vec3(2.2)
);
vec3 exposed = linearSource * max(exposureMultiplier, 0.0);
vec3 mixed = mix(
linearSource,
exposed,
clamp(effectMix, 0.0, 1.0)
);
return pow(max(mixed, vec3(0.0)), vec3(1.0 / 2.2));
}- Source texturesRGB · one texture read per pixel
- Frame-held exposure transformOne fullscreen render pass
- Select one exposure offset for the simulated frame
- Convert exposure stops to a linear multiplier
- Decode sRGB
- Scale the complete frame in linear light
- Mix and encode to sRGB
- Display output
Why these steps are here
- Quantise time first. Every display refresh within one simulated film frame uses the same exposure.
- Use stops for controls. The amplitude maps to a familiar photographic exposure ratio.
- Decode before multiplying. Exposure scales scene-referred light, not gamma-encoded display values.
- Apply one scalar globally. Geometry and local contrast structure remain unchanged.
- Encode after the transform. The canvas receives display-ready RGB while the exposure calculation remains linear.
Notes
- A bounded random exposure offset in stops produces frame-held brightness variation in both directions.
- Low frame rate changes when a new image is captured; exposure flicker changes how much light that frame records. Their update rates may coincide, but they are separate operations.
- Frame jitter changes image position while exposure flicker leaves every coordinate fixed. A transport fault can produce both at once.
- The simple RGB multiplier does not model wavelength-dependent shutter transmission, development changes, scanner auto-exposure, highlight saturation, or negative-to-positive printing.
- Restoration should estimate exposure variation from stable scene regions and protect intentional lighting changes rather than assuming every luminance transition is a defect.
References
Kodak — Essential Reference Guide for Filmmakers — manufacturer reference for film transport, exposure, sensitometry, camera steadiness, projection, and laboratory handling.