Echo
Samples upstream at multiple time offsets and blends them into trailing copies — a classic echo effect.
Category: Time Menu path: Time > Echo
Ports
| Port | Type | Direction | Description |
|---|---|---|---|
in | imageRgba16f | input | Upstream animated content. |
out | imageRgba16f | output | Weighted blend of upstream evaluated at N offset frames. |
Parameters
| Param | Type | Default | Description |
|---|---|---|---|
samples | scalar | 5 | Number of echoes including the current frame. Clamped to 1–16. |
timeStep | scalar | 4 | Frames between echoes. Positive = trailing (older content lingers). Negative = leading (future content shows early). |
decay | scalar | 0.7 | Geometric falloff per echo: echo i contributes decay^i. 1.0 = all echoes equal weight. 0.0 = only the current frame. |
Expose Channels
| Port | Type | Overrides |
|---|---|---|
samples_in | scalar | samples |
timeStep_in | scalar | timeStep |
decay_in | scalar | decay |
How It Works
For each echo i in 0..samples:
- Compute
t = comp_frame - i * timeStep. - Re-evaluate the upstream subgraph at
t(using the same primitive asTimeShift). - Accumulate via the engine's weighted-blend pass with weight
decay^i(running normalization, identical to motion-blur accumulation).
The result is a Gaussian-like trail of past (or future) versions of the content overlaid on the current one. Performance scales linearly with samples — each echo is a full upstream re-eval, just like motion blur.
Usage Examples
Classic motion echo
Animated character → Echo(samples=5, timeStep=4, decay=0.7). Trailing ghost copies at 4-frame intervals.
Subtle 2-tap shadow
Echo(samples=2, timeStep=2, decay=0.4). Just one ghost copy two frames behind, at 40% strength. Adds visual weight to fast motion without obvious trails.
Aggressive long trail
Echo(samples=16, timeStep=2, decay=0.9). 16 closely-spaced echoes with slow falloff — content leaves a long, smooth tail.
Future echo (anticipation)
Echo(samples=4, timeStep=-3, decay=0.6). Negative timeStep shows where the content will be in the next 3, 6, 9, 12 frames. Anticipation effect — content arrives before the live frame.
Strobe / trail combo
Echo upstream of PosterizeTime(step=4). Echo trails on stop-motion content. Both are time effects and compose cleanly.
Tips
- Performance.
samples=5is roughly the cost of motion blur with 5 sub-frames. For chains with simulations or video, drop aFileCachebetween the source and Echo — the editor surfaces a "SLOW" chip when this would help. - Backward sims. Stateful nodes (
PointAdvect,PointTrail) cache per-frame state. Echo looking at past frames hits that cache cleanly. Looking at future frames (timeStep < 0) requires the sim to have advanced — works during normal forward playback because past forward iterations cached the future. - Decay vs samples. For a long subtle trail, raise
samplesanddecaytogether. For a punchy double-image effect, lowsamples(2-3) with lowdecay(0.3-0.5). - Equal weighting.
decay=1.0produces a uniform-weight average across all echoes — good for a "long-exposure" feel.
Related Nodes
- Time Shift — single-offset re-eval (Echo is N TimeShifts blended).
- Freeze Frame — pin to one frame.
- Loop — modulo-cycle.
- Posterize Time — discrete-step playback. Combines well with Echo.
- FileCache — bake upstream to disk; essential for fast Echo on heavy chains.