use image_rs::Pixel; use crate::camera::Camera; use crate::core::film::Film; use crate::core::filter::Filter; use crate::core::sampler::Sampler; use crate::core::scene::BasicScene; use crate::lights::Light; use crate::lights::LightSampler; use crate::{ EscapedRayQueue, GetBSSRDFAndProbeRayQueue, HitAreaLightQueue, MaterialEvalQueue, MediumSampleQueue, MediumScatterQueue, PixelSampleStateStorage, RayQueue, ShadowRayQueue, SubsurfaceScatterQueue, }; use std::sync::Arc; pub struct WavefrontPathIntegrator { pub film: Film, pub filter: Filter, pub sampler: Sampler, pub camera: Arc, pub light_sampler: LightSampler, pub infinite_lights: Option>>, pub max_depth: i32, pub samples_per_pixel: i32, pub regularize: bool, pub scanlines_per_pixel: i32, pub max_queue_size: i32, pub pixel_sample_state: PixelSampleStateStorage, pub ray_queue: [RayQueue; 2], pub hit_area_light_queue: HitAreaLightQueue, pub shadow_ray_queue: ShadowRayQueue, pub escaped_ray_queue: Option, pub basic_material_queue: Option, pub universal_material_queue: Option, pub medium_sample_queue: Option, pub medium_scatter_queue: Option, pub bssrf_queue: Option, pub subsurface_queue: Option, } #[cfg(feature = "use_gpu")] impl WavefrontPathIntegrator { pub fn new(scene: BasicScene) -> Self { todo!() } }