HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
UT_BVHImpl.h File Reference
#include "UT_BVH.h"
#include "UT_Array.h"
#include "UT_Assert.h"
#include "UT_FixedVector.h"
#include "UT_ParallelUtil.h"
#include "UT_SmallArray.h"
#include "UT_Thread.h"
#include <SYS/SYS_BitUtil.h>
#include <algorithm>
+ Include dependency graph for UT_BVHImpl.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  UT::ut_BoxCentre< T >
 
struct  UT::ut_BoxCentre< UT_FixedVector< T, NAXES > >
 
struct  UT::ut_BoxCentre< UT_Vector2T< T > >
 
struct  UT::ut_BoxCentre< UT_Vector3T< T > >
 
struct  UT::ut_BoxCentre< UT_Vector4T< T > >
 
struct  UT::BVHQueryPointWrapper< const UT_FixedVector< float, NAXES > >
 
struct  UT::BVHQueryPointWrapper< UT_FixedVector< float, NAXES > >
 
struct  UT::BVHQueryPointWrapper< const UT_Vector3 >
 
struct  UT::BVHQueryPointWrapper< UT_Vector3 >
 
struct  UT::BVHQueryPointWrapper< const UT_Vector2 >
 
struct  UT::BVHQueryPointWrapper< UT_Vector2 >
 
struct  UT::BVHQuerySegment< NAXES >
 
struct  UT::BVHQueryInfLine< NAXES >
 
struct  UT::BVHQueryCone< NAXES, POSITION_ARRAY, RADIUS_ARRAY >
 
struct  UT::BVHQueryPtUnitWrap< NAXES >
 
struct  UT::BVHQueryTriangle
 
struct  UT::BVHQueryTetrahedron
 
class  UT::ut_BVHOrderedStackCompare< farthest, INT_TYPE0 >
 

Namespaces

 UT
 

Macros

#define __UT_BVHImpl_h__
 
#define BVH_TRY_ALL_AXES   0
 

Functions

template<typename T , uint NAXES>
SYS_FORCE_INLINE bool UT::utBoxExclude (const UT::Box< T, NAXES > &box) noexcept
 
template<uint NAXES>
SYS_FORCE_INLINE bool UT::utBoxExclude (const UT::Box< fpreal32, NAXES > &box) noexcept
 
template<typename T , uint NAXES>
SYS_FORCE_INLINEUT::utBoxCenter (const UT::Box< T, NAXES > &box, uint axis) noexcept
 
template<typename T , uint NAXES>
SYS_FORCE_INLINEUT::utBoxExclude (const UT_FixedVector< T, NAXES > &position) noexcept
 
template<uint NAXES>
SYS_FORCE_INLINE bool UT::utBoxExclude (const UT_FixedVector< fpreal32, NAXES > &position) noexcept
 
template<typename T , uint NAXES>
SYS_FORCE_INLINEUT::utBoxCenter (const UT_FixedVector< T, NAXES > &position, uint axis) noexcept
 
template<typename T >
SYS_FORCE_INLINE bool UT::utBoxExclude (const UT_Vector2T< T > &position) noexcept
 
template<typename T >
SYS_FORCE_INLINE bool UT::utBoxExclude (const UT_Vector3T< T > &position) noexcept
 
template<typename T >
SYS_FORCE_INLINE bool UT::utBoxExclude (const UT_Vector4T< T > &position) noexcept
 
template<>
SYS_FORCE_INLINE bool UT::utBoxExclude (const UT_Vector2T< fpreal32 > &position) noexcept
 
template<>
SYS_FORCE_INLINE bool UT::utBoxExclude (const UT_Vector3T< fpreal32 > &position) noexcept
 
template<>
SYS_FORCE_INLINE bool UT::utBoxExclude (const UT_Vector4T< fpreal32 > &position) noexcept
 
template<typename T >
SYS_FORCE_INLINEUT::utBoxCenter (const UT_Vector2T< T > &position, uint axis) noexcept
 
template<typename T >
SYS_FORCE_INLINEUT::utBoxCenter (const UT_Vector3T< T > &position, uint axis) noexcept
 
template<typename T >
SYS_FORCE_INLINEUT::utBoxCenter (const UT_Vector4T< T > &position, uint axis) noexcept
 
template<typename BOX_TYPE , typename SRC_INT_TYPE , typename INT_TYPE >
INT_TYPE UT::utExcludeNaNInfBoxIndices (const BOX_TYPE *boxes, SRC_INT_TYPE *indices, INT_TYPE &nboxes) noexcept
 
template<uint BVH_N, typename ITEM_BOX , typename NODE_BOX >
SYS_FORCE_INLINE void UT::createBVHNodeBoxes (const UT::BVH< BVH_N > &bvh, const ITEM_BOX *item_boxes, NODE_BOX *node_boxes) noexcept
 
