blob: 92ac166ca9890333194dd0a1e06fc0dbe083d454 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
use super::{Texture, perlin::Perlin};
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())
}
}
|