Version bump rand
This commit is contained in:
parent
9dcb36612d
commit
bf8b533b15
2243
rtiow/Cargo.lock
generated
2243
rtiow/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -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"
|
||||||
|
|||||||
@ -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),
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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),
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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),
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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),
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user