template<uint NAXES, typename T , uint BVH_N, typename ITEM_BOX , typename NODE_BOX >
SYS_FORCE_INLINE void UT::createBVHInterleavedBoxes (const UT::BVH< BVH_N > &bvh, const ITEM_BOX *item_boxes, NODE_BOX *node_boxes, float expand_factor=0.0f) noexcept
 
template<typename T , uint NAXES, bool PARALLEL, typename INT_TYPE0 , typename DATA , typename INT_TYPE >
void UT::utCreateBVHInterleavedBoxesHelper (INT_TYPE nodei, INT_TYPE next_node_id, const DATA &data, UT::Box< T, NAXES > *data_for_parent) noexcept
 
template<uint NAXES, typename T , typename ITEM_BOX , typename NODE_BOX , typename INT_TYPE0 = uint>
SYS_FORCE_INLINE void UT::createBVHInterleavedBoxes (const UT::BVH< 4 > &bvh, const ITEM_BOX *item_boxes, NODE_BOX *node_boxes, const v4uu *node_nitems, const INT_TYPE0 *indices_mapping=nullptr) noexcept
 
template<uint NAXES, typename INT_TYPE >
void UT::getIntersectingBoxes (const UT::BVH< 4 > &bvh, const UT::Box< v4uf, NAXES > *node_boxes, const UT::Box< float, NAXES > &query_box, UT_Array< INT_TYPE > &box_indices, BVHUnorderedStack &stack) noexcept
 
template<uint NAXES, typename INT_TYPE >
void UT::getIntersectingBoxesFromStack (const UT::BVH< 4 > &bvh, const UT::Box< v4uf, NAXES > *node_boxes, const UT::Box< float, NAXES > &query_box, UT_Array< INT_TYPE > &box_indices, BVHUnorderedStack &stack) noexcept
 
template<uint NAXES, typename INT_TYPE >
void UT::getIntersectingNodes (const UT::BVH< 4 > &bvh, const UT::Box< v4uf, NAXES > *node_boxes, const UT::Box< float, NAXES > &query_box, UT_Array< INT_TYPE > &box_indices, BVHUnorderedStack &stack) noexcept
 
template<uint NAXES, typename INT_TYPE , int BATCH_SIZE>
void UT::getIntersectingBoxesBatch (const UT::BVH< 4 > &bvh, const UT::Box< v4uf, NAXES > *node_boxes, const UT::Box< float, NAXES > *query_box, UT_Array< INT_TYPE > *box_indices, BVHUnorderedStack &stack) noexcept
 
template<bool PARALLEL, typename DATA >
void UT::utComputeNodeNItemsHelper (uint nodei, uint next_node_id, uint next_item_id, const DATA &data) noexcept
 
void UT::computeNodeNItems (const UT::BVH< 4 > &bvh, v4uu *node_nitems, exint nitems) noexcept
 Computes the number of items per node entry and fills in node_nitems. More...
 
template<typename RADIUS_ARRAY >
SYS_FORCE_INLINE void UT::utHandleRadiiLinearly (float &d2, const RADIUS_ARRAY &radii, uint index)
 
template<bool farthest, bool reordered, bool use_max_points, uint NAXES, typename QUERY_POINT , typename INT_TYPE0 , typename POSITION_ARRAY , typename RADIUS_ARRAY >
SYS_FORCE_INLINE void UT::utHandleSingleClosePoint (const uint index, const INT_TYPE0 *indices_mapping, const POSITION_ARRAY &positions, QUERY_POINT &query_point, BVHOrderedStack &output_queue, const RADIUS_ARRAY &radii, exint max_points, float &max_dist_squared) noexcept
 
template<bool farthest, bool reordered, bool use_max_points, uint NAXES, typename QUERY_POINT , typename INT_TYPE0 , typename POSITION_ARRAY , typename RADIUS_ARRAY >
void UT::findClosestPoints (const UT::BVH< 4 > &bvh, const UT::Box< v4uf, NAXES > *node_boxes, const v4uu *node_nitems, const INT_TYPE0 *indices_mapping, const POSITION_ARRAY &positions, QUERY_POINT &query_point, BVHOrderedStack &stack, BVHOrderedStack &output_queue, const RADIUS_ARRAY &radii=ZeroRadiiWrapper(), exint max_points=std::numeric_limits< exint >::max(), float max_dist_squared=std::numeric_limits< float >::max()) noexcept
 

Macro Definition Documentation

#define __UT_BVHImpl_h__

Definition at line 17 of file UT_BVHImpl.h.

#define BVH_TRY_ALL_AXES   0

Definition at line 29 of file UT_BVHImpl.h.