luv

Workshop wiki

pre-noon.lisp

captures/pre-noon.lisp

system luv/showcase · 12 definitions · on GitHub

in-package#:luv.showcase

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

defconstant+pre-noon-ridge-day-fraction+0.40625"Quarter to ten in the morning, expressed as a fraction of one day."
defconstant+pre-noon-ridge-width+1200
defunmake-pre-noon-ridge-sky-profile

Make the fixed warm morning environment used by both ridge captures.

luvcraft:make-sky-profile
list
luvcraft:make-sky-keyframe:day-fraction+pre-noon-ridge-day-fraction+:zenith-color
0.180.420.88
:horizon-color
0.620.760.96
:sun-color
1.241.040.76
:ambient-color
0.400.510.72
:fog-color
0.480.660.88
:sun-angular-width0.009:exposure1.0:cloudiness0.46:fog-near34.0:fog-far126.0
defunpre-noon-ridge-camera-pose
&optional
lateral-offset0.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.

let
yaw1.05d0
luvcraft::make-camera-pose
luvcraft::make-vec3
+-46.0d0
*lateral-offset
cosyaw
8.75d0
--36.0d0
*lateral-offset
sinyaw
yaw0.20d0luvcraft::+luvcraft-camera-vertical-field-of-view+
defuncall-with-pre-noon-ridge-grade

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.

let
defuncall-with-pre-noon-ridge-session

Call function with the fully resident hidden session for both ridge shots.

call-with-pre-noon-ridge-grade
lambda
let
sessionnil
unwind-protect
progn
setfsession
luvcraft:start-luvcraft:title"showcase - pre-noon ridge":width+pre-noon-ridge-width+:height+pre-noon-ridge-height+:visible-pnil:frames-per-secondnil:world:camera:sky-clock:sky-profile

Four chunks reach from the western shelf across the central ridge without making a small dolly stream.

:residency-radius4

A capture is not a lobby client, and no presentation overlay is part of this clean landscape layer selection.

dolist
overlay
copy-list
luvcraft:luvcraft-session-overlayssession

The still needs the same complete terrain window that FILM- luvcraft-session requires before beginning consecutive frames.

formatt"capture pre-noon ridge: preparing ~D terrain chunks~%"
hash-table-count
luvcraft::luvcraft-session-desired-chunkssession
finish-output
luvcraft::wait-for-luvcraft-productssession:minimum
hash-table-count
luvcraft::luvcraft-session-desired-chunkssession
formatt"capture pre-noon ridge: terrain ready~%"
finish-output
funcallfunctionsession
whensession
luv:define-capturepre-noon-ridge-still
:figurenlcfx0:kind:image:extension"png":description"Warm pre-noon light across seed 121's tree-broken central ridge."
pathname
call-with-pre-noon-ridge-session
lambda
session
luvcraft:capture-luvcraft-screenshotsessionpathname:camera-pose:include-hud-pnil:include-viewmodel-pnil
luv:define-capturepre-noon-ridge-glide
:figurenlcfx0:kind:video:extension"mp4":description"A slow lateral glide holding the warm ridge, trees, fog, and sun steady."
pathname
call-with-pre-noon-ridge-session
lambda
session
let*
frame-count
*secondsframe-rate
luvcraft:film-luvcraft-sessionsessionpathname:secondsseconds:frame-rateframe-rate:include-hud-pnil:include-viewmodel-pnil:before-frame
lambda
let*
progress
if
=frame-count1
0.0d0
/frame
1-frame-count
lateral-offset
+-2.0d0
*4.0d0progress
luvcraft::set-camera-pose
luvcraft:luvcraft-session-camerasession
when
zerop
modframeframe-rate
formatt"capture pre-noon-ridge-glide: second ~D/~D~%"
1+
/frameframe-rate
seconds
finish-output