extern crate noise;
use noise::{utils::*, *};
mod utils;
fn main() {
let primary_jade = RidgedMulti::<Perlin>::new(0)
.set_frequency(2.0)
.set_lacunarity(2.20703125)
.set_octaves(6);
let base_secondary_jade = Cylinders::new().set_frequency(2.0);
let rotated_base_secondary_jade =
RotatePoint::new(base_secondary_jade).set_angles(90.0, 25.0, 5.0, 0.0);
let perturbed_base_secondary_jade = Turbulence::<_, Perlin>::new(rotated_base_secondary_jade)
.set_seed(1)
.set_frequency(4.0)
.set_power(1.0 / 4.0)
.set_roughness(4);
let secondary_jade = ScaleBias::new(perturbed_base_secondary_jade)
.set_scale(0.25)
.set_bias(0.0);
let combined_jade = Add::new(primary_jade, secondary_jade);
let final_jade = Turbulence::<_, Perlin>::new(combined_jade)
.set_seed(2)
.set_frequency(4.0)
.set_power(1.0 / 16.0)
.set_roughness(2);
let planar_texture = PlaneMapBuilder::new(&final_jade)
.set_size(1024, 1024)
.build();
let seamless_texture = PlaneMapBuilder::new(final_jade)
.set_size(1024, 1024)
.set_is_seamless(true)
.build();
let jade_gradient = ColorGradient::new()
.clear_gradient()
.add_gradient_point(-1.000, [24, 146, 102, 255])
.add_gradient_point(0.000, [78, 154, 115, 255])
.add_gradient_point(0.250, [128, 204, 165, 255])
.add_gradient_point(0.375, [78, 154, 115, 255])
.add_gradient_point(1.000, [29, 135, 102, 255]);
let mut renderer = ImageRenderer::new().set_gradient(jade_gradient);
utils::write_image_to_file(&renderer.render(&planar_texture), "texture_jade_planar.png");
utils::write_image_to_file(
&renderer.render(&seamless_texture),
"texture_jade_seamless.png",
);
}