aboutsummaryrefslogtreecommitdiffstats
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
parent24d3f102e32bea0324d08b2f6a3e41fead5579cf (diff)
downloadleela-master.tar.gz
leela-master.zip
Update lock file and clean up main.rsHEADmaster
-rw-r--r--Cargo.lock71
-rw-r--r--src/main.rs51
2 files changed, 59 insertions, 63 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 20543d2..6a3335e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,5 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
+version = 3
+
[[package]]
name = "approx"
version = "0.3.2"
@@ -23,15 +25,15 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
[[package]]
name = "bitflags"
-version = "1.2.1"
+version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "cfg-if"
-version = "0.1.10"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "cgmath"
@@ -55,47 +57,44 @@ dependencies = [
[[package]]
name = "crossbeam-channel"
-version = "0.4.4"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87"
+checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4"
dependencies = [
+ "cfg-if",
"crossbeam-utils",
- "maybe-uninit",
]
[[package]]
name = "crossbeam-deque"
-version = "0.7.3"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285"
+checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
dependencies = [
+ "cfg-if",
"crossbeam-epoch",
"crossbeam-utils",
- "maybe-uninit",
]
[[package]]
name = "crossbeam-epoch"
-version = "0.8.2"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"
+checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd"
dependencies = [
- "autocfg 1.0.1",
"cfg-if",
"crossbeam-utils",
"lazy_static",
- "maybe-uninit",
"memoffset",
"scopeguard",
]
[[package]]
name = "crossbeam-utils"
-version = "0.7.2"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
+checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"
dependencies = [
- "autocfg 1.0.1",
"cfg-if",
"lazy_static",
]
@@ -114,9 +113,9 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
[[package]]
name = "getrandom"
-version = "0.1.15"
+version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
dependencies = [
"cfg-if",
"libc",
@@ -125,9 +124,9 @@ dependencies = [
[[package]]
name = "hermit-abi"
-version = "0.1.16"
+version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c30f6d0bc6b00693347368a67d41b58f2fb851215ff1da49e90fe2c5c667151"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
@@ -149,30 +148,24 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.77"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235"
-
-[[package]]
-name = "maybe-uninit"
-version = "2.0.0"
+version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
+checksum = "a1fa8cddc8fbbee11227ef194b5317ed014b8acbf15139bd716a18ad3fe99ec5"
[[package]]
name = "memoffset"
-version = "0.5.6"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa"
+checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9"
dependencies = [
"autocfg 1.0.1",
]
[[package]]
name = "num-traits"
-version = "0.2.12"
+version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611"
+checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
dependencies = [
"autocfg 1.0.1",
]
@@ -189,9 +182,9 @@ dependencies = [
[[package]]
name = "ppv-lite86"
-version = "0.2.9"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20"
+checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
[[package]]
name = "rand"
@@ -342,9 +335,9 @@ dependencies = [
[[package]]
name = "rayon"
-version = "1.4.0"
+version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfd016f0c045ad38b5251be2c9c0ab806917f82da4d36b2a327e5166adad9270"
+checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
dependencies = [
"autocfg 1.0.1",
"crossbeam-deque",
@@ -354,9 +347,9 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.8.1"
+version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8c4fec834fb6e6d2dd5eece3c7b432a52f0ba887cf40e595190c4107edc08bf"
+checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
dependencies = [
"crossbeam-channel",
"crossbeam-deque",
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;