Frame jitter and gate weave
How imperfect film registration shifts each exposed or reproduced frame relative to a fixed gate, producing rigid frame-to-frame image movement that usually follows the transport axis.
Visible effect
The complete image shifts beneath a stable frame boundary
Frame jitter or gate weave makes the photographed scene move as one rigid image relative to the frame boundary. Fine detail does not independently deform: edges, grain, and every object share the same displacement for that registered frame.
Vertical movement commonly dominates because motion-picture film advances vertically through the camera or projector. Horizontal error can still appear from perforation clearance, lateral guidance, pressure, damaged film, or a second registration stage during printing, scanning, or projection.
Physics
Registration must oppose movement during every exposure
The pulldown advances film while the shutter is closed. During exposure, registration pins, the gate, pressure plate, and lateral guides must locate and hold the film. Clearance and wear in those interfaces, damaged or shrunken perforations, pressure variation, and transport tension can leave successive images at slightly different positions.
Capture is only one possible registration stage. Contact printing, optical printing, scanning, and projection can add another rigid displacement. The visible recording may therefore combine motion baked into the photographed frames with motion introduced while the element is reproduced.
Mathematics
A bounded, frame-held registration offset
Registration rate f_r selects integer state k. Two deterministic signed hashes h, parameterized by seeds, provide independent bounded offsets. AmplitudesA_x and A_y are expressed in output pixels.
Inverse mapping adds the offset to destination coordinateu_d after division by output width W and height H. The default uses a larger A_y; the ratio is a controllable teaching assumption, not a universal measurement for every film gauge or transport.
Shader
One rigid coordinate remap under a fixed gate
The runtime computes one offset per simulated frame and passes it to the exact GLSL functions below. The shader inverse-maps the source texture and applies a narrow, fixed gate-edge transmission mask.
// WHAT: Move a complete photographed frame relative to a fixed output gate.
// HOW: Inverse-map the destination coordinate by one frame-held pixel offset.
// WHY: Registration error is a rigid displacement, not a local deformation or
// continuously moving noise field.
vec2 filmFrameJitterSourceCoordinate(
vec2 destinationUv01,
vec2 offsetPixels,
vec2 destinationSize
) {
return destinationUv01 +
offsetPixels / max(destinationSize, vec2(1.0));
}
// The gate remains fixed while the image moves beneath it. This bounded
// teaching approximation darkens only a narrow region at the frame boundary.
float filmGateTransmission(
vec2 destinationUv01,
vec2 destinationSize,
float shadowAmount
) {
vec2 edgePixels = min(
destinationUv01,
vec2(1.0) - destinationUv01
) * destinationSize;
float distanceToEdge = min(edgePixels.x, edgePixels.y);
float clearGate = smoothstep(0.0, 12.0, distanceToEdge);
return mix(
1.0 - clamp(shadowAmount, 0.0, 1.0),
1.0,
clearGate
);
}- Source textureOne complete registered frame
- Frame-held registration remapOne texture read per output pixel
- Select a deterministic offset for the simulated frame
- Convert pixel displacement to texture coordinates
- Inverse-map the complete image
- Apply the fixed gate-edge shadow
- Display output
Why these steps are here
- Quantise time first. Every display refresh within one simulated film frame reuses the same registration state.
- Offset the complete coordinate. All scene features move together instead of bending or swimming independently.
- Keep amplitudes in pixels. Controls describe visible output displacement and are normalized only at the sampling boundary.
- Use inverse mapping. Every destination pixel receives exactly one source lookup without forward-warp holes.
- Hold the gate fixed. A narrow boundary shadow provides a stationary reference against which weave is visible.
Notes
- A rigid random offset and edge darkening are held by quantised time so the position remains stable for one simulated frame.
- Low frame rate changes when a new image is captured. Frame jitter changes where that complete image sits. The two effects may coexist but are independent pipeline operations.
- The random model is an artistic approximation. Real error may be periodic, correlated, biased, format-dependent, or traceable to one damaged perforation or transport component.
- Gate weave differs from camera shake: camera shake changes the scene projection before exposure and can introduce parallax or exposure-time blur; registration error moves the film element relative to the gate.
- A production restoration pipeline should estimate real frame transforms from stable image features or the exposed frame boundary rather than synthesize offsets.
References
Kodak — Essential Reference Guide for Filmmakers — manufacturer reference for film transport, exposure, sensitometry, camera steadiness, projection, and laboratory handling.
ARRI — ARRISCAN XT brochure — scanner documentation describing pin registration and image-stabilization measurements for film steadiness.