mirror of
https://github.com/storytold/effectcraft.git
synced 2026-11-07 12:13:22 +00:00
* Echo: swap Composite In Back and Composite In Front (#3124) After Effects 2026 renders of the importer sample (opaque test card with a moving square, one echo at -1/30 s) show Composite In Front keeping the layer on top (the output equals the current frame) and Composite In Back putting the echo over the layer. EffectCraft had the two the other way round, which made ~0.5 % of the pixels differ at the moving edge. The CPU and GPU (fxn_echo) arms are swapped together. A regression test rebuilds row 130 of the test card and checks Add, Maximum, Minimum, Screen and both Composite operators against the measured After Effects row. Blend is left unchanged: the sample (one echo, intensity 1, decay 1) cannot tell its normalisation apart. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Echo: Blend sums the weighted frames like Add (#3124) New After Effects 2026 renders (our own 1110-extra sample, 16-bit PNGs, opaque test card with a moving square) show that Blend does not normalise: - 3 echoes at intensity 1 and decay 1 give four times the layer. - 2 echoes at intensity 0.5 and decay 0.5 give alpha 0.875 (0.5 + 0.25 + 0.125). EffectCraft divided by the number of frames. The division is gone on the CPU and in fxn_echo_fin on the GPU. The same sample pins Composite In Back with three echoes: each older echo goes over what is there with its weight as opacity, so the oldest is on top, as the branch already does. Composite In Front with three echoes equals the current frame. A regression test checks four measured 16-bit rows within 4 codes (24 on square-edge pixels): Blend 3/1/1, Blend 2/0.5/0.5 with alpha, and both composite modes at 3 echoes, -0.08 s, decay 0.5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Echo: doc comments on the CPU and GPU entry points Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: FredApps <153173854+FredApps@users.noreply.github.com>