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. | |
| virtual | ~BVH_QueueBuilder () |
| Releases resources of BVH queue based builder. | |
| virtual void | Build (BVH_Set< T, N > *theSet, BVH_Tree< T, N > *theBVH, const BVH_Box< T, N > &theBox) const override |
| Builds BVH using specific algorithm. | |
Public Member Functions inherited from BVH_BuilderTransient | |
| Standard_Integer | MaxTreeDepth () const |
| Returns the maximum depth of constructed BVH. | |
| Standard_Integer | LeafNodeSize () const |
| Returns the maximum number of sub-elements in the leaf. | |
| Standard_Boolean | IsParallel () const |
| Returns parallel flag. | |
| void | SetParallel (const Standard_Boolean isParallel) |
| Set parallel flag controlling possibility of parallel execution. | |
Public Member Functions inherited from Standard_Transient | |
| Standard_Transient () | |
| Empty constructor. | |
| Standard_Transient (const Standard_Transient &) | |
| Copy constructor – does nothing. | |
| Standard_Transient & | operator= (const Standard_Transient &) |
| Assignment operator, needed to avoid copying reference counter. | |
| virtual | ~Standard_Transient () |
| Destructor must be virtual. | |
| virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
| Returns a type descriptor about this object. | |
| Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
| Returns a true value if this is an instance of Type. | |
| Standard_Boolean | IsInstance (const Standard_CString theTypeName) const |
| Returns a true value if this is an instance of TypeName. | |
| Standard_Boolean | IsKind (const opencascade::handle< Standard_Type > &theType) const |
| Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
| Standard_Boolean | IsKind (const Standard_CString theTypeName) const |
| Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
| Standard_Transient * | This () const |
| Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero. | |
| Standard_Integer | GetRefCount () const noexcept |
| Get the reference counter of this object. | |
| void | IncrementRefCounter () noexcept |
| Increments the reference counter of this object. | |
| Standard_Integer | DecrementRefCounter () noexcept |
| Decrements the reference counter of this object; returns the decremented value. | |
| virtual void | Delete () const |
| Memory deallocator for transient classes. | |
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) const =0 |
| Performs splitting of the given BVH node. | |
| virtual void | addChildren (BVH_Tree< T, N > *theBVH, BVH_BuildQueue &theBuildQueue, const Standard_Integer theNode, const BVH_ChildNodes &theSubNodes) const |
| Processes child nodes of the split BVH node. | |
Protected Member Functions inherited from BVH_Builder< T, N > | |
| BVH_Builder (const Standard_Integer theLeafNodeSize, const Standard_Integer theMaxTreeDepth) | |
| Creates new abstract BVH builder. | |
| void | updateDepth (BVH_Tree< T, N > *theBVH, const Standard_Integer theLevel) const |
| Updates depth of constructed BVH tree. | |
Protected Member Functions inherited from BVH_BuilderTransient | |
| BVH_BuilderTransient (const Standard_Integer theLeafNodeSize, const Standard_Integer theMaxTreeDepth) | |
| Creates new abstract BVH builder. | |
Protected Attributes | |
| Standard_Integer | myNumOfThreads |
| Number of threads used to build BVH. | |
Protected Attributes inherited from BVH_BuilderTransient | |
| Standard_Integer | myMaxTreeDepth |
| Maximum depth of constructed BVH. | |
| Standard_Integer | myLeafNodeSize |
| Maximum number of objects per leaf. | |
| Standard_Boolean | myIsParallel |
| Parallel execution flag. | |
Additional Inherited Members | |
| typedef void | base_type |
| Returns a type descriptor about this object. | |
| static constexpr const char * | get_type_name () |
| Returns a type descriptor about this object. | |
| static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
| Returns type descriptor of Standard_Transient class. | |
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 |
|
inline |
Creates new BVH queue based builder.
|
inlinevirtual |
Releases resources of BVH queue based builder.
|
protectedvirtual |
Processes child nodes of the split BVH node.
|
overridevirtual |
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 |
Number of threads used to build BVH.