captures/terminal-cinema.lisp
Return an unrolled camera pose looking from X/Y/Z at the target point.
The oblique shelter view shared by the shell and Film wall.
Build the compact stone-and-wood shelter around one four-by-three wall.
Meadow floor, stone threshold, and a warm timber path pull the terminal into a place without competing with its luminous surface.
Back wall and deep frame. The terminal sits one cell in front so its :BACK face remains exposed toward the camera.
Return the bounded credential-free shell program for the showcase PTY.
Run the finite styled fixture through display's owned PTY and wait for it.
Call function with SESSION and its source-owned world terminal-display.
Fill pixels with one deterministic stone-age car crossing a dusk cartoon.
Write the small deterministic H.264 fixture played by the world wall.
Call function with one generated clip, then remove its unique directory.
Put clip on display through the bounded software Film path.
Chapel's RADV H.264 video queue currently loses the whole graphics device on its first decoded picture. This authored 480x270 fixture is intentionally forced through the ordinary software upload path until that backend failure has its own proof and fix; :AUTO would still try the guilty hardware path first.
(x y z target-x target-y target-z field-of-view)Subtraction or unary negation.
The componentwise square root of a raw value.
Addition over compatible quantities.
Multiplication and scalar scaling.
(x y z)The block-world camera's 70-degree vertical field of view.
(camera pose)(&key (id (gensym "BLOCK-WORLD-"))
(chunk-width 16)
(chunk-height 16)
(chunk-depth 16)
(cell-extent 1d0)
source)(world x y z)(world x y z)Return one site as BLOCK and :RESIDENT, or NIL and :ABSENT. This sparse world-coordinate accessor constructs coordinate descriptors and a chunk lookup key. It is appropriate for inspectors, ray hits, collision probes, and sparse interaction. Algorithms over many cells should select a chunk/domain once and use…
Logical disjunction of tests and raw truth values.
Test whether two compatible scalars are equal.
(world origin-x origin-y origin-z face width height
&key (material *terminal-block*))Place a WIDTH by HEIGHT terminal-material rectangle in resident WORLD. ORIGIN is the lower-left block as seen from FACE's outward side.
(world)Solve and publish voxel light from scratch for WORLD's resident chunks. Returns the chunks whose published light changed. The selected production solver must have an explicit SOLVE-LIGHT-REGION-USING method.
(display &rest open-arguments)(device &key (timeout 5.0))(function &key (day-fraction 0.72) (shell-p nil))(function &key title world camera sky-clock sky-profile critters
width height (residency-radius 4) clean-p
(exposure 0.48) (bloom-gain 0.18) (shaft-gain 0.28))(session x y z face
&key columns rows
(rows-per-block 6)
(fixture (terminal-display-fixture))
(material *terminal-block*)
(class 'terminal-display)
(margin 0.12)
(font-scale 1.0)
(font-pathname *terminal-display-font-pathname*)
(bold-font-pathname *terminal-display-bold-font-pathname*)
(default-foreground *terminal-display-default-foreground*))Attach a deterministic Ghostty terminal to an authored block rectangle. X,Y,Z names any block in the desired exposed FACE. The maximal coplanar terminal-material component must be rectangular. Its native block meshes remain the display body; this overlay contributes only one fitted Slug grid. When COLUMNS or ROWS…
Logical conjunction of tests and raw truth values.
(session overlay &key (release-p t))Detach OVERLAY at a frame boundary and optionally release it there. The no-release path is intentionally preserved for FUSE-LUVCRAFT-OVERLAY: that path may run inside a frame whose command stream still borrows OVERLAY.
(day-fraction)(pixels frame frame-count)An explicitly owned AVFrame.
Division of two represented quantities.
The maximum of compatible quantities.
The componentwise absolute value of a raw value.
The non-negative remainder of integer division.
Test whether one compatible scalar is at most another.
Test whether one compatible scalar is at least another.
Test whether one compatible scalar is less than another.
(pathname)((writer pathname width height &rest options)
&body body)Evaluate BODY with WRITER bound as a local frame-writing function. Call (WRITER pixels) once per frame; see CALL-WITH-VIDEO-ENCODER for PATHNAME, WIDTH, HEIGHT, and OPTIONS.
(function)(display clip)(display pathname &key (hardware :required))Play PATHNAME on DISPLAY's authored wall using the session's video backend. HARDWARE is the decode policy MAKE-VIDEO-SCREEN takes. It defaults to :REQUIRED, which is right for authored films whose codec is known, and wrong for a film that arrived from somewhere: whatever a stranger's phone recorded is not…
(name (&key figure kind extension (description "") (layout :landscape))
(pathname) &body body)Define one inspectable wiki capture recipe. NAME is its command-line identity. FIGURE is the stable six-character wiki figure ID; KIND is :IMAGE or :VIDEO; EXTENSION is the generated file suffix. LAYOUT is :LANDSCAPE by default or :PORTRAIT for uncropped 9:16 presentation. BODY is an ordinary named renderer function…
(session pathname &key camera-pose metadata-function
(include-hud-p t) (include-viewmodel-p t))Render SESSION once offscreen and write its native GPU frame to PNG. This works for both live and hidden sessions. The call returns only after GPU readback and compressed PNG writing have completed; it does not inspect the host window or depend on the window being visible. CAMERA-POSE may be a pose or a function of…
(surface viewport-width viewport-height
&optional (left-inset 0.0) (top-inset 0.0)
(right-inset 0.0) (bottom-inset 0.0))Return a camera pose which contains SURFACE inside the safe view. Framing is solved rather than approximated. For an eye at distance D from the surface centre along EYE-DIRECTION, a corner at offset O from that centre lands at DOT(O, camera-right) * focal / (aspect * (D - DOT(O, EYE-DIRECTION))) across and at the…
(session pathname
&key (seconds 8) (frame-rate 30) before-frame
(include-hud-p t)
(include-viewmodel-p t))Film SESSION for SECONDS of real time into an MP4 at PATHNAME. Frames are captured at FRAME-RATE, paced against the wall clock so that overlay animation driven by real time plays at its true speed. BEFORE-FRAME, when given, is called with the frame index before each capture, and is the place to move the camera. …
The world terminal discovers an authored rectangle of blocks, sizes a Ghostty grid to it, draws styled cell backgrounds and Slug glyph geometry, and adds a separately lit screen panel and glass faceplate. The same terminal surface protocol reaches the graphite slab in the player's hand. A terminal showcase…
Film walls and portals both put a moving image onto a world panel, but they prove different things. Film can use the hardware-backed video path; the showcase renderer can also cross the same wall texture, screen-panel, and faceplate ownership with a tiny generated clip and a deliberately selected decoder. A portal…
A world terminal photographed through its existing display ownership. Shell fixtures cross the real PTY/Ghostty path; Film fixtures cross the existing video-screen path and remain under the terminal faceplate. #2TMUKK #TWKA93