pub fn intersection_line_aabb<T: Float + MulAdd<T, T, Output = T> + Debug>(
    p: Vec3<T>,
    dir: Vec3<T>,
    bounds: Aabb<T>
) -> Option<Vec3<T>>