Add Echo tunnel, a video effect that flies through Feedback's nested echoes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Si
2026-09-26 20:32:49 +02:00
co-authored by Claude Opus 5.5
parent 8537a3cf0a
commit 370d3e550e
6 changed files with 249 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
#pragma once
#include "effects/video_effect.hpp"
namespace effector {
// The feedback effect in motion: the picture nested inside itself, each copy
// smaller, turned and drifted further than the one around it, and the whole
// stack flying inwards (or outwards) without end.
//
// A copy sits at a depth, and its size, turn and drift follow from that depth
// alone. Every frame moves each copy on by part of one step, so after a whole
// cycle each copy lies exactly where its neighbour started: a new one fades
// in at the far end while the nearest fades out into the picture itself, and
// the clip loops without a jump.
class TunnelEffect : public VideoEffect {
public:
std::string name() const override { return "tunnel"; }
std::string title() const override { return "Echo tunnel"; }
std::string description() const override {
return "Nests the picture inside itself, as Feedback does, and flies through the echoes "
"without end.";
}
const std::vector<ParamSpec>& params() const override;
protected:
Image animate(Image input, const ParamValues& values, const Moment& at) const override;
};
} // namespace effector