Compare commits
2 commits
b73b1209e4
...
5857244ca8
| Author | SHA1 | Date | |
|---|---|---|---|
| 5857244ca8 | |||
| 63d4cbb042 |
4 changed files with 4 additions and 60 deletions
52
Cargo.lock
generated
52
Cargo.lock
generated
|
|
@ -40,37 +40,6 @@ dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crossbeam-deque"
|
|
||||||
version = "0.8.6"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
|
|
||||||
dependencies = [
|
|
||||||
"crossbeam-epoch",
|
|
||||||
"crossbeam-utils",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crossbeam-epoch"
|
|
||||||
version = "0.9.18"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
|
|
||||||
dependencies = [
|
|
||||||
"crossbeam-utils",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crossbeam-utils"
|
|
||||||
version = "0.8.21"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "either"
|
|
||||||
version = "1.15.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "equivalent"
|
name = "equivalent"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
|
|
@ -217,32 +186,11 @@ version = "0.10.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba"
|
checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rayon"
|
|
||||||
version = "1.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
|
|
||||||
dependencies = [
|
|
||||||
"either",
|
|
||||||
"rayon-core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rayon-core"
|
|
||||||
version = "1.13.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
|
|
||||||
dependencies = [
|
|
||||||
"crossbeam-deque",
|
|
||||||
"crossbeam-utils",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rust-ray"
|
name = "rust-ray"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rand",
|
"rand",
|
||||||
"rayon",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
||||||
|
|
@ -5,4 +5,3 @@ edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rand = "0.10.0"
|
rand = "0.10.0"
|
||||||
rayon = "1.11.0"
|
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,9 @@ use std::sync::Arc;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let aspect_ratio = 16.0 / 9.0;
|
let aspect_ratio = 16.0 / 9.0;
|
||||||
let image_width = 800;
|
let image_width = 1920;
|
||||||
let focal_length = 1.0;
|
let focal_length = 1.0;
|
||||||
let viewport_height = 2.0;
|
let viewport_height = 2.0;
|
||||||
let camera_center = Point3::new(0.0, 0.0, 0.0);
|
|
||||||
|
|
||||||
|
|
||||||
let m = Lambertian::new(Vec3::new(0.5,0.5,0.5));
|
let m = Lambertian::new(Vec3::new(0.5,0.5,0.5));
|
||||||
let world_m: Arc <dyn Material> = Arc::new(m);
|
let world_m: Arc <dyn Material> = Arc::new(m);
|
||||||
|
|
@ -29,11 +27,10 @@ fn main() {
|
||||||
let m = Metal::new(Vec3::new(0.8, 0.8, 0.8), 0.3);
|
let m = Metal::new(Vec3::new(0.8, 0.8, 0.8), 0.3);
|
||||||
let left_m: Arc <dyn Material> = Arc::new(m);
|
let left_m: Arc <dyn Material> = Arc::new(m);
|
||||||
|
|
||||||
|
|
||||||
let m = Metal::new(Vec3::new(0.8, 0.6, 0.2), 0.5);
|
let m = Metal::new(Vec3::new(0.8, 0.6, 0.2), 0.5);
|
||||||
let right_m: Arc <dyn Material> = Arc::new(m);
|
let right_m: Arc <dyn Material> = Arc::new(m);
|
||||||
|
|
||||||
let mut camera = Camera::new(aspect_ratio,image_width,focal_length,Point3::new(-2.0,2.0,1.0),Point3::new(0.0,0.0,-1.0),90.0);
|
let mut camera = Camera::new(aspect_ratio,image_width,focal_length,Point3::new(-1.0,1.0,1.0),Point3::new(0.0,0.0,-1.0),90.0);
|
||||||
let mut world = World::new();
|
let mut world = World::new();
|
||||||
world.add(Sphere::new(0.5, Point3::new(0.0, 0.0, -1.0),center_m));
|
world.add(Sphere::new(0.5, Point3::new(0.0, 0.0, -1.0),center_m));
|
||||||
world.add(Sphere::new(0.5, Point3::new(-1.0, 0.0, -1.0),left_m));
|
world.add(Sphere::new(0.5, Point3::new(-1.0, 0.0, -1.0),left_m));
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ impl Camera {
|
||||||
let height = self.img.height;
|
let height = self.img.height;
|
||||||
let width = self.img.width;
|
let width = self.img.width;
|
||||||
let total_pixels = height*width;
|
let total_pixels = height*width;
|
||||||
let num_samples = 5;
|
let num_samples = 25;
|
||||||
|
|
||||||
//cast to const ref
|
//cast to const ref
|
||||||
let const_self = &*self;
|
let const_self = &*self;
|
||||||
|
|
@ -97,8 +97,8 @@ impl Camera {
|
||||||
let x = i%width;
|
let x = i%width;
|
||||||
let y = i/width;
|
let y = i/width;
|
||||||
let (mut r,mut g,mut b) = (0.0,0.0,0.0);
|
let (mut r,mut g,mut b) = (0.0,0.0,0.0);
|
||||||
let ray = const_self.get_ray(x,y,&mut rng);
|
|
||||||
for _ in 0..num_samples{
|
for _ in 0..num_samples{
|
||||||
|
let ray = const_self.get_ray(x,y,&mut rng);
|
||||||
let (tr,tg,tb) = trace(ray, &world,10,&mut rng);
|
let (tr,tg,tb) = trace(ray, &world,10,&mut rng);
|
||||||
r+=tr;
|
r+=tr;
|
||||||
g+=tg;
|
g+=tg;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue