Human vision · Motion & time

What happens between the frames?

Explore the widgets in place; expand Explanation for each section’s teaching notes. Begin with flicker fusion, then isolate apparent motion, frame stepping, tracking blur, pixel response and duty cycle. Explore the blur–flicker–brightness tradeoff next, then repeat light pulses without adding motion samples, before introducing cadence mismatch and missed deadlines. Each section keeps its own controls. Pause a timing demonstration, then click or drag its timeline to inspect any instant. Arrow keys move the selected time in small steps.

The walking animation plays at normal speed. Section 01 flashes in real time; its 0–255 luminance setting is a screen gray level. Later timing demonstrations are slowed. Numeric luminances in nits describe a hypothetical display, not the output of your screen.

01 · Critical flicker fusion

Flashes can look steady: critical flicker fusion

Explanation

Critical flicker-fusion frequency (CFF) is the frequency at which brightness fluctuations become indistinguishable from steady light for specified viewing conditions. Frequency in hertz (Hz) means cycles per second. CFF varies with brightness, modulation, area, and retinal location.

The stationary patch flashes in real time with equal light and dark intervals. The requested frequency is sampled by your display and browser, so this is not a calibrated CFF test. The available frequency range is limited by the observed update rate; the slider snaps to whole-frame light/dark intervals and shows their estimated frequency.

Try itPress Play, then adjust frequency and luminance. The 0–255 value is a screen gray level, not a measurement in nits.

This models retinal displacement, not the blur you should expect from the slowed playback.

One cell = one light cycle · Colored band: light on · Pale: light off
Details
Real-time display demonstration · not a calibrated CFF test
02 · Apparent motion

Still pictures can look like one moving object

Explanation

Successive still pictures can evoke apparent motion, sometimes called motion fusion. Frame rate (fps) counts new pictures per second. Seeing a moving character does not mean every position jump has become invisible.

10 fps is not a universal threshold. Motion depends on the pictures, their spacing, and timing. Compare rates rather than treating one number as a biological switch.

Try itPlay at 1, 10, 24, and 60 fps. The journey always takes six seconds; higher rates show more sampled poses.
12 fps
0.00 / 6.00 s
Successive sampled poses

Normal-speed playback. Actual presentation depends on your browser and display. The filmstrip centers each pose for comparison.

03 · Frame stepping

Frame stepping: too few motion positions

Low fps makes larger position jumps, even when frames arrive evenly.

Explanation

At low frame rates, a moving object jumps farther between positions. These steps can remain visible even when you recognize one moving object.

Angular step = object speed ÷ source fps. Faster objects require more motion samples to keep the jumps small. We call this frame stepping here, and distinguish it from the cadence mismatch and late frames in sections 9 and 10.

Try itRaise Source frames while holding Object speed fixed. Then increase the speed.
Continuous referenceDisplayed image

This models retinal displacement, not the blur you should expect from the slowed playback.

One cell = one frame/refresh · F = source frame · continuous illumination
Details
Slowed timing schematic · not a personal flicker-fusion test
04 · Tracking blur

Extra blur from held frames during smooth tracking

One new frame per refresh · continuous illumination · ideal instantaneous pixels.

Explanation

Smooth pursuit helps keep a continuously moving target sharp by keeping its image approximately stationary on the retina. On a display, the target holds each sampled position while your eyes keep moving. This mismatch adds blur from frame holding, even with instantaneous pixels.

Estimated smear = tracking speed × frame-hold time. Each frame is illuminated for its full interval here. Increasing FPS shortens that hold. Smooth pursuit is assumed; real tracking at low frame rates can include fixations and corrective saccades.

Try itCompare 24 and 60 fps while keeping Object speed fixed. Watch the estimated retinal smear shrink. Then increase the speed.
Continuous referenceDisplayed image

Assumes smooth pursuit. Shows added smear from held frames; the slowed playback does not reproduce that blur.

One cell = one frame/refresh · F = source frame · continuous illumination
Details
Slowed timing schematic · not a personal flicker-fusion test
05 · Pixel response

What happens when pixel switching is too slow?

Fixed 60 fps / 60 Hz · continuous illumination · only pixel response changes.

Explanation

Some modern panels switch quickly enough that pixel-response ghosting is small. This example lets you explore slower switching: pixels at the old ball position fade while pixels at its new position brighten. Both positions can briefly remain visible: pixel-response ghosting. The 0 ms setting is an idealized fast-switching reference; the slow settings do not represent every current XR display.

The selected response time describes 10–90% brightening and 90–10% fading. This model uses the same speed in both directions; real panels can differ. A refresh can request a new value before a pixel finishes its previous transition. Slow response does not automatically prevent a high refresh rate.

The dashed marker identifies one pixel. Its graph compares requested brightness with modeled light output as the ball crosses it.

