Open CASCADE Technology  7.1.0.beta
Data Structures | Public Member Functions | Protected Member Functions | Protected Attributes

BVH_QueueBuilder< T, N > Class Template Referenceabstract

Abstract BVH builder based on the concept of work queue. Queue based BVH builders support parallelization with a fixed number of threads (maximum efficiency is achieved by setting the number of threads equal to the number of CPU cores plus one). Note that to support parallel mode, a corresponding BVH primitive set should provide thread safe implementations of interface functions (e.g., Swap, Box, Center). Otherwise, the results will be undefined. More...

#include <BVH_QueueBuilder.hxx>

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

Data Structures

struct  BVH_ChildNodes
 Stores parameters of constructed child nodes. More...
 
struct  BVH_PrimitiveRange
 Stores range of primitives belonging to a BVH node. More...
 
class  BVH_TypedBuildTool
 Wrapper for BVH build data. More...
 

Public Member Functions

 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

virtual BVH_QueueBuilder< T, N >::BVH_ChildNodes BuildNode (BVH_Set< T, N > *theSet, BVH_Tree< T, N > *theBVH, const Standard_Integer theNode)=0
 Performs splitting of the given BVH node. More...
 
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...
 

Protected Attributes

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>
class BVH_QueueBuilder< T, N >

Abstract BVH builder based on the concept of work queue. Queue based BVH builders support parallelization with a fixed number of threads (maximum efficiency is achieved by setting the number of threads equal to the number of CPU cores plus one). Note that to support parallel mode, a corresponding BVH primitive set should provide thread safe implementations of interface functions (e.g., Swap, Box, Center). Otherwise, the results will be undefined.

Template Parameters
TNumeric data type
NVector dimension

Constructor & Destructor Documentation

template<class T , int N>
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.

template<class T , int N>
virtual BVH_QueueBuilder< T, N >::~BVH_QueueBuilder ( )
pure virtual

Releases resources of BVH queue based builder.

Member Function Documentation

template<class T , int N>
virtual void BVH_QueueBuilder< T, N >::AddChildren ( BVH_Tree< T, N > *  theBVH,
const Standard_Integer  theNode,
const BVH_ChildNodes theSubNodes 
)
protectedvirtual

Processes child nodes of the splitted BVH node.

template<class T , int N>
virtual void BVH_QueueBuilder< T, N >::Build ( BVH_Set< T, N > *  theSet,
BVH_Tree< T, N > *  theBVH,
const BVH_Box< T, N > &  theBox 
)
virtual

Builds BVH using specific algorithm.

Implements BVH_Builder< T, N >.

template<class T , int N>
virtual BVH_QueueBuilder<T, N>::BVH_ChildNodes BVH_QueueBuilder< T, N >::BuildNode ( BVH_Set< T, N > *  theSet,
BVH_Tree< T, N > *  theBVH,
const Standard_Integer  theNode 
)
protectedpure virtual

Performs splitting of the given BVH node.

Implemented in BVH_BinnedBuilder< T, N, Bins >, BVH_BinnedBuilder< T, N, 2 >, and BVH_SweepPlaneBuilder< T, N >.

Field Documentation

template<class T , int N>
BVH_BuildQueue BVH_QueueBuilder< T, N >::myBuildQueue
protected

Queue to manage BVH node building tasks.

template<class T , int N>
Standard_Integer BVH_QueueBuilder< T, N >::myNumOfThreads
protected

Number of threads used to build BVH.


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