Cogs.Core
FrustumClassification.h
1#pragma once
2#include "Base.h"
3#include <glm/fwd.hpp>
4
5#include "Rendering/DataFormat.h"
6
7namespace Cogs::Core
8{
9 class Context;
10
11 enum struct FrustumPlanes : uint8_t {
12 InsideNone = 0,
13 InsidePosX = 1,
14 InsideNegX = 2,
15 InsidePosY = 4,
16 InsideNegY = 8,
17 InsidePosZ = 16,
18 InsideNegZ = 32,
19 InsideAll = 63,
20
21 InsideFar = 16,
22 InsideNear = 32,
23 InsideAllButNear = 31,
24 InsideAllButFar = 47
25 };
26
28 inline FrustumPlanes operator | (FrustumPlanes lhs, FrustumPlanes rhs)
29 {
30 return static_cast<FrustumPlanes>(static_cast<uint8_t>(lhs) | static_cast<uint8_t>(rhs));
31 }
32
34 inline FrustumPlanes& operator |= (FrustumPlanes& lhs, FrustumPlanes rhs)
35 {
36 lhs = static_cast<FrustumPlanes>(static_cast<uint8_t>(lhs) | static_cast<uint8_t>(rhs));
37 return lhs;
38 }
39
41 inline FrustumPlanes operator & (FrustumPlanes lhs, FrustumPlanes rhs)
42 {
43 return static_cast<FrustumPlanes>(static_cast<uint8_t>(lhs) & static_cast<uint8_t>(rhs));
44 }
45
47 inline FrustumPlanes& operator &= (FrustumPlanes& lhs, FrustumPlanes rhs)
48 {
49 lhs = static_cast<FrustumPlanes>(static_cast<uint8_t>(lhs) & static_cast<uint8_t>(rhs)); return lhs;
50 }
51
52 COGSCORE_DLL_API FrustumPlanes frustumClassifyBoundingBox(const glm::mat4& localToClip,
53 const glm::vec3& min,
54 const glm::vec3& max);
55
56 COGSCORE_DLL_API FrustumPlanes frustumClassifyBoundingBox(const glm::mat4& localToClip,
57 const glm::vec3& min,
58 const glm::vec3& max,
59 const float discardThresholdSqr,
60 const float keepThreshold);
61
62}
Contains the Engine, Renderer, resource managers and other systems needed to run Cogs....
CPUFeature operator&(CPUFeature lhs, CPUFeature rhs)
Bitmask convenience operator.
Definition: Features.h:93
CPUFeature & operator|=(CPUFeature &lhs, CPUFeature rhs)
Bitmask convenience operator.
Definition: Features.h:86
CPUFeature operator|(CPUFeature lhs, CPUFeature rhs)
Bitmask convenience operator.
Definition: Features.h:80
CPUFeature & operator&=(CPUFeature &lhs, CPUFeature rhs)
Bitmask convenience operator.
Definition: Features.h:99