summaryrefslogtreecommitdiff
path: root/doc/SEQUENCE.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/SEQUENCE.md')
-rw-r--r--doc/SEQUENCE.md40
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