Fluid: four new emitter choreographies (Fuoco, Anello, Vortici, Onda)

Same solver, different figures via e.fluidMode: 'fire' bottom jets with
buoyancy — implemented as relaxation toward a target updraft (an additive
force integrates to the velocity clamp and turns flames into a wall) plus
height-scaled dye dissipation so flames die as they rise; 'ring' emitters
on a spinning circle with radial beat shockwaves; 'vortex' two counter-
rotating stirrers; 'wave' a travelling sine curtain. Stationary emitters
inject a fraction of the stir force (repeated adds at one spot saturate).
408 new presets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
lucianoandClaude Fable 5 committed 2026-07-17 15:03:46 +02:00
1 parent 14afe0b98c
commit 2181c4bc97
2 files changed
+148 -42

No files matched your search

+11 -4
View File
@@ -34,7 +34,13 @@ const FAMILIES = [
{ name: 'Reattivo Bassi', scale: 1.0, bgDark: true },
{ name: 'Reattivo Medi', scale: 1.0, bgDark: true },
{ name: 'Reattivo Alti', scale: 1.0, bgDark: true },
{ name: 'Fluido', scale: 1.0, fluid: true } // GPU fluid sim (fluid.js), not the uber-shader
// GPU fluid sim families (fluid.js), not the uber-shader; fluidMode picks
// the emitter choreography over the same solver.
{ name: 'Fluido', scale: 1.0, fluid: true },
{ name: 'Fluido Fuoco', scale: 1.0, fluid: true, fluidMode: 'fire' },
{ name: 'Fluido Anello', scale: 1.0, fluid: true, fluidMode: 'ring' },
{ name: 'Fluido Vortici', scale: 1.0, fluid: true, fluidMode: 'vortex' },
{ name: 'Fluido Onda', scale: 1.0, fluid: true, fluidMode: 'wave' }
];
// Palettes: low colour (a) -> high colour (b), plus optional hue-cycle/sat.
@@ -90,9 +96,10 @@ function makeEffect(fi, pi, vi) {
colorA: pal.a,
colorB: pal.b,
bgDark: fam.bgDark ? 1 : 0,
// Always present (0/1) so Object.assign merges in setEffect can't leave a
// stale flag behind when switching between fluid and shader presets.
isFluid: fam.fluid ? 1 : 0
// Always present (0/1 and a mode string) so Object.assign merges in
// setEffect can't leave a stale flag behind when switching presets.
isFluid: fam.fluid ? 1 : 0,
fluidMode: fam.fluidMode || 'ink'
};
}