diff options
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/SEQUENCE.md | 40 |
1 files changed, 11 insertions, 29 deletions
diff --git a/doc/SEQUENCE.md b/doc/SEQUENCE.md index 7055271..202bf09 100644 --- a/doc/SEQUENCE.md +++ b/doc/SEQUENCE.md @@ -1,6 +1,6 @@ # Sequence: DAG-based Effect Routing -**Status:** ✅ Operational +**Status:** Operational Explicit node system with DAG effect routing. @@ -9,9 +9,6 @@ Explicit node system with DAG effect routing. ```bash # Compile timeline python3 tools/seq_compiler.py workspaces/main/timeline.seq --output src/generated/timeline.cc - -# Flatten mode (future: inline effects, no vtables) -python3 tools/seq_compiler.py timeline.seq --output timeline.cc --flatten ``` ## Timeline Syntax @@ -41,6 +38,8 @@ SEQUENCE <start_time> <priority> ["name"] **Reserved nodes**: `source` (input), `sink` (output) +**Effect times**: Absolute seconds. `seq_compiler` adds the sequence start offset automatically. + ### Examples **Simple chain:** @@ -133,9 +132,9 @@ class MyEffect : public Effect { WGPURenderPipeline pipeline_; UniformBuffer<UniformsSequenceParams> uniforms_; - MyEffect(const GpuContext& ctx, const std::vector<std::string>& inputs, const std::vector<std::string>& outputs); - const std::vector<std::string>& outputs) - : Effect(ctx, inputs, outputs) { + MyEffect(const GpuContext& ctx, const std::vector<std::string>& inputs, + const std::vector<std::string>& outputs, float start, float end) + : Effect(ctx, inputs, outputs, start, end) { uniforms_.init(ctx_.device); pipeline_ = create_post_process_pipeline(ctx_.device, WGPUTextureFormat_RGBA8Unorm, @@ -184,38 +183,21 @@ params.aspect_ratio; // width/height ## Status & Limitations -**Implemented** ✅: +**Implemented:** - DAG validation, topological sort, ping-pong optimization - Multi-input/multi-output effects - Node aliasing (compile-time optimization) -- 7 effects ported (Passthrough, Placeholder, GaussianBlur, Heptagon, Particles, RotatingCube, Hybrid3D) +- 12 effects: Passthrough, Placeholder, GaussianBlur, Heptagon, Particles, RotatingCube, Hybrid3D, Flash, PeakMeter, Scene1, Scene2, Scratch -**Missing/Future** ❌: -- Flatten mode (--flatten generates same code as dev mode) +**Missing/Future:** +- Flatten mode (`--flatten` generates same code as dev mode) - BPM handling (parsed but ignored) - GetDemoDuration() calculation (hardcoded 40.0f) -- Sequence-relative time (uses global time) - Asset validation (not checked against AssetId enum) - Node type compatibility checking -**TODO**: -- Port remaining effects (10+ effects, CNN effects) -- Implement flatten mode (inline effects, direct members) -- ✅ ~~Update HTML timeline editor for graph visualization~~ (COMPLETED: 2026-02-17) - -## Migration Notes - -**Key Features**: -- V1: Implicit framebuffer ping-pong (framebuffer_a_ ↔ framebuffer_b_) -- Explicit node declarations with routing - -**Breaking Changes**: -- Effect base class standardized -- Constructor signature: `(GpuContext, inputs[], outputs[])` -- Render signature: Added `NodeRegistry& nodes` parameter -- No `is_post_process()` method (routing makes it explicit) +## See Also -**See Also**: - `doc/EFFECT_WORKFLOW.md` - Step-by-step effect creation - `tools/seq_compiler.py` - Compiler implementation - `workspaces/main/timeline.seq` - Example timeline |
