Render films offscreen and encode them with ffmpeg #232

Closed
sermuns wants to merge 1 commit from movie-crate into main
Owner

Adds liuverse-movie: short films set on the campus, drawn by the game's own
renderer and encoded with ffmpeg.

  • liuverse-render grows an offscreen target: the present pass lands in a
    texture instead of the swapchain, and the frame is read back as RGBA.
  • liuverse-movie owns the Movie trait, the studio (campus, renderer, frame
    clock, encoder), an Actor that walks with the game's gait solver, and the
    catalog of films. Two films ship: a sunrise flyover and two students on a
    campus path.
  • liuverse-assets holds the campus's palette, tuning and asset registry, so
    the game and the films share one campus. The camera poses and the cinematic
    overlay move with them.
cargo run -p liuverse-movie -- list
cargo run -p liuverse-movie -- render flyover --out movies/flyover.mp4
cargo run -p liuverse-movie -- still promenade --time 5 --out movies/shot.png

liuverse-movie/README.md explains how a new film is written.

Adds `liuverse-movie`: short films set on the campus, drawn by the game's own renderer and encoded with ffmpeg. - `liuverse-render` grows an offscreen target: the present pass lands in a texture instead of the swapchain, and the frame is read back as RGBA. - `liuverse-movie` owns the `Movie` trait, the studio (campus, renderer, frame clock, encoder), an `Actor` that walks with the game's gait solver, and the catalog of films. Two films ship: a sunrise flyover and two students on a campus path. - `liuverse-assets` holds the campus's palette, tuning and asset registry, so the game and the films share one campus. The camera poses and the cinematic overlay move with them. ```bash cargo run -p liuverse-movie -- list cargo run -p liuverse-movie -- render flyover --out movies/flyover.mp4 cargo run -p liuverse-movie -- still promenade --time 5 --out movies/shot.png ``` `liuverse-movie/README.md` explains how a new film is written.
A film is a timeline: it says how long it is and draws one frame at a
time. The studio owns the campus, the renderer, the frame clock and the
encoder, so a new film is one type and one catalog line.

The renderer grows a second target: the same present pass lands in a
texture instead of the swapchain, and the frame is read back as RGBA.
The campus's palette, tuning and asset registry move to `liuverse-assets`,
so the game and the films cannot drift apart, and the camera poses and
the cinematic overlay are shared with the client.
sermuns closed this pull request 2026-10-25 21:15:21 +00:00

Pull request closed

Sign in to join this conversation.
No description provided.