The last note owned the display operator: one RGBA32F still, a named curve, then sRGB OETF. Time was out of scope there — TAA, temporal accumulation, firefly-suppression as TM. This note owns reuse across frames. History is linear Rec.709. Neutral still runs after resolve, not on the history buffer.
TAA is a bet that last frame’s color is still this pixel. The ghost is the cost of the noise reduction.
It is not motion blur. A shutter smears whatever crossed the pixel while it was open. History reuse paints a surface that has already left.

The loft still the IBL and TM notes already earned, after a camera truck in with look-at locked. Naive EMA, current-frame weight, clamp off, jitter . The bottle and the sideboard leave a comet on the newly revealed window. HUD: Khronos PBR Neutral e=1.05, camera truck, photo-only - no metric. Do not hang a residual RMS on this photograph.

Pin this. Identical loft . Only history policy differs. Left no temporal. Middle naive EMA — ghost loud. Right EMA + RGB minmax clamp — comet cut, residual the AABB still accepted. Caption on the plate: identical current loft frame St — only history policy differs. Photo only.
Hero, Mesa 25.0.7 llvmpipe, linear Rec.709 history, Khronos PBR Neutral after resolve: science field , loft . Ghost ROI residual RMS, science: naive 0.26056 vs clamp 0.00000 (). Loft: naive 0.20216 vs clamp 0.02162 (). Stick streak vs (naive, px/frame): 455 / 338 / 160 / 45 px at . Loft px/frame. Mix . Clamp RGB minmax. Assertions 42 pass / 0 fail.
What you are seeing
Two scenes. One mix. Display is inherited: resolve in linear, then Khronos PBR Neutral, then IEC 61966-2-1 sRGB OETF. The curve still does not create lighting. TAA still does not create samples that were never shaded.
Presentation hook. Camera truck, naive EMA, , clamp off, jitter . Full frame plus inset crop of the bottle/sideboard/window edge. The truck is faster than a product-still dolly on purpose: is set so the smear survives a full-frame glance. Photo only.
Teaching pin (loft). Same current frame three times. Left is . Middle is history without a neighborhood bound. Right is the named control.

Loud loft crop. Left naive beauty of the ghost edge. Right linear-luma heat. Mullion stripes, sideboard top, bottle rim, brass limb. If the hero looked like motion blur from across the room, this crop is the proof it is leftover history.

Theorem plate. Constructed amber field, dark pillar, thin cyan stick. Same mix, same , jitter , Neutral . Static camera. Pillar and stick translate in ; the trail is . The smear is a textbook exponential tail, not a product still.

Science teaching pin. Identical : no temporal | naive EMA | EMA + RGB minmax. Uniform field, so the policy is the only variable you can see.

