captures/gallery.lisp
Remove HUD-stage presentation without removing world/physics drawers.
Remove only the lobby instrument while retaining the ordinary play HUD.
Call function with one fully resident, source-owned gallery session.
The grade owner has already saved every process-global value. These subject-local changes remain visible to the canvas thread and its unwind restores the prior live grade after the session is closed.
Call function in one deterministic generated little world.
The proven seed-121 ridge composition, optionally widened for portrait.
Film pose-at-frame with deterministic shader time and visible progress.
Crystal grove: a compact source-owned set where blocklight, emissive material, foliage, masonry, and depth all remain legible in one frame.
Inhabitants: the existing deterministic three-turtle cast, recomposed at their own height instead of presented as an aerial diagnostic plate.
Physics: a deterministic burst over source-owned stairs. The film moves the bodies rather than orbiting a static proof; the stills advance the same fixed simulation to a settled composition.
(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)(camera pose)(session)(overlay)Return where OVERLAY draws: :SCENE, :WORLD-PANEL, :VIEWMODEL, :HUD, or :NONE. Scene overlays inhabit world depth; viewmodels are first-person geometry above the world but below held items and the crosshair. World panels retain world projection and depth while drawing analytic application graphics at native…
(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.
(session)(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))Mutable time-of-day state owned by a luvcraft session. SLY can pause it, set a time, change its rate, or pin it without restarting.
(function)Call FUNCTION while the canvas-thread-visible live grade is pinned. The renderer deliberately keeps these values global so its canvas thread sees live SLY changes. A capture therefore sets and restores the globals rather than dynamically binding values on the directing thread.
Overall scene exposure multiplied into the sky profile's own exposure.
How much of the blurred bright-pass image is added back in linear light. The chain's kernel is wide and runs twice, so this is a glow spread over a sixth of the frame rather than a halo: past about a third it stops reading as light around the sun and starts reading as fog over everything.
How strongly sunlight scattered around the solar disc streaks the frame.
Draw the crosshair. A film shot is not aiming at anything.
Logical negation of one test or raw truth value.
(&key
(title "luv little block world — click, look, walk")
;; NIL means "as much of this display as
;; comfortably fits"; a capture asks for the
;; exact frame it intends to write out. A
;; KMSDRM console can only present at a real
;; display mode, so the environment may pin
;; the canvas to the panel's native size.
(width (let ((value (uiop:getenv "LUVCRAFT_WIDTH")))
(and value (parse-integer value))))
(height (let ((value (uiop:getenv "LUVCRAFT_HEIGHT")))
(and value (parse-integer value))))
(frames-per-second 60)
(visible-p t)
(fullscreen-p nil)
(high-pixel-density-p t)
(world (make-empty-little-block-world))
(mesher (make-instance
'exposed-face-mesher))
(camera (make-instance 'fly-camera))
player
(selected-block *stone-block*)
(inventory (make-block-inventory))
quit-function
;; A hidden capture wanting animals in frame
;; hands in a population it has already
;; placed; the ordinary game grows its own
;; around the player as it plays.
(critters
(make-instance 'critter-population))
checkpoint-writer
(provider *gpu-provider*)
(sky-clock (make-instance 'sky-clock))
(sky-profile (make-default-sky-profile))
(shadow-diagnostic-p nil)
;; The world-text banner is a proof of the
;; Slug path, not scenery: a caller that
;; wants one asks for it, and the ordinary
;; game sky stays empty.
(world-text-string nil)
(world-text-font-pathname
(cl-dejavu:font-pathname "DejaVuSans.ttf"))
(world-text-distance 8.0)
(world-text-lift 3.0)
(world-text-units-per-em 0.55)
(video-pathname nil)
(video-distance 13.0)
(video-lift 4.5)
(video-height 5.0)
(residency-radius 6)
(publication-limit 2)
(load-schedule-limit 4)
(mesh-capture-limit 1))Open a little CPU-meshed block world. Click to capture the pointer, look with the mouse, walk with WASD, and jump with Space. Once captured, left click removes the block at the centre of view and right click places the selected block. Number keys select materials, middle click picks the targeted material, Shift…
Logical disjunction of tests and raw truth values.
The living animals near the player, and how to find more.
(session &key minimum (timeout 10.0))Wait outside frame encoding for a useful initial set of chunk meshes. MINIMUM defaults to nine or the whole desired set when it is smaller. The visible startup path asks only for the nearest product before its first presentation; deterministic captures wait for the broader default set.
(session)Stop SESSION exactly once and publish its result to every caller. The sole owner attempts every named release step and closes the canvas and device last. Concurrent and later callers observe the same values or RELEASE-ERROR without releasing a native handle twice.
(function &key title seed pose day-fraction width height clean-p)(&key (chunk-width 16)
(chunk-height 16)
(chunk-depth 16)
(seed 121))(day-fraction)(&key (portrait-p nil) (lateral-offset 0.0d0)
(height 8.75d0) (pitch 0.20d0))The block-world camera's 70-degree vertical field of view.
(session pathname pose-at-frame
&key
(seconds +gallery-film-seconds+)
(frame-rate +gallery-film-frame-rate+)
(include-hud-p nil)
(include-viewmodel-p nil))(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. …
An explicitly owned AVFrame.
Division of two represented quantities.
The non-negative remainder of integer division.
(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…
Quarter to ten in the morning, expressed as a fraction of one day.
The maximum of compatible quantities.
(intent urge)(session timestamp)(intent)(pathname day-fraction title)(&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…
Test whether one compatible scalar is at most another.
The componentwise absolute value of a raw value.
(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.
(angle &key portrait-p)(function width height clean-p)Test whether one compatible scalar is greater than another.
(angle &key portrait-p (close-p nil))The 50-degree vertical field of view used during modal focus.
(function width height)Compare compatible quantities and produce dimensionless values.
Test whether two compatible scalars are equal.
(&key portrait-p)(function width height)(session &key center (count 20))Scatter a deterministic mix of beach balls, smiley balls, and classic balls around CENTER, each with a small pop-up velocity, and return their handles, newest first. CENTER is an (X Y Z) list; without one the balls burst a few cells ahead of the session's camera. The scatter is hashed, not random, so the same call…
(session seconds frame-rate)The showcase should say what luvcraft can actually do, preserve good views of those things, and occasionally be beautiful enough to stand on its own. Those are related jobs, but not identical ones. The useful catalogue has three lanes: – Scenes are composed editorial images: terrain, inhabitants, architecture, and…
An orbit is useful when the claim is shape, depth, or attachment to the world. It is not a universal video template. The film should move the variable that the subject owns: capture-luvcraft-screenshot already chooses HUD and viewmodel layers, and film-luvcraft-session gives authored code a before-frame boundary. A…
The principal landscape should be a recognizably generated little world, not a bespoke diorama. The terrain source already supplies rolling grass, sand, stone and snow with rocks and broad-canopied trees. The sky can pin any hour, while the HDR presentation in the renderer supplies fog, bloom, vignette, focus blur,…
A time-of-day folio should use one seed, one camera, one viewport, and one grade. Only the pinned sky-clock reading changes. That makes the default profile's midnight, sunrise, morning, noon, sunset, and dusk keyframes visible as a system rather than as unrelated pretty pictures. – little-world-blue-hour — the world…
The first broad gallery folio: portrait compositions for phones, clean authored motion, and one deliberately gameplay-shaped landscape walk. Each subject still owns its world and motion; this file only shares the hidden-session lifecycle and the portrait frame. #RFUR2R #I380Q9