aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2021-08-24 23:54:02 +0200
committerYann Herklotz <git@yannherklotz.com>2021-08-24 23:54:02 +0200
commit5e7627d7df41ebd2e5ee2be3b0d856d54d083053 (patch)
tree3202e359cd1a86b0e4305a72cdfde28145a80670 /src
parent24d3f102e32bea0324d08b2f6a3e41fead5579cf (diff)
downloadleela-master.tar.gz
leela-master.zip
Update lock file and clean up main.rsHEADmaster
Diffstat (limited to 'src')
-rw-r--r--src/main.rs51
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;