Program Listing for File Frustum.ixx#
↰ Return to documentation for file (Src/GraphicsEngineVulkan/scene/Frustum.ixx)
module;
#include <array>
#include <glm/glm.hpp>
export module kataglyphis.vulkan.frustum;
export namespace Kataglyphis {
struct AABB
{
glm::vec3 min{ 0.0F };
glm::vec3 max{ 0.0F };
[[nodiscard]] bool isValid() const { return min.x <= max.x && min.y <= max.y && min.z <= max.z; }
};
using FrustumPlanes = std::array<glm::vec4, 6>;
FrustumPlanes extractFrustumPlanes(const glm::mat4 &viewProjection);
bool isVisible(const FrustumPlanes &planes, const AABB &boxWorldSpace);
bool isVisibleAsShadowCaster(const FrustumPlanes &planes, const AABB &boxWorldSpace);
AABB transformAABB(const glm::mat4 &model, const AABB &boxObjectSpace);
}// namespace Kataglyphis