Science heat. Zoom of the revealed wall. Beauty | heat, ROI box drawn. Caption on the plate: clamp is not a visibility solve. RMS is the CSV, not the JPEG.
Two facts, never mixed:
- Beauty plates (loft hero, loft 3-up, theorem, science 3-up, stick, ladder, speed ladder, accumulate bet) are GL-rendered current + resolve, Neutral after resolve, sRGB OETF. HUD
photo-onlymeans do not invent a residual or a streak length from the JPEG. - Instruments (loft crop heat, science disocclusion heat, clamp residual, fingerprint plot) are the float buffer: residual RMS, streak px, velocity, history weight. Quote the CSV.
What TAA is (and is not: motion blur)
Motion blur is a shutter integral. A pixel that saw pillar then wall while the shutter was open is a blend of those radiances along exposure time. The smear is physical: the path of a surface, or of whatever crossed the pixel, during .
TAA is not a shutter. There is no exposure interval in this resolve. The previous resolved frame is fetched at a reprojected location and mixed as if that color still belonged here. After a disocclusion, that color belongs to a surface that is gone. Mixing it in is a ghost, not a motion-blur kernel.
Jitter on every ghost hero. You cannot call those plates temporal anti-aliasing. They are temporal accumulate: exponential lag of a history sample. The only jitter plate is the accumulate bet — static camera, Halton , current vs EMA. That is the bet (alias ). The loft truck and the amber theorem are the cost.
is current-frame weight . High trusts now. Low keeps history and ghosts. Do not invert it.
Why: EMA, reprojection, minmax clamp
Working space is linear Rec.709. History is RGBA32F. Blend in linear. Display is a named step after resolve, not baked into .
Exponential accumulate
After reprojection and after clamp / reject:
- — current shaded sample, linear RGB.
- — history after clamp / reject (or raw when clamp is off).
- Default hero: .
Locked mix: . Asserted: , , .
Steady-state tail (the plot, not a slogan)
A unit step that left the pixel decays as after frames. Visible-tail threshold :
in px/frame. is streak length. Overlay this analytic curve on measured tail px. That is the fingerprint.
Reprojection (honest path)
History fetch is bilinear color at , nearest . Not Catmull-Rom. Not 9-tap sharpen.
Science field. Static camera. Wall and floor reproject by the camera matrix (identity). Moving meshes use previous world position. One rigid translation.
Loft still. Static geometry. Camera trucks in , look-at locked at the IBL still point. Reprojection is
is UV displacement from known matrices, not a hardware MV unit and not optical flow. Sky uses a 400-unit far proxy. View-dependent brass highlights are not reprojected (world-pos only); extra highlight smear is honest leftover, not a production MV claim.
Neighborhood clamp (named control)
Lottes / Karis minmax, RGB, current neighborhood :
This is the control the 3-up names. Say clamp. Do not write “variance clip” on a minmax plate. Do not write Playdead clipToAABB / YCoCg as the default stack. Those exist; they are not this plate.
Clamp bounds history to the current neighborhood. It does not solve visibility. On a disocclusion edge the AABB spans occluder and newly revealed surface, so stale color is still in range.
Reject (cousin bit, off on heroes)
- Off-screen discarded, output .
- Depth: , world-.
Depth-reject is off on ghost heroes so the smear stays loud. Off-screen still drops history.
Display (inherited, not re-derived)
TM is Khronos PBR Neutral. Science field . Loft (IBL / TM continuity). No clip / Reinhard / ACES ladder in this note. GL_FRAMEBUFFER_SRGB is off; encode is CPU. Measurement is the float buffer, not the PNG.
Unique artifact: streak vs

This is the thing this note exists to draw. Left: thin cyan stick under naive EMA at — a comet of coverage that already left. Right: measured streak px vs plus the analytic curve. HUD: px/frame, . Caption: coverage + history, not wrong MV.
Lag of a 1–2 px feature is coverage + history, not “the velocity was wrong.” The stick AABB is px from perspective lean over the full height; a mid-wall scanline is a 2–3 px rod. Subpixel coverage is binary (no MSAA). A sample that does not survive still lives in .
measured tail 455 px clips at finite (analytic 671, unbounded). tracks the curve: measured 338 vs analytic 326.6. Quote the CSV, not the JPEG.
Quote the CSV. Do not quote the beauty photographs as meters.
Float buffer, Mesa llvmpipe. Residual RMS is RGB vs current in a painted ghost ROI (static pixels only):
Science ROI . Loft ROI . Streak uses on a mid-stick scanline. Off-screen still drops history; depth-fail is not applied on ghost heroes.
Science field, frame 51, px/frame, Neutral :
| tag | clamp | residual RMS | streak px | |
|---|---|---|---|---|
| hero naive | 0.10 | off | 0.26056 | 338 |
| hero clamp | 0.10 | on | 0.00000 | 0 |
| 0.05 | off | 0.36297 | 455 | |
| 0.10 | off | 0.26056 | 338 | |
| 0.20 | off | 0.15594 | 160 | |
| 0.50 | off | 0.04780 | 45 | |
| speed | 0.10 | off | 0.10091 | 82 |
| speed | 0.10 | off | 0.35187 | 499 |
Analytic at : 671.0 / 326.6 / 154.2 / 49.7 for .
Loft still, frame 27, px/frame, Neutral , :
| tag | clamp | residual RMS | |
|---|---|---|---|
| loft naive | off | 0.20216 | 8748 |
| loft clamp | on | 0.02162 | 8748 |
Hero rounding used in the lede: science 0.26056 / 0.00000; loft 0.20216 / 0.02162; streak 455 / 338 / 160 / 45; / . Do not invent a residual or a streak from the loft hero, the loft 3-up, or the amber theorem. Those frames are photo-only.
Science clamp RMS 0.00000 is a uniform-field fact: the painted ROI sits 8 px off the occluder, so the is wall-only. It is not a visibility solve. At a textured loft edge the same rule leaves 0.02162.
Failures / controls
Four knobs. Each earns a plate. Do not turn them all at once on the hero.
History policy (the 3-up)
The loft 3-up and the science 3-up. One current frame, three resolves. Ghost is the history policy, not the current frame. The clamped plate is the named anti-ghost control, not “correct cinematography.” Some alias / lag trade remains where history was boxed.
Clamp on/off

