captures/pre-noon.lisp
Make the fixed warm morning environment used by both ridge captures.
Return the ridge pose, dollyed lateral-offset cells along camera-right.
The eye stands at human height on seed 121's western grass shelf. Looking east-northeast puts its snowy central rise in the middle distance, three tree crowns across the foreground, and the quarter-to-ten sun just beyond the upper-left edge.
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.
Call function with the fully resident hidden session for both ridge shots.
Four chunks reach from the western shelf across the central ridge without making a small dolly stream.
A capture is not a lobby client, and no presentation overlay is part of this clean landscape layer selection.
The still needs the same complete terrain window that FILM-
luvcraft-session requires before beginning consecutive frames.
Quarter to ten in the morning, expressed as a fraction of one day.
(keyframes)(&optional (lateral-offset 0.0d0))Return the ridge pose, dollyed LATERAL-OFFSET cells along camera-right. The eye stands at human height on seed 121's western grass shelf. Looking east-northeast puts its snowy central rise in the middle distance, three tree crowns across the foreground, and the quarter-to-ten sun just beyond the upper-left edge.
(x y z)Addition over compatible quantities.
Multiplication and scalar scaling.
Subtraction or unary negation.
The block-world camera's 70-degree vertical field of view.
(camera pose)(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.
Draw the crosshair. A film shot is not aiming at anything.
Engage the focus-plane background blur without a modal focus. The focus plane is the depth at the centre of the frame, so a film shot that wants a subject sharp against a blurred background aims the centre ray at ground or blocks standing at the subject's distance. A global rather than a binding because the…
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.
Corner falloff of the presented frame, as a fraction of full brightness.
Luminance at which a fragment starts contributing to the bloom chain.
Per-tap attenuation along a light shaft; nearer one reaches further.
How far the solar orbit leans out of the world X/Y plane.
Constant depth bias applied to every shadow comparison.
Depth bias scaled by the receiver's slope to the light.
PCF radius in shadow texels when the sun is a point.
PCF radius in shadow texels at the sun's widest.
How far the lens splits red from blue at the corners, in texels.
Saturation of the presented image, one being the filmic curve's own.
How far the presented image is pulled toward an S-curve.
(function)(&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…
(&key (chunk-width 16)
(chunk-height 16)
(chunk-depth 16)
(seed 121))(day-fraction)(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 &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.
(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…
(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.
Test whether two compatible scalars are equal.
Division of two represented quantities.
The non-negative remainder of integer division.
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,…
Intent. Turn #NLCFX0 into the first new subject after the construction proposal: one composed terrain still and one motion proof from the same hidden session, with the seed, camera, sky profile, clock, grade, and layer choices in source. Evidence. The current capture protocol already renders hidden sessions, stills,…
The first landscape subject in the showcase gazetteer: one seed, one art-directed view, and one grade shared by its still and motion proof. #NLCFX0 #2ILB5D