Use CheckerTexture for ground in book scene.

This commit is contained in:
Bill Thiede 2018-09-22 20:32:21 -07:00
parent 96d49e685f
commit 4206ad7289

View File

@ -11,7 +11,9 @@ use material::Metal;
use renderer::Opt;
use renderer::Scene;
use sphere::Sphere;
use texture::CheckerTexture;
use texture::ConstantTexture;
use texture::Texture;
use vec3::Vec3;
pub fn new(opt: &Opt) -> Scene {
@ -51,14 +53,22 @@ pub fn new(opt: &Opt) -> Scene {
}
}
fn random_scene(background_color: Vec3) -> Vec<Box<Hit>> {
fn random_scene(ground_color: Vec3) -> Vec<Box<Hit>> {
let mut rng = rand::thread_rng();
let checker = true;
let ground_texture: Box<Texture> = if checker {
Box::new(CheckerTexture::new(
Box::new(ConstantTexture::new(Vec3::new(0., 0., 0.))),
Box::new(ConstantTexture::new(ground_color)),
))
} else {
Box::new(ConstantTexture::new(ground_color))
};
let mut objects: Vec<Box<Hit>> = vec![Box::new(Sphere::new(
Vec3::new(0., -1000., 0.),
1000.,
Box::new(Lambertian::new(Box::new(ConstantTexture::new(
background_color,
)))),
Box::new(Lambertian::new(ground_texture)),
))];
let mut random = || rng.gen_range::<f32>(0., 1.);