diff options
author | Yann Herklotz <git@yannherklotz.com> | 2021-08-24 23:54:02 +0200 |
---|---|---|
committer | Yann Herklotz <git@yannherklotz.com> | 2021-08-24 23:54:02 +0200 |
commit | 5e7627d7df41ebd2e5ee2be3b0d856d54d083053 (patch) | |
tree | 3202e359cd1a86b0e4305a72cdfde28145a80670 /src | |
parent | 24d3f102e32bea0324d08b2f6a3e41fead5579cf (diff) | |
download | leela-5e7627d7df41ebd2e5ee2be3b0d856d54d083053.tar.gz leela-5e7627d7df41ebd2e5ee2be3b0d856d54d083053.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/src/main.rs b/src/main.rs index b014e4f..7bf4b8b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,3 @@ -use cgmath::prelude::*; -use cgmath::{vec3, Vector3}; -use rand::prelude::*; -use std::f64::consts::PI; - mod camera; mod hittable; mod material; @@ -12,15 +7,23 @@ mod scene; mod sphere; mod utils; +use cgmath::prelude::*; +use cgmath::{vec3, Vector3}; +use rand::prelude::*; +use std::f64::consts::PI; +use scene::Scene; +use sphere::Sphere; +use material::{Lambertian, Dielectric, Metal}; + pub fn random_scene(rng: &mut ThreadRng) -> scene::Scene { - let mut scene = scene::Scene::new(); + let mut scene = Scene::new(); - scene.add(Box::new(sphere::Sphere::new( + scene.add(Box::new(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))), + Box::new(Lambertian::new(vec3(0.5, 0.5, 0.5))), ))); for a in -11..11 { @@ -36,71 +39,71 @@ 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)); - let moving_center = center + vec3(0.0, rng.gen_range(0.0, 0.5), 0.0); - scene.add(Box::new(sphere::Sphere::new_moving( + let moving_center = center + vec3(0.0, rng.gen_range(0.0, 0.1), 0.0); + scene.add(Box::new(Sphere::new_moving( center, moving_center, 0.0, 1.0, 0.2, - Box::new(material::Lambertian::new(albedo)), + Box::new(Lambertian::new(albedo)), ))); } else if choose_mat < 0.95 { // metal let albedo = utils::random_vector3(rng, 0.5, 1.0); let fuzz = rng.gen_range(0.0, 0.5); - scene.add(Box::new(sphere::Sphere::new( + scene.add(Box::new(Sphere::new( center, 0.0, 1.0, 0.2, - Box::new(material::Metal::new(albedo, fuzz)), + Box::new(Metal::new(albedo, fuzz)), ))); } else { // glass - scene.add(Box::new(sphere::Sphere::new( + scene.add(Box::new(Sphere::new( center, 0.0, 1.0, 0.2, - Box::new(material::Dielectric::new(1.5)), + Box::new(Dielectric::new(1.5)), ))); } } } } - scene.add(Box::new(sphere::Sphere::new( + scene.add(Box::new(Sphere::new( vec3(0.0, 1.0, 0.0), 0.0, 1.0, 1.0, - Box::new(material::Dielectric::new(1.5)), + Box::new(Dielectric::new(1.5)), ))); - scene.add(Box::new(sphere::Sphere::new( + scene.add(Box::new(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))), + Box::new(Lambertian::new(vec3(0.4, 0.2, 0.1))), ))); - scene.add(Box::new(sphere::Sphere::new( + scene.add(Box::new(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)), + Box::new(Metal::new(vec3(0.7, 0.6, 0.5), 0.0)), ))); scene } fn main() { - let image_width = 800; - let image_height = 400; - let samples = 1000; + let image_width = 400; + let image_height = 200; + let samples = 100; let threads = 4; let max_depth = 50; let aspect_ratio = image_width as f64 / image_height as f64; |