// use crate::core::scene::BasicScene;
// use crate::{
//     EscapedRayQueue, GetBSSRDFAndProbeRayQueue, HitAreaLightQueue, MaterialEvalQueue,
//     MediumSampleQueue, MediumScatterQueue, PixelSampleStateStorage, RayQueue, ShadowRayQueue,
//     SubsurfaceScatterQueue,
// };
// use shared::core::camera::Camera;
// use shared::core::film::Film;
// use shared::core::filter::Filter;
// use shared::core::light::Light;
// use shared::core::sampler::Sampler;
// use shared::lights::sampler::LightSampler;
// use std::sync::Arc;
//
// pub struct WavefrontPathIntegrator {
//     pub film: Film,
//     pub filter: Filter,
//     pub sampler: Sampler,
//     pub camera: Arc<Camera>,
//     pub light_sampler: LightSampler,
//     pub infinite_lights: Option<Vec<Arc<Light>>>,
//     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<EscapedRayQueue>,
//     pub basic_material_queue: Option<MaterialEvalQueue>,
//     pub universal_material_queue: Option<MaterialEvalQueue>,
//     pub medium_sample_queue: Option<MediumSampleQueue>,
//     pub medium_scatter_queue: Option<MediumScatterQueue>,
//     pub bssrf_queue: Option<GetBSSRDFAndProbeRayQueue>,
//     pub subsurface_queue: Option<SubsurfaceScatterQueue>,
// }

#[cfg(feature = "use_gpu")]
impl WavefrontPathIntegrator {
    pub fn new(scene: BasicScene) -> Self {
        todo!()
    }
}