The clamp-residual heat plus the science disocclusion plus the loft crop. On the constructed field, clamp residual in the inset ROI is 0.00000 because is a flat amber wall. On the loft, clamp residual is 0.02162: the spans mullions, oak, glaze, window. Stale color that still sits inside that box survives. Caption to keep: clamp is not a visibility solve.
ladder

Naive, no clamp, same motion. Streak shortens as rises: 455 338 160 45 px. High trusts now and ghosts less; it also keeps less of the accumulate bet. The fingerprint is the same numbers as a plot.
Motion speed

fixed, px/frame, naive vs clamp. Naive streak 82 / 338 / 499 px. Same mix, longer smear. Clamp columns stay tight on the uniform field.
Thin-stick lag

Left: current coverage, a 2–3 px rod. Middle: history comet. Right: clamp eats the comet because the neighborhood is field color. Caption: coverage + history, not wrong MV.
The bet (not the hero)

Static camera, Halton jitter. Current checker is aliased. EMA at is the noise/alias reduction you bought the ghost with. Caption on the plate: this is the bet; the ghost plates are the cost.
Two paths, do not mix the instruments
| path | frames | instrument |
|---|---|---|
| Science photograph | theorem, science 3-up, stick, ladder, speed ladder, accumulate bet | Lambert field on this llvmpipe, CPU history ping-pong, Neutral . HUD photo-only. |
| Science instrument | disocclusion heat, clamp residual, fingerprint | residual heat, streak vs . |
| Loft photograph | hero, loft 3-up | Split-sum loft (IBL tables reused, not re-derived), camera truck, Neutral . HUD photo-only. |
| Loft crop / heat | loud crop | nearest crop of naive beauty + heat. RMS from CSV. |
| Display | every plate | expose Neutral sRGB OETF. Resolve is linear. Operator is inherited. |
The 3-ups are photographs of the control and the source of the teaching. Quote the CSV for RMS and streak. Do not quote the 8-bit panel as 0.26056.
Honesty gaps
- PNG is a selected frame of an offline -frame strip, not a 60 Hz persistence photograph. Science after history init. Loft . No display refresh claim.
- Not motion blur. Shutter smear vs history reuse. Jitter on ghost heroes; Halton only on the accumulate bet.
- is current-frame weight. Mix . Do not invert.
- Clamp is not a visibility solve. Science ROI clamp RMS 0.00000 is a uniform-field inset. Loft clamp RMS 0.02162 is the textured leftover. High-contrast disocclusion still leaks at the silhouette.
- Velocity is camera-matrix (loft, science walls) or rigid previous-pos (science pillar/stick). Not a production MV buffer, not skinned MV, not optical flow. Sky is a 400-unit far proxy. Brass highlights are view-dependent and not reprojected.
- Thin-stick lag is coverage + history, not wrong MV. No MSAA. AABB px; mid-wall rod 2–3 px.
- Depth reject is the cousin bit. world-, off on ghost heroes. Do not swallow the full reprojection / occlusion ticket.
- TAA trades noise/alias against ghost/lag . The clamped plate is the named control, not correct cinematography.
- Low- streak () clips at finite . Analytic overlay is unbounded (671 vs measured 455). Quote the CSV.
- Loft truck is exaggerated for visibility. px/frame so the naive comet survives a full-frame glance. Not a product-still dolly.
- IBL / TM are reused, not proven here. Neutral constants are not re-fit. Contact is planar cosine. Env is procedural loft HDR, not a captured EXR.
- Not DLSS / FSR / XeSS, not Catmull-Rom 9-tap, not YCoCg clipToAABB, not a hardware TAA unit.
- PNG is 8-bit display-referred. Do not FFT or energy-integrate the JPEG. Residual RMS and streak px are linear-buffer meters.
Mesa / llvmpipe — what this run can claim
| item | value |
|---|---|
GL_VERSION |
4.5 (Core Profile) Mesa 25.0.7-2+deb13u1 |
GL_RENDERER |
llvmpipe (LLVM 19.1.7, 256 bits) |
| FBO color | RGBA32F complete, |
GL_FRAMEBUFFER_SRGB |
disabled (Neutral + sRGB OETF on CPU) |
| MSAA | disabled |
| History | CPU ping-pong RGBA32F, bilinear color, nearest |
| Mix | , current-frame weight |
| Clamp | RGB minmax of current |
| Science | , px/frame, Neutral , jitter |
| Loft | , px/frame, Neutral , jitter |
| Depth-reject | 0.25 world-, instrument only, off on heroes |
| Tail |
Can claim: on this OSMesa / llvmpipe build, an offline -frame loop with known rigid-pillar previous-pos (science field) or known camera prev/curr matrices (loft still), EMA with named as current-frame weight, and a RGB minmax clamp, produces these photographs. Residual RMS in the painted ghost ROI and streak length in px move as the CSV says when , , and clamp on/off change.
Cannot claim: a hardware TAA unit, 60 Hz persistence, production motion vectors, that clamp “fixes ghosting,” that this is DLSS-class, or that a PNG of a selected frame is a persistence photograph. Discrete-GPU metrics, occupancy, bandwidth, or “this is how the hardware works.”
Assertions
This run: 42 pass / 0 fail.
| check | result |
|---|---|
| Mix unit: , , | PASS |
| FBO is RGBA32F | PASS |
| Required gallery plates exist and are non-empty | PASS |
| No NaNs in resolve | PASS |
| Science pillar / stick coverage and px/frame | PASS 8.275 |
| Naive ROI RMS clamp and | PASS 0.26056 vs 0.00000 |
| Streak monotone in : | PASS 455 / 338 / 160 / 45 |
| Speed monotone: streak | PASS 499 / 338 / 82 |
| Loft naive RMS clamp RMS and | PASS 0.20216 vs 0.02162 |
| Loft px/frame | PASS 9.971 |
No assert tolerances were loosened for the photoreal plates.
Out of scope
Full production TAA suite as a product bake-off (SMAA+TAA+sharpen, UE/Unity/Godot stacks). DLSS / FSR / XeSS / any learned reconstructor. Full motion-vector generation as the only subject (screen-space velocity buffers, skinned MV, tessellated displacement MV, optical flow). Path-traced temporal denoisers (SVGF, ReSTIR + temporal, OIDN) as hero. Catmull-Rom 9-tap history, YCoCg + clipToAABB + variance as the default stack. Motion-weighted blend as a third hidden policy. Halton / R2 jitter on ghost heroes. Fast specular as a required plate. Toksvig, anisotropic GGX, sRGB-vs-linear texture decode. Tone-mapping bake-off rerun (clip / Reinhard / ACES / Neutral ladders) — Neutral is the inherited display operator. Shadow-map bias. Hardware TAA unit, 60 Hz persistence, display refresh, occupancy, bandwidth. Re-deriving Karis, DFG, or Neutral: cite the live notes.
Album sequence:
- Perspective-correct — what you interpolate
- Z-fighting — how depth is encoded
- Mipmaps — which frequencies survive an isotropic minify
- Anisotropic — which UV ellipse that pixel covers
- Parallax occlusion — fake depth from a height field; the silhouette is still the quad
- Split-sum IBL — environment lighting as a multiply: GGX-prefiltered cube DFG, plus distant
- Tone mapping — scene-referred to display-referred; the curve allocates codes, it does not create lighting
- Temporal accumulate — history is a color that belonged to a different surface
Resolve lock
H = bilinear(history, u_prev) // nearest z
Hhat = clamp ? minmax3x3_rgb(S, H) : H
C = alpha * S + (1 - alpha) * Hhat
PNG = sRGB_OETF( Neutral(e * C) )
Locked: is current-frame weight; hero ; clamp is RGB minmax of ; jitter on ghost heroes. Pin the loft truck as the presentation. Pin the loft 3-up as the teaching. Pin the fingerprint as the unique artifact. Pin the amber field as the theorem. The mix is the caption. Last frame’s color is a bet. The ghost is what you pay when the bet is wrong.