Simulation · Published v2

Azure Geysers

Five copper vents emit translucent blue plumes above an obsidian platform. Mist rises by creating weaker cells above itself, then dissipates. The vents continuously refill gaps for a repeating fountain.

No preview

Inside this simulation

Every named building block is public and reusable. These are the exact versions published with this simulation.

Source

property Emitter { power: Float<1.0> [0.0 1.0]; }
property Plume { density: Float<0.85> [0.0 1.0]; age: Float<0.0> [0.0 1.0]; }
property Stone { hardness: Float<1.0> [0.0 1.0]; }
model Mist : Plume;
model Platform : Stone;
model Vent : Emitter;
world { dimensions 3; cell Cube; neighborhood VonNeumann; }
behavior EmitMist for Emitter { expand with Mist toward +Z { set target.density = self.power; set target.age = 0.0; } }
behavior MistRise for Plume { expand toward +Z when self.density > 0.24 && self.age < 0.20 { set target.density = self.density * 0.94; set target.age = 0.0; } }
behavior MistFade for Plume { update { set self.density = max(0.0, self.density - 0.018); set self.age = min(1.0, self.age + 0.055); } }
behavior MistCleanup for Plume { delete when self.age > 0.95 || self.density < 0.08; }
phase emission { run EmitMist on Vent; run MistRise on Mist; }
phase diffusion { run MistFade on Mist; }
phase cleanup { run MistCleanup on Mist; }
visual BlueVapor for Plume { color { rgba(0.12 + self.age * 0.38, 0.65 + self.density * 0.25, 1.0, 0.35 + self.density * 0.45) } }
visual Obsidian for Stone { color { rgba(0.10, 0.13, 0.20, 1.0) } }
visual Copper for Emitter { color { rgba(0.85, 0.45, 0.20, 1.0) } }
visualize Mist with BlueVapor;
visualize Platform with Obsidian;
visualize Vent with Copper;