From 6944733a6a2f05c18e7e0b73f847a4c9144801fd Mon Sep 17 00:00:00 2001 From: skal Date: Tue, 10 Feb 2026 12:48:43 +0100 Subject: feat: Add multi-layer CNN support with framebuffer capture and blend control Implements automatic layer chaining and generic framebuffer capture API for multi-layer neural network effects with proper original input preservation. Key changes: - Effect::needs_framebuffer_capture() - generic API for pre-render capture - MainSequence: auto-capture to "captured_frame" auxiliary texture - CNNEffect: multi-layer support via layer_index/total_layers params - seq_compiler: expands "layers=N" to N chained effect instances - Shader: @binding(4) original_input available to all layers - Training: generates layer switches and original input binding - Blend: mix(original, result, blend_amount) uses layer 0 input Timeline syntax: CNNEffect layers=3 blend=0.7 Co-Authored-By: Claude Sonnet 4.5 --- workspaces/main/timeline.seq | 218 ++++++++++++++++++++----------------------- 1 file changed, 99 insertions(+), 119 deletions(-) (limited to 'workspaces/main/timeline.seq') diff --git a/workspaces/main/timeline.seq b/workspaces/main/timeline.seq index 3670825..5947ff8 100644 --- a/workspaces/main/timeline.seq +++ b/workspaces/main/timeline.seq @@ -1,121 +1,101 @@ -# WORKSPACE: main -# ============================================================================ -# DEMO SEQUENCE DEFINITION -# ============================================================================ -# Defines the timeline and layering of visual effects for the demo. -# Compiled by seq_compiler into src/generated/timeline.cc at build time. -# -# DOCUMENTATION: See doc/SEQUENCE.md for complete syntax reference -# -# QUICK REFERENCE: -# SEQUENCE ["optional_name"] [optional_end] -# EFFECT <+|=|-> -# -# Priority modifiers: + (increment), = (same), - (decrement/background) -# Time notation: 0b (beats), 0.0 (seconds) -# Optional name: Displayed in Gantt charts (e.g., "Opening Scene") -# -# VALIDATION & VISUALIZATION: -# ./build/seq_compiler assets/demo.seq # Validate only -# ./build/seq_compiler assets/demo.seq --gantt-html=t.html # HTML Gantt -# -# ============================================================================ - +# Demo Timeline +# Generated by Timeline Editor # BPM 120 -SEQUENCE 0b 0 - EFFECT - FlashCubeEffect .2 3 # Background cube (priority -1 = behind everything) - EFFECT + FlashEffect 0.0 1. color=1.0,0.5,0.5 decay=0.95 # Red-tinted flash - EFFECT + FadeEffect 0.1 1. # Priority 1 - EFFECT + SolarizeEffect 0 4b # Priority 2 (was 3, now contiguous) - EFFECT + VignetteEffect 0 6 radius=0.6 softness=0.1 - -SEQUENCE 2.0 0 - EFFECT + CircleMaskEffect 0.0 4.0 0.50 # Priority 0 mask generator - EFFECT + RotatingCubeEffect 0.0 4.0 # Priority 1 (renders inside circle) - EFFECT + GaussianBlurEffect 1.0 2.0 strength=1.0 - EFFECT + GaussianBlurEffect 3.0 4.0 strength=2.0 - -SEQUENCE 4b 0 - EFFECT - FlashCubeEffect 0.1 3. # Priority -1 - EFFECT + FlashEffect 0.0 0.2 # Priority 0 (was 4, now contiguous) - -SEQUENCE 6b 1 - EFFECT + ParticleSprayEffect 0 4 # Priority 0 (spray particles) - EFFECT + ParticlesEffect 0 4 # Priority 1 - EFFECT = GaussianBlurEffect 0 8 strength=3.0 # Priority 1 (stronger blur) - -SEQUENCE 7b 0 - EFFECT + HeptagonEffect 0.0 .2 # Priority 0 - EFFECT + FadeEffect 0.1 1.0 # Priority 1 (was 5, now contiguous) - -# Post-processing chain (priority 10 = applied after scene rendering) -# Effects are applied in priority order: lower numbers first -SEQUENCE 8b 3 - EFFECT + ThemeModulationEffect 0 4 # Priority 0 - EFFECT = HeptagonEffect 0.0 4.0 # Priority 0 (same layer) - EFFECT + GaussianBlurEffect 0 8 strength=1.5 # Priority 1 (subtle blur) - EFFECT + ChromaAberrationEffect 0 6 offset=0.03 angle=0.785 # Priority 2 (diagonal, stronger) - EFFECT + SolarizeEffect 0 10 # Priority 3 - -SEQUENCE 12b 2 - EFFECT - FlashCubeEffect .2 3 # Priority -1 (background) - EFFECT + HeptagonEffect 0 4 # Priority 0 - EFFECT + ParticleSprayEffect 0 4 # Priority 1 (spray particles) - EFFECT + ParticlesEffect 0 4 # Priority 2 - -SEQUENCE 15b 2 - EFFECT - FlashCubeEffect .2 3 # Priority -1 (background) - EFFECT + FlashEffect 0.0 1 # Priority 0 - -SEQUENCE 16b 10 - EFFECT - FlashCubeEffect .2 3 # Priority -1 (background) - EFFECT + GaussianBlurEffect 0 8 # Priority 0 - EFFECT + FlashEffect 0.0 0.2 # Priority 1 - EFFECT = FlashEffect 1b 0.2 # Priority 1 (same layer) - -SEQUENCE 17b 2 - EFFECT + ThemeModulationEffect 0 4 # Priority 0 - EFFECT + HeptagonEffect 0.2 2.0 # Priority 1 - EFFECT + ParticleSprayEffect 0 4 # Priority 2 (spray particles) - EFFECT = ParticlesEffect 0 4 # Priority 2 (same layer) - EFFECT + Hybrid3DEffect 0 4 # Priority 3 - EFFECT + GaussianBlurEffect 0 8 # Priority 4 - EFFECT + ChromaAberrationEffect 0 6 offset=0.01 angle=1.57 # Priority 5 (vertical, subtle) - -SEQUENCE 24b 1 - EFFECT + ThemeModulationEffect 0 8 # Priority 0 - EFFECT + HeptagonEffect 0.2 2.0 # Priority 1 - EFFECT + ParticleSprayEffect 0 8 # Priority 2 (spray particles - longer duration) - EFFECT + Hybrid3DEffect 0 20 # Priority 3 - EFFECT + GaussianBlurEffect 0 8 # Priority 4 - EFFECT + ChromaAberrationEffect 0 10 # Priority 5 - EFFECT + SolarizeEffect 0 10 # Priority 6 - -SEQUENCE 32b 0 - EFFECT + ThemeModulationEffect 0 4 # Priority 0 - EFFECT + HeptagonEffect 0 16 # Priority 1 - EFFECT + ChromaAberrationEffect 0 16 # Priority 2 - EFFECT + GaussianBlurEffect 0 8 # Priority 3 - -SEQUENCE 48b 0 - EFFECT + ThemeModulationEffect 0 4 # Priority 0 - EFFECT + HeptagonEffect 0.2 2.0 # Priority 1 - EFFECT + GaussianBlurEffect 0 8 # Priority 2 - EFFECT + SolarizeEffect 0 2 # Priority 3 - -SEQUENCE 56b 0 - EFFECT + ThemeModulationEffect 0 8 # Priority 0 - EFFECT = HeptagonEffect 0.2 2.0 # Priority 0 (same layer) - EFFECT + Hybrid3DEffect 0 4 # Priority 1 - EFFECT + ParticleSprayEffect 0 8 # Priority 2 (spray particles) - EFFECT + HeptagonEffect 0 16 # Priority 3 - EFFECT + ChromaAberrationEffect 0 16 # Priority 4 - EFFECT + GaussianBlurEffect 0 8 # Priority 5 - -SEQUENCE 62b 0 - EFFECT + ThemeModulationEffect 0 3 # Priority 0 - EFFECT + VignetteEffect 0 3 radius=0.6 softness=0.3 # New effect - EFFECT + SolarizeEffect 0 3 # Priority 2 -# Demo automatically exits at this time (supports beat notation) -END_DEMO 65b +SEQUENCE 0.00 0 + EFFECT - FlashCubeEffect 0.00 2.44 + EFFECT + FlashEffect 0.00 1.00 color=1.0,0.5,0.5 decay=0.95 + EFFECT + FadeEffect 0.10 1.00 + EFFECT + SolarizeEffect 0.00 2.00 + EFFECT + VignetteEffect 0.00 2.50 radius=0.6 softness=0.1 + +SEQUENCE 2.50 0 "rotating cube" + EFFECT + CircleMaskEffect 0.00 4.00 0.50 + EFFECT + RotatingCubeEffect 0.00 4.00 + EFFECT + GaussianBlurEffect 1.00 2.00 strength=1.0 + EFFECT + GaussianBlurEffect 3.00 4.00 strength=2.0 + +SEQUENCE 5.93 0 + EFFECT - FlashCubeEffect 0.11 1.45 + EFFECT + FlashEffect 0.00 0.20 + +SEQUENCE 6.90 1 "spray" + EFFECT + ParticleSprayEffect 0.00 2.00 + EFFECT + ParticlesEffect 0.00 3.00 + EFFECT = GaussianBlurEffect 0.00 2.00 strength=3.0 + +SEQUENCE 8.50 2 + EFFECT + ThemeModulationEffect 0.00 2.00 + EFFECT + HeptagonEffect 0.20 2.00 + EFFECT + ParticleSprayEffect 0.00 2.00 + EFFECT = ParticlesEffect 0.00 2.00 + EFFECT + Hybrid3DEffect 0.00 2.00 + EFFECT + GaussianBlurEffect 0.00 2.00 + EFFECT + ChromaAberrationEffect 0.00 1.50 offset=0.01 angle=1.57 + +SEQUENCE 10.50 0 + EFFECT + HeptagonEffect 0.00 0.20 + EFFECT + FadeEffect 0.10 1.00 + +SEQUENCE 10.50 0 + EFFECT + Hybrid3DEffect 0.00 5.59 + EFFECT + CNNEffect 0.54 4.97 layers=3 blend=0.2 + +SEQUENCE 16.14 3 + EFFECT + ThemeModulationEffect 0.00 4.00 + EFFECT = HeptagonEffect 0.00 4.00 + EFFECT + GaussianBlurEffect 0.00 5.00 strength=1.5 + EFFECT + ChromaAberrationEffect 0.00 5.00 offset=0.03 angle=0.785 + EFFECT + SolarizeEffect 0.00 5.00 + +SEQUENCE 21.00 2 + EFFECT - FlashCubeEffect 0.20 1.50 + EFFECT + HeptagonEffect 0.00 2.00 + EFFECT + ParticleSprayEffect 0.00 2.00 + EFFECT + ParticlesEffect 0.00 2.00 + +SEQUENCE 22.75 2 + EFFECT - FlashCubeEffect 0.20 1.50 + EFFECT + FlashEffect 0.00 1.00 + +SEQUENCE 23.88 10 + EFFECT - FlashCubeEffect 0.20 1.50 + EFFECT + GaussianBlurEffect 0.00 2.00 + EFFECT + FlashEffect 0.00 0.20 + EFFECT = FlashEffect 0.50 0.20 + +SEQUENCE 25.59 1 + EFFECT + ThemeModulationEffect 0.00 8.00 + EFFECT + HeptagonEffect 0.20 2.00 + EFFECT + ParticleSprayEffect 0.00 8.00 + EFFECT + Hybrid3DEffect 0.00 10.00 + EFFECT + GaussianBlurEffect 0.00 8.00 + EFFECT + ChromaAberrationEffect 0.00 10.00 + EFFECT + SolarizeEffect 0.00 10.00 + +SEQUENCE 35.31 0 + EFFECT + ThemeModulationEffect 0.00 4.00 + EFFECT + HeptagonEffect 0.20 2.00 + EFFECT + GaussianBlurEffect 0.00 8.00 + EFFECT + SolarizeEffect 0.00 2.00 + +SEQUENCE 42.29 0 + EFFECT + ThemeModulationEffect 0.00 6.00 + EFFECT = HeptagonEffect 0.20 2.00 + EFFECT + Hybrid3DEffect 0.00 4.00 + EFFECT + ParticleSprayEffect 0.00 5.50 + EFFECT + HeptagonEffect 0.00 8.00 + EFFECT + ChromaAberrationEffect 0.00 7.50 + EFFECT + GaussianBlurEffect 0.00 8.00 + +SEQUENCE 50.02 0 + EFFECT + ThemeModulationEffect 0.00 4.00 + EFFECT + HeptagonEffect 0.00 9.50 + EFFECT + ChromaAberrationEffect 0.00 9.00 + EFFECT + GaussianBlurEffect 0.00 8.00 + +SEQUENCE 31.00 0 + EFFECT + ThemeModulationEffect 0.00 3.00 + EFFECT + VignetteEffect 0.00 3.00 radius=0.6 softness=0.3 + EFFECT + SolarizeEffect 0.00 3.00 + -- cgit v1.2.3