From 05add1efca3f92425cfad4fc0edb50c52940a146 Mon Sep 17 00:00:00 2001 From: Robert Garrett Date: Sat, 1 Mar 2025 12:57:57 -0600 Subject: [PATCH] Fix imports and Uniform creation usage in rand Rand v0.9 made the `Uniform::new()` function fallible, but I'm going to keep assuming these always work and just `.unwrap()` the Result. It also renamed the distribution module, for some reason. --- src/primitives.rs | 8 ++++---- src/scene.rs | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/primitives.rs b/src/primitives.rs index d8ca0f9..0f6c774 100644 --- a/src/primitives.rs +++ b/src/primitives.rs @@ -15,7 +15,7 @@ use std::fmt::Display; use rand::Rng; use rand::rngs::SmallRng; -use rand::distributions::Uniform; +use rand::distr::Uniform; pub type Vec2i = Vec2; pub type Vec2f = Vec2; @@ -144,7 +144,7 @@ impl Vec3{ } pub fn rand_in_unit_sphere(srng: &mut SmallRng) -> Vec3 { - let distrib = Uniform::new(-1.0, 1.0); + let distrib = Uniform::new(-1.0, 1.0).unwrap(); loop { let p = Vec3::rand(srng, distrib); if p.length_squared() >= 1.0 { continue; } @@ -156,8 +156,8 @@ impl Vec3{ let distrib = Uniform::new(-1.0, 1.0); loop { let p = Vec3 { - x: srng.sample(distrib), - y: srng.sample(distrib), + x: srng.sample(distrib.unwrap()), + y: srng.sample(distrib.unwrap()), z: 0.0, }; if p.length_squared() >= 1.0 { continue; } diff --git a/src/scene.rs b/src/scene.rs index 17a9432..af36213 100644 --- a/src/scene.rs +++ b/src/scene.rs @@ -3,7 +3,7 @@ use crate::primitives::{Vec3, Ray}; use rand::Rng; use rand::rngs::SmallRng; -use rand::distributions::Uniform; +use rand::distr::Uniform; pub struct HitRecord{ pub p: Vec3, @@ -140,7 +140,7 @@ impl Material { let sin_theta = (1.0 - cos_theta * cos_theta).sqrt(); let cannot_refract = refraction_ratio * sin_theta > 1.0; - let distrib_zero_one = Uniform::new(0.0, 1.0); + let distrib_zero_one = Uniform::new(0.0, 1.0).unwrap(); let direction = if cannot_refract || Material::reflectance(cos_theta, refraction_ratio) > srng.sample(distrib_zero_one) { Vec3::reflect(unit_direction, rec.normal) } else { @@ -240,7 +240,7 @@ impl Scene { world.push( Hittable::Sphere { center: Vec3::new(0.0, -1000.0, 0.0), radius: 1000.0, material: mat_ground }); - let distrib_zero_one = Uniform::new(0.0, 1.0); + let distrib_zero_one = Uniform::new(0.0, 1.0).unwrap(); for a in -11..11 { for b in -11..11 { let choose_mat = srng.sample(distrib_zero_one); @@ -264,8 +264,8 @@ impl Scene { ); } else if choose_mat < 0.95 { // metal - let distr_albedo = Uniform::new(0.5, 1.0); - let distr_fuzz = Uniform::new(0.0, 0.5); + let distr_albedo = Uniform::new(0.5, 1.0).unwrap(); + let distr_fuzz = Uniform::new(0.0, 0.5).unwrap(); let albedo = Vec3::rand(srng, distr_albedo); let fuzz = srng.sample(distr_fuzz);