Version bump rand

This commit is contained in:
Bill Thiede 2021-05-31 10:10:45 -07:00
parent 9dcb36612d
commit bf8b533b15
13 changed files with 1179 additions and 1127 deletions

2243
rtiow/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -17,7 +17,7 @@ image = "0.22.3"
lazy_static = "1.1.0" lazy_static = "1.1.0"
log = "0.4.5" log = "0.4.5"
num_cpus = "1.8.0" num_cpus = "1.8.0"
rand = "0.5.5" rand = "0.8.3"
serde = "1.0.79" serde = "1.0.79"
serde_derive = "1.0.79" serde_derive = "1.0.79"
serde_json = "1.0.41" serde_json = "1.0.41"

View File

@ -106,7 +106,7 @@ impl BVHNode {
} else { } else {
let mut l: Vec<Box<dyn Hit>> = l.into_iter().collect(); let mut l: Vec<Box<dyn Hit>> = l.into_iter().collect();
let mut rng = rand::thread_rng(); let mut rng = rand::thread_rng();
match rng.gen_range(0, 3) { match rng.gen_range(0..3) {
0 => l.sort_by(box_x_compare), 0 => l.sort_by(box_x_compare),
1 => l.sort_by(box_y_compare), 1 => l.sort_by(box_y_compare),
2 => l.sort_by(box_z_compare), 2 => l.sort_by(box_z_compare),

View File

@ -11,7 +11,7 @@ fn random_in_unit_disk() -> Vec3 {
let mut rng = rand::thread_rng(); let mut rng = rand::thread_rng();
let v = Vec3::new(1., 1., 0.); let v = Vec3::new(1., 1., 0.);
loop { loop {
let p = 2. * Vec3::new(rng.gen_range(0., 1.), rng.gen_range(0., 1.), 0.) - v; let p = 2. * Vec3::new(rng.gen(), rng.gen(), 0.) - v;
if p.squared_length() < 1. { if p.squared_length() < 1. {
return p; return p;
} }
@ -72,7 +72,7 @@ impl Camera {
let mut rng = rand::thread_rng(); let mut rng = rand::thread_rng();
let rd = self.lens_radius * random_in_unit_disk(); let rd = self.lens_radius * random_in_unit_disk();
let offset = self.u * rd.x + self.v * rd.y; let offset = self.u * rd.x + self.v * rd.y;
let time = self.time_min + rng.gen_range(0., 1.) * (self.time_max - self.time_min); let time = self.time_min + rng.gen::<f32>() * (self.time_max - self.time_min);
Ray::new( Ray::new(
self.origin + offset, self.origin + offset,
self.lower_left_corner + self.horizontal * u + self.vertical * v - self.origin - offset, self.lower_left_corner + self.horizontal * u + self.vertical * v - self.origin - offset,

View File

@ -60,15 +60,10 @@ where
rec1.t = 0.; rec1.t = 0.;
} }
let distance_inside_boundary = (rec2.t - rec1.t) * r.direction.length(); let distance_inside_boundary = (rec2.t - rec1.t) * r.direction.length();
let hit_distance = -(1. / self.density) * rng.gen_range::<f32>(0., 1.).ln(); let hit_distance: f32 = -(1. / self.density) * rng.gen::<f32>().ln();
if hit_distance < distance_inside_boundary { if hit_distance < distance_inside_boundary {
let t = rec1.t + hit_distance / r.direction.length(); let t = rec1.t + hit_distance / r.direction.length();
let normal = Vec3::new( let normal = Vec3::new(rng.gen(), rng.gen(), rng.gen()).unit_vector();
rng.gen_range(0., 1.),
rng.gen_range(0., 1.),
rng.gen_range(0., 1.),
)
.unit_vector();
return Some(HitRecord { return Some(HitRecord {
t, t,
p: r.point_at_parameter(t), p: r.point_at_parameter(t),

View File

@ -13,12 +13,7 @@ fn random_in_unit_sphere() -> Vec3 {
let mut rng = rand::thread_rng(); let mut rng = rand::thread_rng();
let v = Vec3::new(1., 1., 1.); let v = Vec3::new(1., 1., 1.);
loop { loop {
let p = let p = 2. * Vec3::new(rng.gen(), rng.gen(), rng.gen()) - v;
2. * Vec3::new(
rng.gen_range(0., 1.),
rng.gen_range(0., 1.),
rng.gen_range(0., 1.),
) - v;
if p.squared_length() < 1. { if p.squared_length() < 1. {
return p; return p;
} }
@ -201,7 +196,7 @@ impl Material for Dielectric {
let scattered = if let Some(refracted) = refract(r_in.direction, outward_normal, ni_over_nt) let scattered = if let Some(refracted) = refract(r_in.direction, outward_normal, ni_over_nt)
{ {
let mut rng = rand::thread_rng(); let mut rng = rand::thread_rng();
if rng.gen_range(0., 1.) < schlick(cosine, self.ref_idx) { if rng.gen::<f32>() < schlick(cosine, self.ref_idx) {
Ray::new(rec.p, reflected, r_in.time) Ray::new(rec.p, reflected, r_in.time)
} else { } else {
Ray::new(rec.p, refracted, r_in.time) Ray::new(rec.p, refracted, r_in.time)

View File

@ -22,7 +22,7 @@ impl Lode {
for x in 0..NOISE_SIZE { for x in 0..NOISE_SIZE {
for y in 0..NOISE_SIZE { for y in 0..NOISE_SIZE {
for z in 0..NOISE_SIZE { for z in 0..NOISE_SIZE {
noise[x][y][z] = rng.gen_range(0., 1.); noise[x][y][z] = rng.gen();
} }
} }
} }

View File

@ -1,6 +1,7 @@
// There are many math functions in this file, so we allow single letter variable names. // There are many math functions in this file, so we allow single letter variable names.
#![allow(clippy::many_single_char_names)] #![allow(clippy::many_single_char_names)]
use log::trace; use log::trace;
use rand::seq::SliceRandom;
use rand::Rng; use rand::Rng;
use crate::noise::NoiseSource; use crate::noise::NoiseSource;
@ -21,9 +22,9 @@ where
(0..256) (0..256)
.map(|_| { .map(|_| {
Vec3::new( Vec3::new(
rng.gen_range(-1., 1.), rng.gen_range(-1. ..1.),
rng.gen_range(-1., 1.), rng.gen_range(-1. ..1.),
rng.gen_range(-1., 1.), rng.gen_range(-1. ..1.),
) )
.unit_vector() .unit_vector()
}) })
@ -35,7 +36,7 @@ where
R: Rng, R: Rng,
{ {
let mut p: Vec<usize> = (0..256).map(|i| i).collect(); let mut p: Vec<usize> = (0..256).map(|i| i).collect();
rng.shuffle(&mut p); p.shuffle(rng);
p p
} }

View File

@ -366,8 +366,8 @@ fn trace_pixel_adaptive(
fn trace_pixel_random(x: usize, y: usize, scene: &Scene) -> (Vec3, usize) { fn trace_pixel_random(x: usize, y: usize, scene: &Scene) -> (Vec3, usize) {
let mut rng = rand::thread_rng(); let mut rng = rand::thread_rng();
let u = (rng.gen_range(0., 1.) + x as f32) / scene.width as f32; let u = (rng.gen::<f32>() + x as f32) / scene.width as f32;
let v = (rng.gen_range(0., 1.) + y as f32) / scene.height as f32; let v = (rng.gen::<f32>() + y as f32) / scene.height as f32;
let ray = scene.camera.get_ray(u, v); let ray = scene.camera.get_ray(u, v);
color( color(
ray, ray,

View File

@ -37,12 +37,12 @@ pub fn new(opt: &Opt) -> Scene {
let len = 1000; let len = 1000;
for x in 0..len { for x in 0..len {
for z in 0..len { for z in 0..len {
let r = rng.gen_range(0., 1.); let r = rng.gen();
let g = rng.gen_range(0., 1.); let g = rng.gen();
let b = rng.gen_range(0., 1.); let b = rng.gen();
let x_pos = (x - len / 2) as f32 + rng.gen_range(-0.1, 0.1); let x_pos = (x - len / 2) as f32 + rng.gen_range(-0.1..0.1);
let z_pos = (z - len / 2) as f32 + rng.gen_range(-0.1, 0.1); let z_pos = (z - len / 2) as f32 + rng.gen_range(-0.1..0.1);
grid.push(Box::new(Sphere::new( grid.push(Box::new(Sphere::new(
Vec3::new(x_pos, 0., z_pos), Vec3::new(x_pos, 0., z_pos),

View File

@ -81,7 +81,7 @@ where
1000., 1000.,
ground_material, ground_material,
))]; ))];
let mut random = || rng.gen_range(0., 1.); let mut random = || rng.gen::<f32>();
for a in -11..11 { for a in -11..11 {
for b in -11..11 { for b in -11..11 {

View File

@ -64,7 +64,7 @@ pub fn new(opt: &Opt) -> Scene {
let z0 = -1000. + j as f32 * w; let z0 = -1000. + j as f32 * w;
let y0 = 0.; let y0 = 0.;
let x1 = x0 + w; let x1 = x0 + w;
let y1 = 100. * (rng.gen_range(0., 1.) + 0.01); let y1 = 100. * (rng.gen::<f32>() + 0.01);
let z1 = z0 + w; let z1 = z0 + w;
boxlist.push(Box::new(Cuboid::new( boxlist.push(Box::new(Cuboid::new(
Vec3::new(x0, y0, z0), Vec3::new(x0, y0, z0),
@ -152,9 +152,9 @@ pub fn new(opt: &Opt) -> Scene {
for _ in 0..ns { for _ in 0..ns {
boxlist.push(Box::new(Sphere::new( boxlist.push(Box::new(Sphere::new(
[ [
165. * rng.gen_range(0., 1.), 165. * rng.gen::<f32>(),
165. * rng.gen_range(0., 1.), 165. * rng.gen::<f32>(),
165. * rng.gen_range(0., 1.), 165. * rng.gen::<f32>(),
], ],
10., 10.,
Arc::clone(&white), Arc::clone(&white),

View File

@ -33,7 +33,7 @@ fn hsv_to_rgb(h: f32, s: f32, v: f32) -> Vec3 {
fn generate_palette(num: usize) -> Vec<Vec3> { fn generate_palette(num: usize) -> Vec<Vec3> {
let mut rng = rand::thread_rng(); let mut rng = rand::thread_rng();
let mut random = || rng.gen_range(0.0, 0.1); let mut random = || rng.gen();
// use golden ratio // use golden ratio
let golden_ratio_conjugate = 0.618_034; let golden_ratio_conjugate = 0.618_034;
let mut h = random(); let mut h = random();