From a7746deec53a9c4ec597289b7475abf5a13e1512 Mon Sep 17 00:00:00 2001 From: numzero Date: Thu, 20 Nov 2025 13:23:19 +0300 Subject: [PATCH] add basic interreflections --- src/lib.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 5d2fc5d..fa70501 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -242,6 +242,27 @@ impl Core { ]); } } + let mut hits2: Vec = Vec::with_capacity(hits.len()); + for hit in &hits { + let reflector = Lambertian; + let reflected = reflector.reflect(&mut prng, hit.normal, hit.incident.dir); + let ray = Ray::new(hit.incident.base, reflected); + let Some(hit2) = scene.trace_ray(ray) else { + continue; + }; + hits2.push(hit2); + source_ray_display.extend([ + Vertex { + pos: hit2.incident.base - 0.02 * hit2.incident.dir, + color: vec3(1., 0., 1.), + }, + Vertex { + pos: hit2.incident.base, + color: vec3(1., 1., 1.), + }, + ]); + } + hits.extend(hits2); let mut camera_ray_display: Vec = Vec::with_capacity(camera_rays.len()); let sigma2 = args.accum_sigma.powi(2); let accum_normalizator = (2. * PI * sigma2).sqrt().recip();