render_wallpaper.py drives headless Firefox frame by frame (four at a time,
resuming where it stopped), then ffmpeg. Thirty seconds at 30 fps is exactly
one plasma cycle, so frame 900 meets frame 0 and the loop has no seam.
plasma-plugin/dev.emil.video is a minimal Plasma 6 video wallpaper: one file
per screen, filling the screen, looping. H.264 is encoded Baseline because
Qt here decodes through openh264, which rejects High profile and leaves a
frozen frame; a new source also has to be played explicitly.
The #shot hash learned info=0 to hide the on-screen hint for renders.
Two of the eight sheets carry fish instead of only plasma. Each fish cuts
straight across the slab once per cycle (thirty seconds, period preserved),
three per sheet, sizes spread by pow(hash, 2.6) so most are small and now
and then one is huge. Sheets sit near the front (0 and 1) so the silhouettes
are not buried under the layers in front of them; their alpha carries
coverage instead of depth.
The fish ride screen space, since the sheets themselves stretch up to four
times towards the frame edges, and are bent by the smooth swell of the
surface only: the crack steps flip the slope within a pixel and would slice
a fish to bits. Eyes are a small cold blue glow, the only light they have.
debug_fish.frag renders the shapes flat for inspection.
Pass 2 magnifies the object sheet where the surface steepens at the cracks,
so a one-pixel silhouette showed up as hard blocks. Nine jittered rays per
pixel give the edge a soft ramp instead.
Pass 1 draws one raymarched gem on sheet 1 instead of plasma; its alpha
carries coverage rather than depth, so pass 2 can light it as a solid
while every other sheet still absorbs by path length.
Normals are now sampled at 0.008 so the creases resolve instead of being averaged
away, and the seam sheen only lights the crack walls, which keeps the open water
black. Fracture steps are trimmed so the sheets break at a seam instead of smearing
into a pale ribbon.
Ridged grain replaces the smooth swells, and two families of fracture lines step the
height, so the refracted sheets break across hard seams instead of drifting. The
height field stays time-independent: only the plasma moves. Grazing rays at a step
are clamped so the sheets never smear off the atlas.
Pass 1 renders eight plasma sheets into an atlas with linear depth in alpha;
pass 2 marches the refracted ray to each sheet and absorbs it by real path
length, so near and far layers separate under pointer parallax. Plasma cycle
repeats exactly every 30 s; - / = change speed.