diff --git a/rtiow/renderer/src/bvh_triangles.rs b/rtiow/renderer/src/bvh_triangles.rs index 6ba1434..c8d1fa2 100644 --- a/rtiow/renderer/src/bvh_triangles.rs +++ b/rtiow/renderer/src/bvh_triangles.rs @@ -320,19 +320,31 @@ mod tests { //Metal::new(Vec3::new(0.8, 0.8, 0.8), 0.2), //Lambertian::new(ConstantTexture::new(Vec3::new(1.0, 0.2, 0.2))), ); - let rays = [ - Ray::new([-1., 1., 1.], [1., 0., 0.], 0.), - Ray::new([21., 1., 1.], [-1., 0., 0.], 0.), - Ray::new([1., -1., 1.], [0., 1., 0.], 0.), - Ray::new([1., 21., 1.], [0., -1., 0.], 0.), - Ray::new([1., 1., -1.], [0., 0., 1.], 0.), - Ray::new([1., 1., 21.], [0., 0., -1.], 0.), - // TODO more - ]; + let rays: Vec<_> = (1..20) + .flat_map(|y| { + (1..20).flat_map(move |x| { + let x = x as f32; + let y = y as f32; + vec![ + Ray::new([-1., x, y], [1., 0., 0.], 0.), + Ray::new([21., x, y], [-1., 0., 0.], 0.), + Ray::new([x, -1., y], [0., 1., 0.], 0.), + Ray::new([x, 21., y], [0., -1., 0.], 0.), + Ray::new([x, y, -1.], [0., 0., 1.], 0.), + Ray::new([x, y, 21.], [0., 0., -1.], 0.), + ] + .into_iter() + }) + }) + .collect(); for (i, r) in rays.into_iter().enumerate() { - let c_hit = c.hit(r, 0., f32::MAX).expect("c_hit missed"); - let s_hit = s.hit(r, 0., f32::MAX).expect("s_hit missed"); + let c_hit = c + .hit(r, 0., f32::MAX) + .expect(&format!("c_hit missed {i}: {r:?}")); + let s_hit = s + .hit(r, 0., f32::MAX) + .expect(&format!("s_hit missed {i}: {r:?}")); assert_eq!( c_hit.t, s_hit.t, "{i}: [t] c_hit: {c_hit:?}, s_hit: {s_hit:?}"