From 5e7627d7df41ebd2e5ee2be3b0d856d54d083053 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Tue, 24 Aug 2021 23:54:02 +0200 Subject: Update lock file and clean up main.rs --- Cargo.lock | 71 ++++++++++++++++++++++++++++--------------------------------- src/main.rs | 51 +++++++++++++++++++++++--------------------- 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; -- cgit