Try itIncrease Pixel response from 0 to 20 ms. Watch the old position fade and the new position brighten. Pause and scrub through a frame change; compare the requested and modeled traces.
Continuous referenceDisplayed image

New pixels brighten while old pixels fade.

This models retinal displacement, not the blur you should expect from the slowed playback.

One cell = one frame/refresh · F = source frame · continuous illumination · Lower trace: marked pixel
Details
Slowed timing schematic · not a personal flicker-fusion test
06 · Duty cycle

Shorten the time each frame emits light

Fast switching does not mean short illumination. Even an instantly switched frame can smear across the retina during smooth tracking if it stays lit too long.

Fixed 60 fps / 60 Hz · ideal instantaneous pixels · only illumination duration changes.

Explanation

Section 05 changed how quickly pixels reached their requested brightness. Here, restore instantaneous switching and keep 60 fps / 60 Hz fixed. Now change how long each frame emits light. Lighting the frame for the full interval can still produce tracking smear; a brief light pulse followed by a dark interval reduces that smear.

Duty cycle = light-on time ÷ refresh interval. Here, display persistence is the light-on time per presentation. At 60 Hz, an interval lasts 16.7 ms: 100% duty lights the whole interval; 25% lights it for about 4.2 ms.

Shorter light pulses reduce the additional retinal smear during smooth tracking. They do not add motion positions or require slower pixels. Emission can be gated using a backlight or the panel’s own emission controls.

Try itCompare 100% with 25% Duty cycle: pixel switching stays instantaneous, but the light-on band and estimated retinal smear shrink. Pause and scrub into a dark interval: the displayed ball disappears.
Continuous referenceDisplayed image

Assumes smooth pursuit. Shows added smear from held frames; the slowed playback does not reproduce that blur.

One cell = one refresh · F = source frame · Same color + F number = same frame · Colored band: light on · Pale: light off
Details
Slowed timing schematic · not a personal flicker-fusion test
07 · Blur, flicker, brightness

Shorter flashes: less blur, but what happens to brightness and flicker?

Lower persistence means less light-on time per frame. This reduces tracking smear, but also lowers average luminance unless the light pulses are made brighter. The dark intervals can also make flicker visible.

Explanation

At a fixed refresh rate, lower persistence means a shorter light pulse per frame. If its luminance stays the same, the shorter pulse delivers less light per frame and the average luminance falls. To keep the same average luminance, the pulse must be brighter: the same amount of light must be delivered in less time. This requires higher peak luminance, not a higher average luminance.

Imagine a light emitting at 100 nits. If it stays on throughout a 10 ms interval, its average is 100 nits. At 20% duty, it emits for only 2 ms and is dark for 8 ms. The average is therefore (100 × 2 + 0 × 8) ÷ 10 = 20 nits.

To recover the original 100-nit average while still emitting for only 2 ms, the pulse must reach 500 nits: (500 × 2 + 0 × 8) ÷ 10 = 100 nits. Five times the luminance for one-fifth of the time delivers the same time-average light.

Average luminance = pulse luminance × duty cycle. Luminance is measured in nits (cd/m²). Lux instead describes light arriving at a surface.

Shortening emission can save energy when the peak stays unchanged, but restoring the average brightness can offset those savings. Hardware limits constrain compensation.

Compare 60 Hz and 120 Hz at 20% duty. At 60 Hz, each light pulse lasts about 3.3 ms. At 120 Hz, each lasts about 1.7 ms, but there are twice as many pulses per second. Both emit light for 20% of each second, so the same peak luminance gives the same average luminance.

The shorter pulses reduce tracking smear, while their higher repetition rate can make flicker less visible. This reduces persistence without the loss of average light caused by shortening pulses at a fixed refresh rate. In this widget, FPS follows refresh rate, so 120 Hz also means rendering 120 new frames per second.

Try itSet 100 nits and 20% duty. Compare Keep peak fixed with Keep average fixed. Watch the ball, the two light previews, and the waveform; then change the matched frame/refresh rate, luminance and duty cycle.

This models retinal displacement, not the blur you should expect from the slowed playback.

Pulse width: on-time · pulse height: peak luminance · dashed line: average · vertical scale expands for higher peaks
Details
Slowed timing schematic · not a personal flicker-fusion test

Next: More frequent light pulses can reduce visible flicker. Must we render a new image for every pulse?

08 · Flicker and repeated frames

Reduce flicker by repeating the light pulse

24 source frames/s · equal light/dark intervals · 1, 2, or 3 pulses per source frame.

Explanation

The previous lesson showed the blur–flicker–brightness tradeoff. More frequent pulses can reduce visible flicker, and 24 fps does not require 24 light pulses/s. Repeating each frame twice or three times gives 48 or 72 pulses/s while retaining 24 motion positions/s. Dark intervals remain; the light–dark cycles simply occur more frequently.

