pub mod base; pub mod constants; pub mod path; pub mod pipeline; pub mod state; pub use path::PathIntegrator; use crate::Arena; use shared::core::film::VisibleSurface; use shared::core::geometry::{Point2i, Ray}; use shared::core::sampler::Sampler; use shared::spectra::{SampledSpectrum, SampledWavelengths}; pub trait IntegratorTrait { fn render(&self); } pub trait RayIntegratorTrait { fn evaluate_pixel_sample( &self, p_pixel: Point2i, sample_ind: usize, sampler: &mut Sampler, arena: &Arena, ); fn li( &self, ray: Ray, lambda: &SampledWavelengths, sampler: &mut Sampler, visible_surface: bool, arena: &Arena, ) -> (SampledSpectrum, Option); }