Program Listing for File Frustum.ixx

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