diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index 3db5b97..b014e4f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,6 +17,8 @@ pub fn random_scene(rng: &mut ThreadRng) -> scene::Scene { scene.add(Box::new(sphere::Sphere::new( vec3(0.0, -1000.0, 0.0), + 0.0, + 1.0, 1000.0, Box::new(material::Lambertian::new(vec3(0.5, 0.5, 0.5))), ))); @@ -34,8 +36,12 @@ pub fn random_scene(rng: &mut ThreadRng) -> scene::Scene { // diffuse let albedo = utils::random_vector3(rng, 0.0, 1.0) .mul_element_wise(utils::random_vector3(rng, 0.0, 1.0)); - scene.add(Box::new(sphere::Sphere::new( + let moving_center = center + vec3(0.0, rng.gen_range(0.0, 0.5), 0.0); + scene.add(Box::new(sphere::Sphere::new_moving( center, + moving_center, + 0.0, + 1.0, 0.2, Box::new(material::Lambertian::new(albedo)), ))); @@ -45,6 +51,8 @@ pub fn random_scene(rng: &mut ThreadRng) -> scene::Scene { let fuzz = rng.gen_range(0.0, 0.5); scene.add(Box::new(sphere::Sphere::new( center, + 0.0, + 1.0, 0.2, Box::new(material::Metal::new(albedo, fuzz)), ))); @@ -52,6 +60,8 @@ pub fn random_scene(rng: &mut ThreadRng) -> scene::Scene { // glass scene.add(Box::new(sphere::Sphere::new( center, + 0.0, + 1.0, 0.2, Box::new(material::Dielectric::new(1.5)), ))); @@ -62,18 +72,24 @@ pub fn random_scene(rng: &mut ThreadRng) -> scene::Scene { scene.add(Box::new(sphere::Sphere::new( vec3(0.0, 1.0, 0.0), + 0.0, + 1.0, 1.0, Box::new(material::Dielectric::new(1.5)), ))); scene.add(Box::new(sphere::Sphere::new( vec3(-4.0, 1.0, 0.0), + 0.0, + 1.0, 1.0, Box::new(material::Lambertian::new(vec3(0.4, 0.2, 0.1))), ))); scene.add(Box::new(sphere::Sphere::new( vec3(4.0, 1.0, 0.0), + 0.0, + 1.0, 1.0, Box::new(material::Metal::new(vec3(0.7, 0.6, 0.5), 0.0)), ))); @@ -82,9 +98,9 @@ pub fn random_scene(rng: &mut ThreadRng) -> scene::Scene { } fn main() { - let image_width = 400; - let image_height = 200; - let samples = 400; + let image_width = 800; + let image_height = 400; + let samples = 1000; let threads = 4; let max_depth = 50; let aspect_ratio = image_width as f64 / image_height as f64; |