More frequent pulses can reduce flicker, but do not create new poses or guarantee smooth motion. Each source frame receives the same number of equal light pulses; motion steps can remain. These are idealized global-emission examples.

Try itSelect 1×, 2×, or 3×. Compare 24 source frames/s with 24, 48, or 72 light pulses/s. Count repeated F numbers. The light/dark fraction stays fixed, so only pulse repetition changes.
Continuous referenceDisplayed image

This models retinal displacement, not the blur you should expect from the slowed playback.

One cell = one refresh · F = source frame · Same color + F number = same frame · Colored band: light on · Pale: light off
Details
Slowed timing schematic · not a personal flicker-fusion test
09 · Cadence judder

Cadence judder: unequal repeats to fit the display

Cadence mismatch: 24 fps on 60 Hz holds frames for 50, 33, 50, 33 ms—even when every source frame is ready on time.

Explanation

Evenly captured frames can be displayed for unequal durations. 24 fps on 60 Hz alternates groups of three and two refreshes per source frame: a 3:2 cadence.

“Judder” and “stutter” are used with overlapping meanings. Here we name the cause: cadence judder means unequal repeats caused by rate conversion; late-frame stutter means a missed frame deadline. These are not separate mechanisms of vision.

Try itKeep 24 source fps. Compare 60 Hz with 48, 72, or 120 Hz. Integer multiples of the source fps give equal repeats, removing this cadence mismatch. The 24-fps stepping can remain.
Continuous referenceDisplayed image

This models retinal displacement, not the blur you should expect from the slowed playback.

One cell = one refresh · F = source frame · Same color + F number = same frame · Colored band: light on · Pale: light off
Details
Slowed timing schematic · not a personal flicker-fusion test
10 · Late-frame stutter

Late-frame stutter: the next frame misses its deadline

Fixed 60 fps / 60 Hz · continuous illumination · only the missed-deadline duration changes.

Late frame: the old frame stays on screen too long. This can happen even at a nominal 60 fps on 60 Hz.

Explanation

A late frame leaves the old position on screen too long. When a fresh frame arrives, the object catches up with a larger position change.

The model introduces one rendering stall every 0.6 simulated seconds (every 6 seconds of playback at 0.1×). During the stall, source arrivals stop; display refreshes and illumination continue using the previous frame.

Frame pacing means keeping presentation intervals consistent. A high average fps can hide occasional long intervals.

Solutions include reducing rendering workload, preparing assets and shaders ahead of time, and scheduling frames consistently. A higher refresh setting alone cannot make a late frame arrive on time.

Try itKeep the fixed 60 fps / 60 Hz timing. Increase Rendering stall and watch an old frame held past its deadline, followed by a catch-up jump. At 0.1×, the stall repeats every 6 seconds of playback.
Continuous referenceDisplayed image

This models retinal displacement, not the blur you should expect from the slowed playback.

One cell = one refresh · repeated F number = held frame · continuous illumination
Details
Slowed timing schematic · not a personal flicker-fusion test
11 · Motion processing

Timing and order in apparent motion

Explanation

A briefly presented stimulus can remain perceptually visible after it disappears. This is visible persistence; it has no single fixed duration for all conditions.

Persistence can keep a stimulus briefly visible, but motion perception also depends on where and when the image changes. Motion-sensitive circuits respond differently to left-to-right and right-to-left sequences. Their activity helps encode direction and speed; a lingering image alone does not explain that selectivity.

In a flipbook, each page contains a frozen pose. The character's position or pose changes between pages, and the sequence can produce apparent motion.

The faded marks are an adjustable illustration of lingering traces. Use them to compare the sequence of positions with the traces left behind. This demo illustrates timing and spacing; it does not independently demonstrate why persistence alone is insufficient or predict what you will perceive.

Try itChange Source frames and Object speed, then vary Illustrative trace. Compare how often positions update and how far apart they are. The trace marks earlier positions; it is an illustrative overlay, not a prediction of what you should see.

Illustrative persistence

Continuous referenceDisplayed image

This models retinal displacement, not the blur you should expect from the slowed playback.

One cell = one refresh · F = source frame · Same color + F number = same frame · Colored band: light on · Pale: light off
Details
Slowed timing schematic · not a personal flicker-fusion test
12 · System timing

From motion to photons

Follow one scene frame from rendering to emitted light. The top rows identify frames and refreshes; the rows below show the work behind them.

Explanation

A headset must measure motion, render an image, send pixel values to the panel, and emit light. These operations take time—and work for different frames can overlap.

Every row shares the same 0–120 ms time axis. The Scene frames ready row identifies completed frames; Display refreshes shows which frame each presentation uses. Each frame keeps its color through the operation rows. Saturated stages belong to your selected refresh; faded stages belong to other work. The moving black line only indicates the time being inspected.

