Add initial MIS implementation

This commit is contained in:
hal8174 2025-01-05 23:52:41 +01:00
parent ba2d853319
commit d43d60bb85
10 changed files with 161 additions and 3 deletions

View file

@ -7,7 +7,7 @@ use ray_tracing_core::{
scene::Scene,
};
use ray_tracing_renderer::{
depth_renderer::DepthRenderer, next_event_estimation::NextEventEstimation,
depth_renderer::DepthRenderer, mis::MIS, next_event_estimation::NextEventEstimation,
path_tracer::PathTracer, path_tracer_importance::PathTracerImportance,
};
use ray_tracing_scene::examples::example_scenes;
@ -42,6 +42,7 @@ fn render_image<
) -> Result<(), TevError> {
let mut data = vec![0.0; (renderer.width() * renderer.height() * 3) as usize];
let start = std::time::Instant::now();
data.par_chunks_mut(3).enumerate().for_each(|(i, c)| {
let x = (i % renderer.width() as usize) as u32;
let y = (i / renderer.width() as usize) as u32;
@ -55,6 +56,7 @@ fn render_image<
c[2] += r.b();
}
});
println!("Rendered \"{}\" in {:?}", name.as_ref(), start.elapsed());
let channel_names = &["r", "g", "b"];
@ -152,5 +154,16 @@ fn main() {
&mut client,
)
.unwrap();
let r = MIS::new(args.width, args.height);
render_image(
format!("{scene} - mis"),
&r,
&s,
&c,
args.samples_per_pixel,
&mut client,
)
.unwrap();
}
}