Open CASCADE Technology
7.1.0.beta
|
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>
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... | |
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.
T | Numeric data type |
N | Vector dimension |
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.
|
pure virtual |
Releases resources of BVH queue based builder.
|
protectedvirtual |
Processes child nodes of the splitted BVH node.
|
virtual |
Builds BVH using specific algorithm.
Implements BVH_Builder< T, N >.
|
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 >.
|
protected |
Queue to manage BVH node building tasks.
|
protected |
Number of threads used to build BVH.