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();