Repository navigation
Releases: greenjon/liquid-lsd
Releases · greenjon/liquid-lsd
Release list
v0.9.121
Version 0.9.121
Eleven More Light Generators (library/sources/{cyclic_ca,metaballs,wave_ripples,harmonograph,aurora_ribbons,isometric_voxels,halftone_matrix,kali_set,girih_stars,glitch_blocks,voronoi_cells}/)
- Eleven more generators for integrated graphics, on desktop and web. Cyclic CA (self-organising spirals), Metaballs, Wave Ripples (interference of orbiting wave sources), Harmonograph (a glowing oscilloscope curve), Aurora Ribbons, Isometric Voxels (a Q*bert-style cube field), Halftone Matrix (dots, LED pixels and CMYK screens), Kali Set (an inversion-fold fractal), Girih Stars (Islamic strapwork), Glitch Blocks and Voronoi Cells. None carries the GPU-intensive triangle.
- Costs on an Intel UHD at 1080p range from about 4 to 20 ms. Aurora Ribbons and Halftone Matrix are the heaviest; lower their Quality first. Harmonograph evaluates its curve once into a small lookup strip and skips segments far from each pixel, and Metaballs has smooth glossy shading with a cheaper default Quality. Cyclic CA needs a few seconds to form its spirals, and Glitch Blocks reshuffles its sequence when you change Glitch Rate.
- Four macro knobs each and a tooltip on every parameter.
- Internal: stock ids in
VisualSourceRegistry.DEFAULT_SOURCE_IDS, curated knobs andGeneratorDefaultsTest;Neighborhood,RatioPresetandRibbonsadded to theBundledIsfRangesTestselector allowlist; web manifest entries andweb/shaders/*.frag; user guide,rendering.md, licence and clean-room ledger rows. Only some per-source notes exist in.planning/light-sources-notes/.
Five Light Generators for Integrated Graphics (library/sources/{quasicrystal,thin_film,tunnel_scenes,video_feedback,hyperbolic_tiling}/, rendering/VisualSourceRegistry.kt, rendering/SourceDocRegistry.kt, presets/GeneratorDefaults.kt)
- Five new generators that run comfortably on integrated graphics, on desktop and web. Quasicrystal (5 to 8 interfering gratings in four styles and four palettes), Thin Film (oil-slick iridescence), Tunnel Scenes (a synthwave grid, a Truchet tunnel or an N-sided wormhole, with no ray marching), Video Feedback (a classic feedback loop of zoom, rotation, drift and seed shapes) and Hyperbolic Tiling (a Poincare-disk {P,Q} tiling with edge glow). They carry no GPU-intensive triangle; the absence of the badge is the signal.
- Measured about 2 to 6 ms per frame at 1080p on an Intel UHD (Tiger Lake GT1), one deck, at the defaults. Each has a Quality input for the rest. Video Feedback keeps a small persistent frame, so its cost is the same at any output size, and it is square, so a widescreen output shows about half of its height.
- Four macro knobs each: Quasicrystal (Freq, Sharp, Spin, Drift), Thin Film (Flow, Scale, Film, Turb), Tunnel Scenes (Speed, Twist, Glow, Sway), Video Feedback (Zoom, Rot, Hue, Decay), Hyperbolic Tiling (Speed, Drift, Edge, Glow). Every parameter has a tooltip.
- Internal: stock ids added to
VisualSourceRegistry.DEFAULT_SOURCE_IDS; curated knobs inGeneratorDefaults.CURATED_KNOBSandGeneratorDefaultsTest;SeedShape,P,QandOutsideadded to theBundledIsfRangesTestselector allowlist; web manifest entries andweb/shaders/*.frag; user guide,rendering.md, licence and clean-room ledger rows.
Nebula Volume and Three Simulation Generators Join the Stock Generators (rendering/VisualSourceRegistry.kt, rendering/SourceDocRegistry.kt, presets/GeneratorDefaults.kt, library/sources/{nebula_volume,reaction_diffusion,fluid_ink,lenia}/)
- Four new generators, desktop only. Nebula Volume (a ray-marched gas nebula with self-shadowing, a drifting inner light, a starfield and camera flight), Reaction Diffusion (Gray-Scott maze, worm, coral and spot patterns that grow and split), Fluid Ink (orbiting emitters stirring ink through an incompressible flow) and Lenia (a continuous cellular automaton of soft blobs, rings and stripes). They ship with the app, are restored if deleted, and are not part of the web player.
- The three simulations run on fixed-size persistent grids (512, 384 and 256 square), so they cost the same at any output size and measured under 2 ms at 1080p on an RTX A2000 Laptop GPU. They re-seed themselves when the grid is empty, for example after a resize, and each has a Reseed latch (Reaction Diffusion, Lenia). They advance a fixed number of steps per frame, so they run faster at higher frame rates. They carry no warning triangle.
- Nebula Volume carries the GPU-intensive triangle. The defaults take about 17 ms at 1080p on one deck; Quality, Lighting and Detail are the cost knobs, and the maximum of all three is very heavy (about 68 ms measured).
- Lenia is a texture generator, not a creature simulator. It does not reliably produce the gliding creatures of the published Lenia; treat it as living bubbles, rings and stripes.
- Four macro knobs each: Nebula Volume (Density, Cover, Turb, Speed), Reaction Diffusion (Regime, Diffuse, Speed, Relief), Fluid Ink (Force, Swirl, Turb, Fade), Lenia (Center, Width, Radius, Speed). Every parameter has a tooltip.
- Internal: stock ids added to
VisualSourceRegistry.DEFAULT_SOURCE_IDS; curated knobs inGeneratorDefaults.CURATED_KNOBSandGeneratorDefaultsTest;nebula_volumeadded to theStockGpuCostAuditTestheavy allowlist (LSD_COST3) and toSource3DModeTest; the sims areLSD_COST2. These are the first stock generators usingPASSES(persistentFLOATtargets, one target per sub-step). Noweb/sync_manifest.jsonentry. Written from the published equations (rows indocs/developer/clean_room_provenance.mdanddocs/licenses/SHADERS_LICENSE.md); details indocs/developer/rendering.md; per-source notes in.planning/heavy-sources-notes/.
Escape Time Generator (library/sources/escape_time/)
- New 2D generator, desktop only. Escape Time draws high-iteration Julia, Burning Ship Julia, relaxed Newton (three cubic roots) and Mandelbrot fractals with smooth colouring, orbit-trap glow, a fractional power and a Julia constant that orbits on its own (Morph Speed).
- Detail scales the iteration cap and, above 0.75, turns on 2x2 antialiasing. It has its own Zoom (up to 3000x; fp32 goes blocky beyond that), Center X/Y and Rotation, and four colour modes. It carries the GPU-intensive triangle in the browser, though at the defaults it measured under 1.5 ms at 1080p on an RTX A2000 Laptop GPU.
- Internal: stock id
escape_timeadded toVisualSourceRegistry.DEFAULT_SOURCE_IDS, curated knobs, tooltips (SourceDocRegistry),FractalTypeadded to theBundledIsfRangesTestselector allowlist, heavy-tag audit, user guide,rendering.md, licence and clean-room rows.
Five Heavy Raymarched Fractals Join the Stock Generators (rendering/VisualSourceRegistry.kt, rendering/SourceDocRegistry.kt, presets/GeneratorDefaults.kt, library/sources/{mandelbox,kifs,mandelbulb,pseudo_kleinian,apollonian}/)
- Five new generators, desktop only. Mandelbox (box fold, sphere fold and a scale that can go negative, with a camera gliding in and out), KIFS (kaleidoscopic folds: Menger, Sierpinski, octahedral and mixed, with twist, morph and an endless self-similar zoom), Mandelbulb (animatable power, a Julia blend and a slow power swing), Pseudo Kleinian (a periodic mirror fold plus sphere inversion, flown through) and Apollonian (a sphere gasket, flown through). They ship with the app, are restored if deleted, and are not part of the web player.
- Each has a Quality knob that scales ray-march steps, fold iterations and ambient-occlusion taps together, plus a Color Mode selector and a signed Flight Speed (negative reverses). The defaults are tuned for headroom: measured on an RTX A2000 Laptop GPU at 1080p, the defaults take roughly 5 to 11 ms per frame on one deck (Mandelbox 7.7, KIFS 4.8, Mandelbulb 5.2, Pseudo Kleinian about 11, Apollonian about 8.7). Raising Quality, or zooming in close, costs more. Two heavy decks plus a crossfade is the case to watch.
- They carry the GPU-intensive warning triangle in the browser, like Icosa H3, Gyroid Hyperspace and Hyper-Slice. Expect them to run slowly on integrated graphics; lower Quality first.
- Four macro knobs each, ready to play: Mandelbox (Scale, Fold, Radius, Speed), KIFS (Type, Scale, Twist, Morph), Mandelbulb (Power, Swing, Julia, Speed), Pseudo Kleinian (Slab, Invert, Core, Speed), Apollonian (Cell, Invert, Twist, Speed). Every parameter has a tooltip.
- Internal: stock ids added to
VisualSourceRegistry.DEFAULT_SOURCE_IDS; curated knobs inGeneratorDefaults.CURATED_KNOBSandGeneratorDefaultsTest; heavy allowlist inStockGpuCostAuditTest;Source3DModeTestexpects them 3D. Each shader isLSD_COST3, GLSL 3.30 only, with noweb/sync_manifest.jsonentry (nothing inWebSyncTestorcheckWebSynccovers them). Written from the defining mathematics (rows indocs/developer/clean_room_provenance.mdanddocs/licenses/SHADERS_LICENSE.md); loop caps and timings indocs/developer/rendering.md; per-source notes in.planning/heavy-sources-notes/.
Heavy Shaders Get a GPU-Cost Warning in the Browser (rendering/isf/ISFModels.kt, ui/browser/PresetListPanel.kt, ui/browser/FXBrowserPanel.kt)
- A warning triangle marks GPU-intensive stock shaders. Generators and effects whose author declared them heavy show a butter-coloured triangle at the right edge of their browser row, and the tooltip says "GPU-intensive: may run slowly on integrated graphics." Nothing is hidden or blocked; the badge only tells you what to expect. The raymarchers Icosa H3, Hyper Slice and Gyroid Hyperspace are tagged heavy.
- New optional ISF header key
LSD_COST(1 light, 2 medium, 3 heavy). Other ISF hosts ignore it, so shaders stay portable. Only 3 shows a badge; values outside 0-3 are clamped. Your own s...
v0.9.120
Version 0.9.120
Fractal Flame Generator With an Evolving Garden (experimental) (rendering/FlameSource.kt, FlameEngine.kt, FlameGenome.kt, FlameSampler.kt, presets/Garden.kt)
- New generator, Fractal Flame. Millions of points iterate through up to six transforms with 98 variations (the paper's 49, 46 more, hemisphere and plusrecip, from exp, log and the trigonometric and hyperbolic family to wedge, curve, bipolar and flux) and are drawn as feathered, glowing filaments. Everything is a parameter, so modulators, macros and MIDI/OSC learn work on every xform, affine and variation. The Edit row's SRC sub-tab has tabs for Look, Mods, each xform and the final xform; the default macro knobs are Zoom, Spin, Warp and Breathe, and Spin, Breathe, Warp and Drift move every xform at once. Math follows Draves & Reckase, "The Fractal Flame Algorithm" (clean-room, credited in the licenses page). Experimental: not in the stock generator set yet.
- Import
.flamefiles. The Sources browser's...menu has Import Flame...: pick a flame genome you own (a file with one or several flames) and each becomes a Fractal Flame preset inlibrary/presets/imported-flames/. Xform weights, colours, affines (pre and post), final xform, up to four variations per xform (includingpre_blur, which acts on the point before the others) with their parameters, and the camera (zoom, centre, rotation) carry over. What cannot is listed in the preset's notes and the log: variations the generator does not have (it now readsinversionas spherical andlinear3D/spherical3Das their flat twins, with a note), extra variations or xforms beyond three and six, values outside the parameter ranges (clamped), the tone settings, 3D camera. The flame's 256-colour palette is kept and saved inside the preset (optionalDeckPresetDto.palette), so presets stay portable and thePaletteparameter shifts it. Flames from other programs have the image's y axis pointing down, so imports set the new FlipY camera parameter (also in the Look tab's camera section; it is the camera mirrored, not a mirrored genome). The reading of the affine coefficients and of the camera rotation was checked against reference renders of two flames. To make room for flames found in the wild, parameter ranges grew: translations to +-10, scales and shears to +-4, variation weights -4..4 (negative allowed), camera zoom 0.01-32, camera centre +-16, Julia-N/Julia-Scope power -20..20, and larger Blob waves, N-gon sides and Pie slices. A new Softness look parameter (point size, 1-10, default 3) smooths sparse flames, and imports set it from the original's smoothing filter. A new Smooth look parameter (0-1, default 0) is a density-estimation blur: sparse regions blur towards a coarser version of the image while dense ones stay sharp; imports start at 0.5. Imports start with Decay 0.85 and Toe 0 to fill in with far fewer points than the originals used. Mutate keeps its old jitter size and never shrinks an imported flame's larger scales.
📦 Commits in v0.9.120
Changes since v0.9.119:
- 240d0c4f feat(flame): plusrecip (id 100, by black box), inversion read as spherical, linear3D/spherical3D read as their 2D twins (greenjon)
- 5ea4fd82 docs: replace contributor docs, record the rewrite in the clean-room ledger (greenjon)
- ac678efb refactor: rewrite the 2026-07-06 contributor code from a behavior spec (greenjon)
🛡️ Automated Multi-Platform Verification
The following platform binaries passed automated smoke testing on GitHub-hosted runners:
- ✅
liquid-lsd-linux-arm64.zip - ✅
liquid-lsd-linux-x64.zip - ✅
liquid-lsd-macos-arm64.zip - ✅
liquid-lsd-macos-x64.zip - ✅
liquid-lsd-windows-x64.zip
v0.9.119
Version 0.9.119
Fractal Flame Generator With an Evolving Garden (experimental) (rendering/FlameSource.kt, FlameEngine.kt, FlameGenome.kt, FlameSampler.kt, presets/Garden.kt)
- The Garden starts stocked. About 150 curated Fractal Flame presets (with thumbnails) are installed into
library/presets/garden/curatedon first run, so Pool and Breed have material from the first launch. Restore Factory Presets re-adds any you delete; your own files are never overwritten.
📦 Commits in v0.9.119
Changes since v0.9.118:
- 3dac815d feat(flame): ship 158 curated flames as the Garden's starting stock; curator requires three xforms (greenjon)
🛡️ Automated Multi-Platform Verification
The following platform binaries passed automated smoke testing on GitHub-hosted runners:
- ✅
liquid-lsd-linux-arm64.zip - ✅
liquid-lsd-linux-x64.zip - ✅
liquid-lsd-macos-arm64.zip - ✅
liquid-lsd-macos-x64.zip - ✅
liquid-lsd-windows-x64.zip