Writing pixels and emitting light are different operations. Transfer/scan loads pixel values, often row by row. With rolling emission, different rows emit at different times. With global emission, the panel emits together after the data is loaded. This timeline uses a global-emission example.

An IMU is an inertial measurement unit: a motion sensor. The pipeline queries an early pose for rendering and a late pose for reprojection, correcting the viewpoint without rendering the whole scene again. These are uses of the tracking system’s pose estimate, not two separate IMUs or its only two measurements.

Motion-to-photon
Head movement → the corresponding change in display light. The bracket here starts at the pose timestamp and ends at first light. This pose age is not a full physical motion-to-photon measurement: sensing delay and pose prediction are omitted.
Interaction latency
A physical action → its visible result. Our controller-input marker starts later, when the application samples the input at render start; device and input-delivery delays are omitted. Reprojection refreshes head pose, not the action’s effect on the scene.
Display latency
Display input → emitted light. Our bracket starts at pixel transfer and ends at the first global light pulse.

90 Hz means 11.1 ms between refreshes. It does not specify the total delay from motion or interaction to light.

Photon-to-photon is a different measurement for camera passthrough: light reaches a camera → the corresponding image emits light from the display. Camera exposure, readout, and processing add delay; they are not simulated here.

Pipeline adapted conceptually from Hoffman & Lee (2019). Passthrough terminology: Antmicro.

Try itSelect a display-refresh cell (R) to trace the scene frame (F) it uses. Increase Render time past one refresh interval: the display keeps refreshing, but repeats scene frames. Pause and scrub the timeline to inspect each operation.

Image preparation
Display

Time for LCD pixels to reach new transmission levels before the backlight flashes.

F = rendered scene frame · R = display refresh · Same color follows the same frame · Short colored strip = light on; the rest of the refresh is dark · Dotted vertical lines = refresh boundaries

A scene frame must be ready before reprojection/loading starts; finishing just before the light pulse can be too late for that refresh.

Latency measurements

Illustrative steady-state schedule · global light pulses

Timing assumptions

The fixed window runs from 0 to 120 ms. Frame IDs name rendered scenes; refresh IDs name display presentations. The ready row begins when rendering finishes, but a presentation can only use a frame ready before its reprojection/loading deadline. “Earlier” marks frames from before this window. Selecting a refresh highlights its operations, and the dashed path links them. All durations are chosen teaching values. Rendering starts every whole number of refresh intervals needed to finish a frame; the display reuses the latest ready scene frame. Transfer and settling are serialized here; their controls are limited so loading, settling, and the light pulse fit within one refresh. An early pose and controller input are sampled at render start; a late pose is queried at the start of each reprojection. These are ideal instantaneous sampling events, not sensor acquisition durations. Emission lasts 20% of a refresh interval. The bracket ends at the start of global emission; rolling emission would make latency depend on the row. The OLED example uses a chosen 0.1 ms pixel response instead of the LCD settling stage; neither value is a hardware benchmark. No camera, sensor delay, pose prediction, queue, or asynchronous rendering jitter is modeled.

13 · XR reprojection

Reprojection adjusts an existing image

Explanation

The scene is stationary in the world. As the head turns, its image must shift across the headset display. A frame based on an old head pose puts it in the wrong place.

Reprojection reuses the rendered pixels and remaps their positions using a newer head measurement. For head rotation, this can avoid recalculating geometry, lighting, and shadows.

It still takes time. Here, the corrected pose is sampled 1 ms before the latest refresh—a chosen teaching value, not a hardware benchmark. The source frame also has a configurable render delay.

The three rows compare the continuous target, the old rendered view, and the reprojected view. Reprojection helps head-motion stability but cannot perfectly reveal unseen content or update independently moving objects.

Try itIncrease Render delay. Compare the old and corrected views. The corrected row still updates at the display refresh rate.
Continuous referenceDisplayed image

This models retinal displacement, not the blur you should expect from the slowed playback.

One cell = one refresh · F = source frame · Same color + F number = same frame · Colored band: light on · Pale: light off
Details
Slowed timing schematic · not a personal flicker-fusion test
14 · Check your understanding

Does 120 Hz automatically mean clearer motion?

Explanation

A moving object can be sharp but jumpy, smooth but smeared, or flickering. Describe the visible problem first, then inspect its timing.

Try itHold Source frames at 30 fps and compare 90 / 120 Hz. Then match source fps to refresh rate. Finally, compare equal duty cycles versus equal illumination durations.
“My 120 Hz headset automatically has clearer motion than a 90 Hz headset.”

Continuous referenceDisplayed image

This models retinal displacement, not the blur you should expect from the slowed playback.

One cell = one refresh · F = source frame · Same color + F number = same frame · Colored band: light on · Pale: light off
Details
Slowed timing schematic · not a personal flicker-fusion test