+ glm::vec3 InverseDirection() const noexcept {
+ return glm::vec3(
+ std::fabs(direction.x) < std::numeric_limits<float>::epsilon()
+ ? std::numeric_limits<float>::infinity()
+ : 1.0f / direction.x,
+ std::fabs(direction.y) < std::numeric_limits<float>::epsilon()
+ ? std::numeric_limits<float>::infinity()
+ : 1.0f / direction.y,
+ std::fabs(direction.z) < std::numeric_limits<float>::epsilon()
+ ? std::numeric_limits<float>::infinity()
+ : 1.0f / direction.z);
+ }
+