use noise::{NoiseFn, Seedable, SuperSimplex, Turbulence}; use vek::*; const W: usize = 640; const H: usize = 640; fn main() { let mut win = minifb::Window::new("Turb", W, H, minifb::WindowOptions::default()).unwrap(); let nz = Turbulence::new( Turbulence::new(SuperSimplex::new()) .set_frequency(0.2) .set_power(1.5), ) .set_frequency(2.0) .set_power(0.2); let _nz_x = SuperSimplex::new().set_seed(0); let _nz_y = SuperSimplex::new().set_seed(1); let mut _time = 0.0f64; let mut scale = 50.0; while win.is_open() { let mut buf = vec![0; W * H]; for i in 0..W { for j in 0..H { let pos = Vec2::new(i as f64, j as f64) / scale; let val = nz.get(pos.into_array()); buf[j * W + i] = u32::from_le_bytes([(val.clamp(0.0, 1.0) * 255.0) as u8; 4]); } } if win.is_key_pressed(minifb::Key::Right, minifb::KeyRepeat::No) { scale *= 1.5; } else if win.is_key_pressed(minifb::Key::Left, minifb::KeyRepeat::No) { scale /= 1.5; } win.update_with_buffer(&buf, W, H).unwrap(); _time += 1.0 / 60.0; } }