Open CASCADE Technology  7.0.0
Data Structures | Public Types | Public Member Functions | Protected Member Functions
BVH_BinnedBuilder< T, N, Bins > Class Template Reference

Performs construction of BVH tree using binned SAH algorithm. Number of bins controls BVH quality in cost of construction time (greater - better). For optimal results, use 32 - 48 bins. However, reasonable performance is provided even for 4 - 8 bins (it is only 10-20% lower in comparison with optimal settings). Note that multiple threads can be used only with thread safe BVH primitive sets. More...

#include <BVH_BinnedBuilder.hxx>

Inheritance diagram for BVH_BinnedBuilder< T, N, Bins >:
Inheritance graph
[legend]

Data Structures

struct  BVH_SplitPlane
 Describes split plane candidate. More...
 

Public Types

typedef BVH_Bin< T, N > BVH_BinVector[Bins]
 Type of the array of bins of BVH tree node. More...
 
typedef BVH_SplitPlane BVH_SplitPlanes[Bins+1]
 Type of the array of split plane candidates. More...
 

Public Member Functions

 BVH_BinnedBuilder (const Standard_Integer theLeafNodeSize=5, const Standard_Integer theMaxTreeDepth=32, const Standard_Boolean theDoMainSplits=0, const Standard_Integer theNumOfThreads=1)
 Creates binned SAH BVH builder. More...
 
virtual ~BVH_BinnedBuilder ()
 Releases resources of binned SAH BVH builder. More...
 
- Public Member Functions inherited from BVH_QueueBuilder< T, N >
 BVH_QueueBuilder (const Standard_Integer theLeafNodeSize, const Standard_Integer theMaxTreeDepth, const Standard_Integer theNumOfThreads=1)
 Creates new BVH queue based builder. More...
 
virtual ~BVH_QueueBuilder ()=0
 Releases resources of BVH queue based builder. More...
 
virtual void Build (BVH_Set< T, N > *theSet, BVH_Tree< T, N > *theBVH, const BVH_Box< T, N > &theBox)
 Builds BVH using specific algorithm. More...
 
- Public Member Functions inherited from BVH_Builder< T, N >
 BVH_Builder (const Standard_Integer theLeafNodeSize, const Standard_Integer theMaxTreeDepth)
 Creates new abstract BVH builder. More...
 
virtual ~BVH_Builder ()
 Releases resources of BVH builder. More...
 

Protected Member Functions

BVH_QueueBuilder< T, N >::BVH_ChildNodes BuildNode (BVH_Set< T, N > *theSet, BVH_Tree< T, N > *theBVH, const Standard_Integer theNode)
 Performs splitting of the given BVH node. More...
 
virtual void GetSubVolumes (BVH_Set< T, N > *theSet, BVH_Tree< T, N > *theBVH, const Standard_Integer theNode, BVH_BinVector &theBins, const Standard_Integer theAxis)
 Arranges node primitives into bins. More...
 
- Protected Member Functions inherited from BVH_QueueBuilder< T, N >
virtual void AddChildren (BVH_Tree< T, N > *theBVH, const Standard_Integer theNode, const BVH_ChildNodes &theSubNodes)
 Processes child nodes of the splitted BVH node. More...
 
- Protected Member Functions inherited from BVH_Builder< T, N >
void UpdateDepth (BVH_Tree< T, N > *theBVH, const Standard_Integer theLevel)
 Updates depth of constructed BVH tree. More...
 

Additional Inherited Members

- Protected Attributes inherited from BVH_QueueBuilder< T, N >
BVH_BuildQueue myBuildQueue
 Queue to manage BVH node building tasks. More...
 
Standard_Integer myNumOfThreads
 Number of threads used to build BVH. More...
 
- Protected Attributes inherited from BVH_Builder< T, N >
Standard_Integer myMaxTreeDepth
 Maximum depth of constructed BVH. More...
 
Standard_Integer myLeafNodeSize
 Maximum number of objects per leaf. More...
 

Detailed Description

template<class T, int N, int Bins = 32>
class BVH_BinnedBuilder< T, N, Bins >

Performs construction of BVH tree using binned SAH algorithm. Number of bins controls BVH quality in cost of construction time (greater - better). For optimal results, use 32 - 48 bins. However, reasonable performance is provided even for 4 - 8 bins (it is only 10-20% lower in comparison with optimal settings). Note that multiple threads can be used only with thread safe BVH primitive sets.

Member Typedef Documentation

template<class T, int N, int Bins = 32>
typedef BVH_Bin<T, N> BVH_BinnedBuilder< T, N, Bins >::BVH_BinVector[Bins]

Type of the array of bins of BVH tree node.

template<class T, int N, int Bins = 32>
typedef BVH_SplitPlane BVH_BinnedBuilder< T, N, Bins >::BVH_SplitPlanes[Bins+1]

Type of the array of split plane candidates.

Constructor & Destructor Documentation

template<class T, int N, int Bins = 32>
BVH_BinnedBuilder< T, N, Bins >::BVH_BinnedBuilder ( const Standard_Integer  theLeafNodeSize = 5,
const Standard_Integer  theMaxTreeDepth = 32,
const Standard_Boolean  theDoMainSplits = 0,
const Standard_Integer  theNumOfThreads = 1 
)

Creates binned SAH BVH builder.

template<class T, int N, int Bins = 32>
virtual BVH_BinnedBuilder< T, N, Bins >::~BVH_BinnedBuilder ( )
virtual

Releases resources of binned SAH BVH builder.

Member Function Documentation

template<class T, int N, int Bins = 32>
BVH_QueueBuilder<T, N>::BVH_ChildNodes BVH_BinnedBuilder< T, N, Bins >::BuildNode ( BVH_Set< T, N > *  theSet,
BVH_Tree< T, N > *  theBVH,
const Standard_Integer  theNode 
)
protectedvirtual

Performs splitting of the given BVH node.

Implements BVH_QueueBuilder< T, N >.

template<class T, int N, int Bins = 32>
virtual void BVH_BinnedBuilder< T, N, Bins >::GetSubVolumes ( BVH_Set< T, N > *  theSet,
BVH_Tree< T, N > *  theBVH,
const Standard_Integer  theNode,
BVH_BinVector theBins,
const Standard_Integer  theAxis 
)
protectedvirtual

Arranges node primitives into bins.


The documentation for this class was generated from the following file: