46 lines
1.1 KiB
Plaintext
46 lines
1.1 KiB
Plaintext
// Pointer to an invalid neighbor or index
|
|
const static int INVALID_POINTER = 4294967295;
|
|
|
|
// Possible culling state
|
|
const static int BACK_FACE_CULLED = -3;
|
|
const static int FRUSTUM_CULLED = -2;
|
|
const static int TOO_SMALL = -1;
|
|
const static int UNCHANGED_ELEMENT = 0;
|
|
const static int BISECT_ELEMENT = 1;
|
|
const static int SIMPLIFY_ELEMENT = 2;
|
|
const static int MERGED_ELEMENT = 3;
|
|
|
|
// Bisector flags
|
|
const static int VISIBLE_BISECTOR = 0x1;
|
|
const static int MODIFIED_BISECTOR = 0x2;
|
|
|
|
struct BisectorData
|
|
{
|
|
// Allocated indices for this bisector
|
|
uint32_t indices[3];
|
|
|
|
// Subvision that should be applied to this bisector
|
|
uint32_t subdivisionPattern;
|
|
|
|
// Neighbor that should be processed
|
|
uint32_t problematicNeighbor;
|
|
|
|
// State of this bisector (split, merge, etc)
|
|
uint32_t bisectorState;
|
|
|
|
// Visibility and modification flags of a bisector
|
|
uint32_t flags;
|
|
|
|
// ID used for the propagation
|
|
uint32_t propagationID;
|
|
};
|
|
|
|
uint HeapIDDepth(uint64_t x)
|
|
{
|
|
uint depth = 0;
|
|
while (x > 0u) {
|
|
++depth;
|
|
x >>= 1u;
|
|
}
|
|
return depth;
|
|
} |