ft: 10: metals
This commit is contained in:
19
src/main.rs
19
src/main.rs
@@ -5,7 +5,10 @@ mod objects;
|
||||
mod ray;
|
||||
mod vec3;
|
||||
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::camera::Camera;
|
||||
use crate::objects::materials::lambertian::{Lambertian, Metal};
|
||||
use crate::objects::sphere::Sphere;
|
||||
use crate::ray::Ray;
|
||||
use crate::vec3::Vec3;
|
||||
@@ -15,10 +18,18 @@ fn main() {
|
||||
pretty_env_logger::init();
|
||||
|
||||
// setup objects
|
||||
let mut world = vec![Sphere::new(Vec3::new(0., 0., -1.), 0.5)];
|
||||
world.push(Sphere::new(Vec3::new(0., 0., -0.1), 0.01));
|
||||
world.push(Sphere::new(Vec3::new(0., -100.5, -1.), 100.));
|
||||
let metal = Arc::new(Metal::rgb(0.7, 0.4, 0.2, 1., 0.1));
|
||||
let ground = Arc::new(Lambertian::rgb(0.8, 0.8, 0., 1.0));
|
||||
let center = Arc::new(Lambertian::rgb(0.1, 0.2, 0.5, 1.));
|
||||
let left = Arc::new(Metal::rgb(0.8, 0.8, 0.8, 1., 0.3));
|
||||
let right = Arc::new(Metal::rgb(0.8, 0.6, 0.2, 1., 1.0));
|
||||
|
||||
let c = Camera::new_aa(16. / 9., 400, 3);
|
||||
let mut world = vec![Sphere::xyz(0., 0.5, -0.8, 0.1, metal.clone())];
|
||||
world.push(Sphere::xyz(0., -100.5, -1., 100., ground.clone()));
|
||||
world.push(Sphere::xyz(0., 0., -1.2, 0.5, center.clone()));
|
||||
world.push(Sphere::xyz(-1., 0., -1.0, 0.5, left.clone()));
|
||||
world.push(Sphere::xyz(1., 0., -1.0, 0.5, right.clone()));
|
||||
|
||||
let c = Camera::new(16. / 9., 800, 2, 50);
|
||||
c.render(&world);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user