use crate::wavefront::workitems::*; use crate::core::geometry::Bounds3f; pub trait WavefrontAggregate { fn bounds(&self) -> Bounds3f; fn intersect_closest( &self, max_rays: usize, ray_q: &RayQueue, escaped_ray_q: &EscapedRayQueue, hit_area_light_q: &HitAreaLightQueue, basic_eval_mtl_q: &MaterialEvalQueue, universal_eval_mtl_q: &MaterialEvalQueue, next_ray_q: &RayQueue, pixel_sample_state: &PixelSampleState, ); fn intersect_shadow( &self, max_rays: usize, shadow_ray_q: &ShadowRayQueue, pixel_sample_state: &PixelSampleState, ); fn intersect_shadow_tr( &self, max_rays: usize, shadow_ray_q: &ShadowRayQueue, pixel_sample_state: &PixelSampleState, ); }