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 rotary shutter controls how long stationary film receives light A sector-shaped opening in a rotating disc passes light from the lens to film held in the gate. A timing strip compares short, nominal, and long shutter-open intervals that produce different frame exposures.MECHANISM · FRONT AND SIDE RELATIONSHIPLIGHT FROM LENSROTARY SHUTTEROPEN SECTORFILM GATEstationary frameONE SHUTTER REVOLUTION · OPEN TIME SETS EXPOSURESHORTNOMINALLONGshutter-open intervalOPEN
The rotary shutter is a disc with an open sector. As it turns, that sector uncovers the gate only while the film is stationary. A phase or speed error changes the open interval from frame to frame, changing exposure across the complete image.

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.

filmExposureFlickerGLSL
// 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));
}
Processing pipelineBoxes mark actual render-pass boundaries.
  1. Source texturesRGB · one texture read per pixel
  2. 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
  3. Display output

Why these steps are here

  1. Quantise time first. Every display refresh within one simulated film frame uses the same exposure.
  2. Use stops for controls. The amplitude maps to a familiar photographic exposure ratio.
  3. Decode before multiplying. Exposure scales scene-referred light, not gamma-encoded display values.
  4. Apply one scalar globally. Geometry and local contrast structure remain unchanged.
  5. 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.