40 delete[] m_objPtrAlloc;
51 std::vector<objPtr_t> &activeObjIdxs);
52 void MakeLeaf(
BVHNode *node,
const objPtr_t *objPtrs, std::vector<objPtr_t> &objs);
56 size_t m_objPtrAllocPos;
57 size_t m_objPtrAllocMax;
60 size_t m_nodeAllocPos;
61 size_t m_nodeAllocMax;
87 const Node *
GetNode(uint32_t index)
const {
return m_nodes.data() + index; }
90 void ComputeOverlap(uint32_t objId,
const AABBd &objAabb, std::vector<std::pair<uint32_t, uint32_t>> &out_isect)
const;
104 void BuildNode(Node *node, SortKey *keys, uint32_t numKeys,
AABBd *objAabbs, uint32_t height);
105 uint32_t Partition(SortKey *keys, uint32_t numKeys,
const AABBd &aabb,
AABBd *objAabbs);
107 std::vector<Node> m_nodes;
108 uint32_t m_treeHeight;
110 double m_inv_scale_factor;
int objPtr_t
Definition: BVHTree.h:36
size_t GetNumNodes() const
Definition: BVHTree.h:44
~BVHTree()
Definition: BVHTree.h:38
double CalculateSAH() const
Definition: BVHTree.cpp:165
BVHNode * GetRoot()
Definition: BVHTree.h:43
double CalculateSAH() const
Definition: BVHTree.cpp:378
void Clear()
Definition: BVHTree.cpp:213
size_t GetNumNodes() const
Definition: BVHTree.h:94
const Node * GetNode(uint32_t index) const
Definition: BVHTree.h:87
SingleBVHTree()
Definition: BVHTree.cpp:205
void TraceRay(const vector3d &start, const vector3d &inv_dir, double len, std::vector< uint32_t > &out_isect) const
Definition: BVHTree.cpp:351
uint32_t GetHeight() const
Definition: BVHTree.h:95
void ComputeOverlap(uint32_t objId, const AABBd &objAabb, std::vector< std::pair< uint32_t, uint32_t > > &out_isect) const
Definition: BVHTree.cpp:325
void Build(const AABBd &bounds, AABBd *objAabbs, uint32_t numObjs)
Definition: BVHTree.cpp:223
int * triIndicesStart
Definition: BVHTree.h:17
Aabb aabb
Definition: BVHTree.h:12
BVHNode()
Definition: BVHTree.h:21
BVHNode * kids[2]
Definition: BVHTree.h:19
int numTris
Definition: BVHTree.h:16
bool IsLeaf() const
Definition: BVHTree.h:28
AABBd aabb
Definition: BVHTree.h:73
uint32_t kids[2]
Definition: BVHTree.h:74
uint32_t leafIndex
Definition: BVHTree.h:75