pub fn uniform_sample_hemisphere(n: Vec3d, u: Vec2d) -> (Vec3d, f64)