#[macro_use] extern crate criterion; use criterion::Criterion; use criterion::ParameterizedBenchmark; use rtiow::hitable::Hit; use rtiow::material::Lambertian; use rtiow::ray::Ray; use rtiow::sphere::Sphere; use rtiow::texture::ConstantTexture; use rtiow::vec3::Vec3; fn criterion_benchmark(c: &mut Criterion) { let sphere = Sphere::new( Vec3::new(0., 0., 0.), 1., Lambertian::new(ConstantTexture::new([1., 0., 0.])), ); let rays = vec![ // Hit Ray::new([0., 0., -2.], [0., 0., 1.], 0.), // Miss Ray::new([0., 0., -2.], [0., 0., -1.], 0.), ]; c.bench( "sphere", ParameterizedBenchmark::new( "Sphere", move |b, r| b.iter(|| sphere.hit(*r, 0., 1.)), rays, ), ); } criterion_group!(benches, criterion_benchmark); criterion_main!(benches);