Change Scene trait to account for material data

This commit is contained in:
hal8174 2025-08-22 21:48:07 +02:00
parent 76448ed442
commit 2bc5ec93fe
Signed by: hal8174
SSH key fingerprint: SHA256:NN98ZYwnrreQLSOV/g+amY7C3yL/mS1heD7bi5t6PPw
19 changed files with 306 additions and 124 deletions

View file

@ -36,13 +36,14 @@ struct Args {
}
fn render_image<
'sc,
R: ClassicalRenderer<SmallRng, S, C> + Sync,
S: Scene<SmallRng> + Sync,
C: Camera<SmallRng> + Sync,
>(
name: impl AsRef<str>,
renderer: &R,
scene: &S,
scene: &'sc S,
camera: &C,
samples_per_pixel: usize,
tev: &mut TevClient,
@ -108,7 +109,7 @@ fn render_image<
Ok(())
}
fn choose_renderer<S, C>(args: &Args, scene: &str, s: &S, c: &C, tev: &mut TevClient)
fn choose_renderer<'sc, S, C>(args: &Args, scene: &str, s: &'sc S, c: &C, tev: &mut TevClient)
where
S: Scene<SmallRng> + Sync,
C: Camera<SmallRng> + Sync,
@ -183,7 +184,7 @@ fn main() {
let mut client = TevClient::wrap(TcpStream::connect(&args.tev).unwrap());
let map = example_scenes();
let map = example_scenes::<SmallRng>();
let scenes: Vec<&str> = if args.pbrt_filename.is_none() {
if args.scenes.is_empty() {
@ -208,8 +209,14 @@ fn main() {
f.get_camera_up(),
f.get_horizontal_fov(),
);
choose_renderer(&args, scene, &s, &c, &mut client);
match &s {
ray_tracing_scene::examples::ExampleSceneEnum::AccelerationStructureScene(s) => {
choose_renderer(&args, scene, s, &c, &mut client);
}
ray_tracing_scene::examples::ExampleSceneEnum::TriangleBVH(s) => {
choose_renderer(&args, scene, s, &c, &mut client);
}
}
}
if let Some(pbrt_filename) = &args.pbrt_filename {