vanrijn/benches/simple_scene.rs

54 lines
1.6 KiB
Rust

use criterion::{criterion_group, criterion_main, Criterion};
use vanrijn::colour::{ColourRgbF, NamedColour, Spectrum};
use vanrijn::materials::ReflectiveMaterial;
use vanrijn::math::Vec3;
use vanrijn::mesh::load_obj;
use vanrijn::partial_render_scene;
use vanrijn::raycasting::BoundingVolumeHierarchy;
use vanrijn::scene::Scene;
use vanrijn::util::Tile;
use std::path::Path;
use std::sync::Arc;
fn simple_scene(bencher: &mut Criterion) {
let image_width = 6;
let image_height = 6;
let model_file_path =
Path::new(env!("CARGO_MANIFEST_DIR")).join("test_data/stanford_bunny.obj");
bencher.bench_function("simple_scene", |b| {
let scene = Scene {
camera_location: Vec3::new(-2.0, 1.0, -5.0),
objects: vec![Box::new(BoundingVolumeHierarchy::build(
load_obj(
&model_file_path,
Arc::new(ReflectiveMaterial {
colour: Spectrum::reflection_from_linear_rgb(&ColourRgbF::from_named(
NamedColour::Yellow,
)),
diffuse_strength: 0.05,
reflection_strength: 0.9,
}),
)
.unwrap()
.as_mut_slice(),
))],
};
b.iter(|| {
let tile = Tile {
start_column: 0,
end_column: image_width,
start_row: 0,
end_row: image_height,
};
partial_render_scene(&scene, tile, image_height, image_width);
})
});
}
criterion_group!(benches, simple_scene);
criterion_main!(benches);