Skip to content

Releases: greenjon/liquid-lsd

v0.9.121

Choose a tag to compare

@github-actions github-actions released this 15 Oct 07:59

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 and GeneratorDefaultsTest; Neighborhood, RatioPreset and Ribbons added to the BundledIsfRangesTest selector allowlist; web manifest entries and web/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 in GeneratorDefaults.CURATED_KNOBS and GeneratorDefaultsTest; SeedShape, P, Q and Outside added to the BundledIsfRangesTest selector allowlist; web manifest entries and web/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 in GeneratorDefaults.CURATED_KNOBS and GeneratorDefaultsTest; nebula_volume added to the StockGpuCostAuditTest heavy allowlist (LSD_COST 3) and to Source3DModeTest; the sims are LSD_COST 2. These are the first stock generators using PASSES (persistent FLOAT targets, one target per sub-step). No web/sync_manifest.json entry. Written from the published equations (rows in docs/developer/clean_room_provenance.md and docs/licenses/SHADERS_LICENSE.md); details in docs/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_time added to VisualSourceRegistry.DEFAULT_SOURCE_IDS, curated knobs, tooltips (SourceDocRegistry), FractalType added to the BundledIsfRangesTest selector 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 in GeneratorDefaults.CURATED_KNOBS and GeneratorDefaultsTest; heavy allowlist in StockGpuCostAuditTest; Source3DModeTest expects them 3D. Each shader is LSD_COST 3, GLSL 3.30 only, with no web/sync_manifest.json entry (nothing in WebSyncTest or checkWebSync covers them). Written from the defining mathematics (rows in docs/developer/clean_room_provenance.md and docs/licenses/SHADERS_LICENSE.md); loop caps and timings in docs/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...
Read more

v0.9.120

Choose a tag to compare

@github-actions github-actions released this 13 Oct 10:58

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 .flame files. 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 in library/presets/imported-flames/. Xform weights, colours, affines (pre and post), final xform, up to four variations per xform (including pre_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 reads inversion as spherical and linear3D/spherical3D as 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 (optional DeckPresetDto.palette), so presets stay portable and the Palette parameter 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

Choose a tag to compare

@github-actions github-actions released this 13 Oct 05:37

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/curated on 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