@@ -419,8 +419,7 @@ static void draw_anim4(float anim_t, Font roboto, Shader *star_sh,
419419 float fade_out = 1.0f - fminf (anim_t / 0.5f , 1.0f );
420420
421421 if (fade_out > 0.0f ) {
422- // draw_anim2(3.0f, roboto, star_sh);
423- draw_anim3 (3.0f , glow_sh , tex , star_sh , roboto );
422+ draw_anim3 (5.5f , glow_sh , tex , star_sh , roboto );
424423 DrawRectangle (0 , 0 , SCREEN_W , SCREEN_H ,
425424 (Color ){BG .r , BG .g , BG .b , (unsigned char )((1.0f - fade_out ) * 255 )});
426425 }
@@ -459,12 +458,12 @@ static void draw_centered2(Font f,
459458}
460459
461460// ─── Haiku + title overlay (called every frame from anim5 onward) ─────────────
462- #define T_NOVA 30.0f
461+ #define T_NOVA 31.5f
463462
464463static void draw_haiku_overlay (float t , Font roboto ) {
465464 float lh = FONT_TITLE + 16 ; // line height
466- draw_centered (roboto , "Every thought is a star" , HAIKU_Y , C_WHITE , fade_in (t , 25.0f , 0.5f ));
467- draw_centered (roboto , "Few form a constellation" , HAIKU_Y + lh , C_WHITE , fade_in (t , 27.0f , 0.5f ));
465+ draw_centered (roboto , "Each thought is a star" , HAIKU_Y , C_WHITE , fade_in (t , 26.5f , 0.5f ));
466+ draw_centered (roboto , "Few form a constellation" , HAIKU_Y + lh , C_WHITE , fade_in (t , 28.5f , 0.5f ));
468467 draw_centered (roboto , "But they shine brightest" , HAIKU_Y + lh * 2 , C_WHITE , fade_in (t , T_NOVA , 0.5f ));
469468 draw_centered2 (roboto , "PufferLib " , C_WHITE , "4.0" , C_CYAN ,
470469 FOOTER_Y , fade_in (t , T_NOVA + 2.0f , 0.5f ));
@@ -586,7 +585,6 @@ static void draw_anim5(float anim_t, float dt, Shader *star_sh) {
586585
587586// ─── Video recording ──────────────────────────────────────────────────────────
588587#define RECORD_FPS 30
589- #define RECORD_SECS 38 // capture this many seconds then exit
590588
591589typedef struct { int pipefd [2 ]; pid_t pid ; } VideoRecorder ;
592590
@@ -653,75 +651,61 @@ int main(void) {
653651 init_anim5 ();
654652
655653 VideoRecorder recorder ;
656- bool recording = OpenVideo (& recorder , "trailer/trailer.mp4" , SCREEN_W , SCREEN_H );
654+ int phase = 0 ;
655+ float phase_time = 0 ;
656+ bool recording = OpenVideo (& recorder , "trailer/v1.mp4" , SCREEN_W , SCREEN_H );
657657 if (!recording ) fprintf (stderr , "Warning: video recording disabled\n" );
658658
659659 while (!WindowShouldClose ()) {
660- float t = GetTime ();
661660 float dt = GetFrameTime ();
662- if (t > RECORD_SECS ) break ;
661+ phase_time += dt ;
662+
663+ if (phase == 0 && phase_time > 10.0f ) {
664+ if (recording ) CloseVideo (& recorder );
665+ phase = 1 ;
666+ phase_time = 0 ;
667+ recording = OpenVideo (& recorder , "trailer/v2.mp4" , SCREEN_W , SCREEN_H );
668+ init_bg_stars (); // Reset stars for the second video
669+ }
670+
671+ if (phase == 1 && phase_time > 42.5f ) break ;
663672
664673 BeginDrawing ();
665674 ClearBackground (BG );
666675
667- /* ============================================================
668- ANIMATION 1: Speed Comparison (0–3s)
669- ============================================================ */
670- if (t < 3.0f ) {
676+ if (phase == 0 ) {
671677 update_anim1 (dt , roboto , & star_shader );
672- }
673-
674- /* ============================================================
675- ANIMATION 2: Bar chart (0–3s), then held final state (3–6s)
676- ANIMATION 3: PufferNet glow on right half, overlaps 3–6s
677- ============================================================ */
678- else if (t < 9.0f ) {
679- // draw_anim2(anim2_t - 3.0f, roboto, &star_shader);
680- build_bg_verts ();
681- draw_stars (bg_verts , bg_draw_count , & star_shader );
682-
683- if (t >= 6.0f ) {
684- draw_anim3 (t - 6.0f , & glow_shader , puffernet , & star_shader , roboto );
678+ } else {
679+ float t = phase_time ;
680+ if (t < 5.0f ) {
681+ build_bg_verts ();
682+ draw_stars (bg_verts , bg_draw_count , & star_shader );
683+ }
684+ else if (t < 10.5f ) {
685+ build_bg_verts ();
686+ draw_stars (bg_verts , bg_draw_count , & star_shader );
687+ draw_anim3 (t - 5.0f , & glow_shader , puffernet , & star_shader , roboto );
688+ }
689+ else if (t < 12.5f ) {
690+ update_bg_spiral (dt );
691+ draw_anim4 (t - 10.5f , roboto , & star_shader , & glow_shader , puffernet );
692+ }
693+ else if (t < 22.5f ) {
694+ draw_anim4 (2.0f , roboto , & star_shader , & glow_shader , puffernet );
695+ }
696+ else if (t < 31.5f ) {
697+ update_bg_spiral (dt );
698+ draw_anim5 (t - 22.5f , dt , & star_shader );
699+ draw_haiku_overlay (t , roboto );
700+ }
701+ else {
702+ update_bg_nova (dt );
703+ build_bg_verts_spiral (1.0f , 1 );
704+ draw_stars (bg_verts , bg_draw_count , & star_shader );
705+ draw_haiku_overlay (t , roboto );
685706 }
686707 }
687708
688- /* ============================================================
689- ANIMATION 4: Spiral in (9–11s, 2s)
690- ============================================================ */
691- else if (t < 11.0f ) {
692- update_bg_spiral (dt );
693- draw_anim4 (t - 9.0f , roboto , & star_shader , & glow_shader , puffernet );
694- }
695-
696- /* ============================================================
697- Pause (11–21s): spiral frozen
698- ============================================================ */
699- else if (t < 21.0f ) {
700- draw_anim4 (2.0f , roboto , & star_shader , & glow_shader , puffernet );
701- }
702-
703- /* ============================================================
704- ANIMATION 5: Spiral resumes (21s+), thumbnails start at 22s
705- ============================================================ */
706- else if (t < 30.0f ) {
707- update_bg_spiral (dt );
708- draw_anim5 (t - 22.0f , dt , & star_shader );
709- draw_haiku_overlay (t , roboto );
710- }
711-
712- /* ============================================================
713- ANIMATION 6: Nova — stars explode outward (32s+)
714- Text "4.0" and "puffer.ai" fade in 2s after nova
715- ============================================================ */
716- else {
717- update_bg_nova (dt );
718- build_bg_verts_spiral (1.0f , 1 );
719- draw_stars (bg_verts , bg_draw_count , & star_shader );
720- draw_haiku_overlay (t , roboto ); // lines 1+2 already faded in; line 3 + title continue here
721- }
722-
723-
724- //DrawFPS(SCREEN_W - 80, 8);
725709 static int frame_counter = 0 ;
726710 if (recording && (frame_counter ++ % 2 == 0 ))
727711 WriteFrame (& recorder , SCREEN_W , SCREEN_H );
0 commit comments