// Three-point light rig on the 20s timeline. Bound in demo.rs to proxy entities (dir/color) and // parameters (intensity/ibl); light_rig_system copies them into RenderStateComponent. // // Shot boundaries: Setup=0.0, ShotB=2.0, ShotA=3.0, Build=3.5, Crew1=4.5, Crew2=7.0, Silence=9.5, // Drop=10.5, Pulse=11.5/12.5/13.5, Mid=14.0, Title=14.5, Out=19.0. // // Directions point light -> surface. Colors are RGB; intensity is a separate F32 track. ( duration: 20.000, looping: true, tracks: [ ( id: "bg_color", kind: Vec3, keyframes: [ (t: 0.00, v: (0.003, 0.004, 0.0175), e: Step), // Setup: navy void (t: 0.75, v: (0.003, 0.004, 0.0175), e: Step), // Setup: flicker (t: 0.90, v: (0.0, 0.0, 0.0), e: Step), // Setup: flicker (t: 0.95, v: (0.003, 0.004, 0.0175), e: Step), // Setup: flicker (t: 1.10, v: (0.0015, 0.002, 0.00875), e: Step), // Setup: flicker (t: 1.15, v: (0.003, 0.004, 0.0175), e: Step), // Setup: flicker (t: 1.30, v: (0.0, 0.0, 0.0), e: Step), // Setup: flicker (t: 1.35, v: (0.003, 0.004, 0.0175), e: Step), // Setup: flicker (t: 1.50, v: (0.0015, 0.002, 0.00875), e: Step), // Setup: flicker (t: 1.55, v: (0.003, 0.004, 0.0175), e: Step), // Setup: flicker (t: 1.70, v: (0.0, 0.0, 0.0), e: Step), // Setup: flicker (t: 1.75, v: (0.003, 0.004, 0.0175), e: Step), // Setup: flicker (t: 1.90, v: (0.0015, 0.002, 0.00875), e: Step), // Setup: flicker (t: 1.95, v: (0.003, 0.004, 0.0175), e: Step), // Setup: flicker (t: 2.00, v: (0.06, 0.0, 0.0), e: Step), // shotA: navy void (t: 2.15, v: (0.00, 0.0, 0.0), e: Step), // shotA: navy void (t: 2.20, v: (0.00, 0.0, 0.06), e: Step), // shotA: navy void (t: 2.35, v: (0.00, 0.0, 0.03), e: Step), // shotA: navy void (t: 2.40, v: (0.00, 0.0, 0.06), e: Step), // shotA: navy void (t: 3.00, v: (0.003, 0.004, 0.0175), e: Step), // shotA: navy void (t: 3.50, v: (0.03, 0.04, 0.19), e: Step), // Build: shot start colour, kept (t: 3.65, v: (0.00, 0.0, 0.0), e: Step), // Build: ShotB flicker (t: 3.70, v: (0.00, 0.0, 0.06), e: Step), // Build: ShotB flicker (t: 3.85, v: (0.00, 0.0, 0.03), e: Step), // Build: ShotB flicker (t: 3.90, v: (0.03, 0.04, 0.19), e: Step), // Build: ShotB flicker (t: 4.50, v: (0.0, 0.0, 0.0), e: Step), // Crew1 = ShotA (t: 7.00, v: (0.03, 0.04, 0.2), e: Step), // Build: shot start colour, kept (t: 9.50, v: (0.02, 0.03, 0.1), e: Step), // Build: shot start colour, kept (t: 12.50, v: (0.03, 0.04, 0.2), e: Step), // Build: shot start colour, kept (t: 14.00, v: (0.003, 0.004, 0.0175), e: Step), (t: 20.00, v: (0.003, 0.004, 0.0175), e: Step), ], ), ( id: "ibl_intensity", kind: F32, keyframes: [ (t: 0.000, v: 0.0, e: Step), // Setup (t: 0.750, v: 0.0, e: Step), // Setup (t: 1.990, v: 0.5, e: Smooth), // Setup (t: 2.000, v: 0.0, e: Step), // ShotB (t: 3.000, v: 0.2, e: Step), // ShotA (t: 3.500, v: 0.0, e: Step), // Build (t: 4.500, v: 0.0, e: Step), // Crew1 = ShotA (t: 7.000, v: 0.5, e: Step), // Crew2 — Build framing (t: 9.500, v: 0.5, e: Step), // Silence — ShotA (t: 12.500, v: 1.0, e: Step), // Silence — ShotA (t: 20.000, v: 1.0, e: Step), ], ), ( // Key — dominant warm front-right. id: "light0_dir", kind: Vec3, keyframes: [ (t: 0.000, v: (0.78, -0.40, 0.45), e: Smooth), (t: 2.000, v: (-0.78, 0.80, 0.45), e: Smooth), (t: 2.001, v: (0.18, -0.5, 0.3), e: Step), (t: 2.201, v: (0.18, -0.5, -0.3), e: Step), (t: 2.350, v: (-0.6, -1.0, -0.2), e: Step), (t: 2.420, v: (0.18, -0.5, -0.3), e: Step), (t: 3.000, v: (0.78, -0.40, 0.45), e: Step), (t: 3.501, v: (0.18, -0.5, 0.3), e: Step), // Build (t: 3.701, v: (0.18, -0.5, -0.3), e: Step), // Build (t: 3.850, v: (-0.6, -1.0, -0.2), e: Step), // Build (t: 3.920, v: (0.18, -0.5, -0.3), e: Step), // Build (t: 4.500, v: (0.0, -1.0, -0.0), e: Step), // Crew1 (t: 4.650, v: (0.0, -1.0, -0.0), e: Step), // Crew1 (t: 4.700, v: (0.0, -1.0, -0.3), e: Smooth), // sync with cross -> disc swap (t: 4.730, v: (0.0, -1.0, -0.3), e: Step), // sync with cross -> disc swap (t: 20.000, v: (0.78, -0.40, 0.45), e: Step), ], ), ( id: "light0_color", kind: Vec3, keyframes: [ (t: 0.000, v: (1.00, 0.97, 0.92), e: Step), (t: 2.000, v: (5.0, 0.0, 0.0), e: Step), // ShotB (t: 2.200, v: (0.0, 0.0, 1.0), e: Step), // ShotB (t: 2.350, v: (0.2, 0.2, 0.5), e: Step), // ShotB (t: 2.400, v: (0.0, 0.0, 1.0), e: Step), // ShotB (t: 3.000, v: (1.00, 0.97, 0.92), e: Step), (t: 3.500, v: (5.0, 0.0, 0.0), e: Step), // Build (t: 3.700, v: (0.0, 0.0, 1.0), e: Step), // Build (t: 3.850, v: (0.2, 0.2, 0.5), e: Step), // Build (t: 3.900, v: (0.0, 0.0, 1.0), e: Step), // Build (t: 4.500, v: (3.00, 0.0, 0.0), e: Step), // Crew1 (t: 20.000, v: (1.00, 0.97, 0.92), e: Step), ], ), ( id: "light0_intensity", kind: F32, keyframes: [ (t: 0.000, v: 1.00, e: Step), // Setup: no red field — normal key (t: 0.750, v: 1.00, e: Step), // Setup: no red field — normal key (t: 1.990, v: 5.00, e: Smooth), // Setup: no red field — normal key (t: 2.000, v: 10.00, e: Step), // ShotB (t: 2.150, v: 0.00, e: Step), // ShotB (t: 2.200, v: 10.00, e: Step), // ShotB (t: 2.350, v: 5.00, e: Step), // ShotB (t: 2.400, v: 10.00, e: Step), // ShotB (t: 3.000, v: 2.20, e: Step), // ShotA: slow flicker on its own grid — light1 (t: 3.170, v: 0.80, e: Step), // switches off-beat (t: 3.370, v: 1.20, e: Step), // settling into the Build cut (t: 3.500, v: 1.00, e: Step), // Build (t: 3.650, v: 0.00, e: Step), // Build (t: 3.700, v: 10.00, e: Step), // Build (t: 3.850, v: 0.10, e: Step), // Build (t: 3.900, v: 0.20, e: Step), // Build (t: 4.500, v: 1.00, e: Step), // Crew1 = ShotA (t: 7.000, v: 0.10, e: Step), // Crew2 — Build framing (t: 9.500, v: 1.0, e: Step), // Silence — ShotA (t: 13.200, v: 1.0, e: Step), // Silence — ShotA (t: 20.000, v: 0.15, e: Step), ], ), ( // Fill — dim cool from the left. id: "light1_dir", kind: Vec3, keyframes: [ (t: 0.000, v: (-0.45, -0.30, -0.84), e: Step), // Setup: back rim (t: 2.000, v: (-0.10, -0.5, 0.40), e: Step), (t: 2.200, v: ( 0.90, -0.2, 0.40), e: Step), (t: 3.000, v: (-0.80, -0.42, 0.40), e: Step), (t: 3.500, v: (-0.10, -0.5, 0.40), e: Step), // Build (t: 3.700, v: ( 0.90, -0.2, 0.40), e: Step), // Build (t: 20.000, v: (-0.80, -0.42, 0.40), e: Step), ], ), ( id: "light1_color", kind: Vec3, keyframes: [ (t: 0.000, v: (0.80, 0.90, 1.00), e: Step), // Setup: back rim (t: 2.000, v: (0.45, 0.55, 0.80), e: Step), // ShotB: back to cool fill (t: 3.500, v: (0.45, 0.55, 0.80), e: Step), // Build (t: 4.500, v: (0.45, 0.55, 0.80), e: Step), // Crew1 = ShotA (t: 7.000, v: (0.45, 0.55, 0.80), e: Step), // Crew2 — Build framing (t: 9.500, v: (0.90, 0.12, 0.08), e: Step), // Silence — ShotA (t: 20.000, v: (0.90, 0.12, 0.08), e: Step), ], ), ( id: "light1_intensity", kind: F32, keyframes: [ (t: 0.000, v: 0.35, e: Step), // Setup: back rim (t: 0.750, v: 0.35, e: Step), // Setup: back rim (t: 1.990, v: 1.20, e: Smooth), // Setup: back rim, ramps into the cut (t: 2.000, v: 0.30, e: Step), // ShotB (t: 2.150, v: 0.50, e: Step), // ShotB (t: 2.200, v: 4.00, e: Step), // ShotB (t: 2.350, v: 0.00, e: Step), // ShotB (t: 2.400, v: 4.00, e: Step), // ShotB (t: 3.000, v: 0.80, e: Step), // ShotA: same rate as light0, shifted ~90 ms so the (t: 3.090, v: 2.00, e: Step), // two never switch on the same frame (t: 3.265, v: 1.00, e: Step), (t: 3.460, v: 1.40, e: Step), (t: 3.500, v: 0.10, e: Step), // Build (t: 3.650, v: 0.20, e: Step), // Build (t: 3.700, v: 1.00, e: Step), // Build (t: 3.850, v: 0.00, e: Step), // Build (t: 3.900, v: 0.00, e: Step), // Build (t: 4.500, v: 1.00, e: Step), // Crew1 = ShotA (t: 5.000, v: 0.00, e: Smooth), // fill fades out 0.06s after the swap (t: 7.000, v: 0.20, e: Step), // Crew2 — Build framing (t: 9.500, v: 0.52, e: Step), // Silence — ShotA (t: 13.200, v: 2.00, e: Step), // Silence — ShotA (t: 20.000, v: 0.12, e: Step), ], ), ( // Rim — cool back-light. id: "light2_dir", kind: Vec3, keyframes: [ (t: 0.000, v: (0.00, -0.55, -0.83), e: Step), (t: 2.000, v: (0.10, -0.25, -0.3), e: Step), (t: 2.150, v: (0.00, -0.55, -0.83), e: Step), (t: 2.350, v: (-0.90, -1.0, -0.4), e: Step), (t: 3.000, v: (-0.45, -0.30, -0.84), e: Step), // ShotA: back rim (t: 3.500, v: (0.10, -0.25, -0.3), e: Step), // Build (t: 3.650, v: (0.00, -0.55, -0.83), e: Step), // Build (t: 3.850, v: (-0.90, -1.0, -0.4), e: Step), // Build (t: 20.000, v: (0.00, -0.55, -0.83), e: Step), ], ), ( id: "light2_color", kind: Vec3, keyframes: [ (t: 0.000, v: (0.80, 0.90, 1.00), e: Step), // Setup: cool rim (t: 2.000, v: (0.80, 0.90, 1.00), e: Step), // ShotB: back to the cool rim (t: 3.000, v: (0.80, 0.90, 1.00), e: Step), // ShotA: back rim (t: 3.500, v: (0.80, 0.90, 1.00), e: Step), // Build (t: 4.500, v: (0.80, 0.90, 1.00), e: Step), // Crew1 = ShotA (t: 7.000, v: (0.80, 0.90, 1.00), e: Step), // Crew2 — Build framing (t: 9.500, v: (1.00, 0.10, 0.05), e: Step), // Silence — ShotA (t: 20.000, v: (1.00, 0.10, 0.05), e: Step), ], ), ( id: "light2_intensity", kind: F32, keyframes: [ (t: 0.000, v: 0.00, e: Step), // Setup: cool rim, dim (t: 0.750, v: 0.00, e: Step), // Setup: cool rim, dim (t: 1.990, v: 0.80, e: Step), // ShotB (t: 2.000, v: 2.00, e: Step), // ShotB (t: 2.150, v: 0.50, e: Step), // ShotB (t: 2.200, v: 1.50, e: Step), // ShotB (t: 2.350, v: 1.0, e: Step), // ShotB (t: 2.400, v: 1.50, e: Step), // ShotB (t: 3.000, v: 0.35, e: Step), // ShotA: back rim (t: 3.490, v: 1.20, e: Smooth), // ShotA: back rim, ramps into the cut (t: 3.500, v: 1.00, e: Step), // Build (t: 3.650, v: 0.20, e: Step), // Build (t: 3.700, v: 1.00, e: Step), // Build (t: 3.850, v: 0.20, e: Step), // Build (t: 3.900, v: 1.0, e: Step), // Build (t: 4.500, v: 0.00, e: Step), // Crew1 = ShotA (t: 7.000, v: 0.20, e: Step), // Crew2 — Build framing (t: 9.500, v: 4.00, e: Step), // Silence — ShotA (t: 13.200, v: 1.00, e: Step), // Silence — ShotA (t: 20.000, v: 2.00, e: Step), ], ), ], cues: [], )