use super::{perlin::Perlin, Texture}; use crate::{vec3::Color, vec3::Point3}; pub struct NoiseTexture { noise: Perlin, scale: f64, } impl NoiseTexture { pub fn new(scale: f64) -> Self { Self { noise: Perlin::new(), scale, } } } impl Texture for NoiseTexture { fn value(&self, _: f64, _: f64, p: &Point3) -> Color { Color { x: 1.0, y: 1.0, z: 1.0, } * 0.5 * (1.0 + (self.scale * p.z + 10.0 * self.noise.turb(p, 7)).sin()) } }