HDK
|
Namespaces | |
detail | |
FA | |
Format | |
Literal | |
Typedefs | |
using | BVHUnorderedStack = UT_Array< UT::BVH< 4 >::INT_TYPE > |
using | BVHUnorderedStackSmall = UT_SmallArray< UT::BVH< 4 >::INT_TYPE, 128 > |
using | BVHOrderedStack = UT_Array< BVHOrderedStackEntry > |
using | BVHOrderedStackSmall = UT_SmallArray< BVHOrderedStackEntry, 256 > |
template<typename ITEM_INDEX > | |
using | ItemIndex_UnderlyingIntegerType_t = typename ItemIndex_UnderlyingIntegerType< ITEM_INDEX >::type |
using | RTree16Int = RTreeT< int, 16 > |
using | RTree2Int = RTreeT< int, 2 > |
using | RTreeInt = RTreeT< int, 2 > |
using | RTree = RTreeT< exint, 2 > |
using | RTreeConfigurationF = RTreeConfigurationT< fpreal32 > |
using | RTreeConfigurationD = RTreeConfigurationT< fpreal64 > |
using | RTreeConfiguration = RTreeConfigurationT< fpreal64 > |
using | RTreeBoxF = UT_BoxT< fpreal32 > |
using | RTreeBoxD = UT_BoxT< fpreal64 > |
using | RTreeBox = UT_BoxT< fpreal64 > |
Functions | |
template<uint BVH_N, typename ITEM_BOX , typename NODE_BOX > | |
SYS_FORCE_INLINE void | 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 | createBVHInterleavedBoxes (const UT::BVH< BVH_N > &bvh, const ITEM_BOX *item_boxes, NODE_BOX *node_boxes, float expand_factor=0.0f) noexcept |
template<uint NAXES, typename T , typename ITEM_BOX , typename NODE_BOX , typename INT_TYPE0 = uint> | |
SYS_FORCE_INLINE void | 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 | 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 | 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 | 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 | 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 |
void | 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 T > | |
constexpr bool | allRadiiZero (const T &array) noexcept |
constexpr bool | allRadiiZero (const ZeroRadiiWrapper &array) noexcept |
template<typename T > | |
constexpr bool | allRadiiZero (const T *const array) 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 | 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 |
template<typename T , uint NAXES> | |
SYS_FORCE_INLINE bool | utBoxExclude (const UT::Box< T, NAXES > &box) noexcept |
template<uint NAXES> | |
SYS_FORCE_INLINE bool | utBoxExclude (const UT::Box< fpreal32, NAXES > &box) noexcept |
template<typename T , uint NAXES> | |
SYS_FORCE_INLINE T | utBoxCenter (const UT::Box< T, NAXES > &box, uint axis) noexcept |
template<typename T , uint NAXES> | |
SYS_FORCE_INLINE T | utBoxExclude (const UT_FixedVector< T, NAXES > &position) noexcept |
template<uint NAXES> | |
SYS_FORCE_INLINE bool | utBoxExclude (const UT_FixedVector< fpreal32, NAXES > &position) noexcept |
template<typename T , uint NAXES> | |
SYS_FORCE_INLINE T | utBoxCenter (const UT_FixedVector< T, NAXES > &position, uint axis) noexcept |
template<typename T > | |
SYS_FORCE_INLINE bool | utBoxExclude (const UT_Vector2T< T > &position) noexcept |
template<typename T > | |
SYS_FORCE_INLINE bool | utBoxExclude (const UT_Vector3T< T > &position) noexcept |
template<typename T > | |
SYS_FORCE_INLINE bool | utBoxExclude (const UT_Vector4T< T > &position) noexcept |
template<> | |
SYS_FORCE_INLINE bool | utBoxExclude (const UT_Vector2T< fpreal32 > &position) noexcept |
template<> | |
SYS_FORCE_INLINE bool | utBoxExclude (const UT_Vector3T< fpreal32 > &position) noexcept |
template<> | |
SYS_FORCE_INLINE bool | utBoxExclude (const UT_Vector4T< fpreal32 > &position) noexcept |
template<typename T > | |
SYS_FORCE_INLINE T | utBoxCenter (const UT_Vector2T< T > &position, uint axis) noexcept |
template<typename T > | |
SYS_FORCE_INLINE T | utBoxCenter (const UT_Vector3T< T > &position, uint axis) noexcept |
template<typename T > | |
SYS_FORCE_INLINE T | utBoxCenter (const UT_Vector4T< T > &position, uint axis) noexcept |
template<typename BOX_TYPE , typename SRC_INT_TYPE , typename INT_TYPE > | |
INT_TYPE | utExcludeNaNInfBoxIndices (const BOX_TYPE *boxes, SRC_INT_TYPE *indices, INT_TYPE &nboxes) noexcept |
template<typename T , uint NAXES, bool PARALLEL, typename INT_TYPE0 , typename DATA , typename INT_TYPE > | |
void | utCreateBVHInterleavedBoxesHelper (INT_TYPE nodei, INT_TYPE next_node_id, const DATA &data, UT::Box< T, NAXES > *data_for_parent) noexcept |
template<bool PARALLEL, typename DATA > | |
void | utComputeNodeNItemsHelper (uint nodei, uint next_node_id, uint next_item_id, const DATA &data) noexcept |
template<typename RADIUS_ARRAY > | |
SYS_FORCE_INLINE void | 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 | 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 |
UT_API const UT_ErrorCategory & | GetOrmMigErrorCategory () |
UT_ErrorCode | make_error_code (UT::OrmMigError e) |
template<typename ITEM_INDEX , int MAX_ORDER, typename FT > | |
RTreeT< ITEM_INDEX, MAX_ORDER > | constructRTree (const UT_BoxT< FT > item_box[], const ITEM_INDEX num_items) |
template<typename ITEM_INDEX , int MAX_ORDER, typename FT > | |
RTreeT< ITEM_INDEX, MAX_ORDER > | constructRTree (const UT_Array< UT_BoxT< FT > > &item_box) |
template<typename ITEM_INDEX , int MAX_ORDER, typename FT > | |
RTreeConfigurationT< FT > | constructRTreeConfiguration (const UT::RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const UT_BoxT< FT > item_box[], const ITEM_INDEX num_items) |
template<typename ITEM_INDEX , int MAX_ORDER, typename FT > | |
RTreeConfigurationT< FT > | constructRTreeConfiguration (const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const UT_Array< UT_BoxT< FT > > &item_box) |
template<typename ITEM_INDEX , int MAX_ORDER, typename FT , typename QUERY_SHAPE , typename ACCEPT_ITEM > | |
void | forEachIntersecting (ACCEPT_ITEM &&accept_item, const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const RTreeConfigurationT< FT > &configuration, const QUERY_SHAPE &query_shape) |
template<typename ITEM_INDEX , int MAX_ORDER, typename FT > | |
void | updateConfiguration (RTreeConfigurationT< FT > &configuration, const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const UT_BoxT< FT > item_box[], const ITEM_INDEX num_items) |
template<typename FT > | |
exint | heapMemoryUsage (const RTreeConfigurationT< FT > &configuration) |
template<typename ITEM_INDEX , int MAX_ORDER, typename FT > | |
void | updateConfiguration (RTreeConfigurationT< FT > &configuration, const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const UT_Array< UT_BoxT< FT > > &item_box) |
template<typename QUERY_SHAPE , typename ITEM_INDEX , int MAX_ORDER, typename FT > | |
void | getIntersecting (UT_Array< ITEM_INDEX > &results, const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const RTreeConfigurationT< FT > &configuration, const QUERY_SHAPE &query_shape) |
template<typename QUERY_SHAPE , typename ITEM_INDEX , int MAX_ORDER, typename FT > | |
ITEM_INDEX * | getIntersectingRaw (const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const RTreeConfigurationT< FT > &configuration, const QUERY_SHAPE &query_shape, ITEM_INDEX *const items_begin) |
size_t | subtreeDetermineNumNodes (const int MAX_ORDER, const size_t size) |
template<typename BOX , typename ITEM_INDEX_REP , int MAX_ORDER> | |
RNodeT< ITEM_INDEX_REP, MAX_ORDER > * | subtreeCreate (BOX &bounding_box, BOX shared_boxes[], UT_BoxedItemT< BOX, ITEM_INDEX_REP > *const begin, UT_BoxedItemT< BOX, ITEM_INDEX_REP > *const end, RNodeT< ITEM_INDEX_REP, MAX_ORDER > shared_nodes[], RNodeT< ITEM_INDEX_REP, MAX_ORDER > *&shared_nodes_end) |
template<typename ITEM_INDEX_REP , int MAX_ORDER, typename ITEM_BOX , typename FT > | |
void | subtreeAssignItemBoxArray (UT_BoxT< FT > &bounding_box, UT_BoxT< FT > shared_boxes[], const RNodeT< ITEM_INDEX_REP, MAX_ORDER > shared_nodes[], const RNodeT< ITEM_INDEX_REP, MAX_ORDER > *const node, ITEM_BOX &&item_box) |
template<typename ITEM_INDEX_REP , int MAX_ORDER> | |
exint | subtreeComputeMaxDepth (const RNodeT< ITEM_INDEX_REP, MAX_ORDER > shared_nodes[], const RNodeT< ITEM_INDEX_REP, MAX_ORDER > *const node) |
UT_API const UT_ErrorCategory & | GetSqliteErrorCategory () |
UT_API const UT_ErrorCategory & | GetSqlErrorCategory () |
UT_ErrorCode | make_error_code (UT::SqlError e) |
UT_API const UT_ErrorCategory & | GetOrmErrorCategory () |
UT_ErrorCode | make_error_code (UT::SqlOrmError e) |
numbers, this only applies to the integer portion of the float.
<width>
specifies the minimum width of the field. Arguments wider than this value will still be printed out in full. Preceding the width field with 0
will automatically set the alignment to number alignment, and the fill value to 0
.<precision>
sets the precision for floating point numbers. For other types it specifies the maximum width of the field.<type>
is a single character code that specifies how the type should be interpreted. If an argument type is not valid for the formatting type, the formatting type is ignored. The supported types are:b
: Output integers as binary numbers.B
: Output integers as binary numbers with an upper-case prefix (if using the #
option.c
: Output integers interpreted as a Unicode code point.d
: Output integers as decimal numbers. This is the default for integers.e
: Use the exponent notation for floating point numbers.E
: Same as e
, except the exponent separator is upper-cased.f
: Use the fixed point notation for floating point numbers.F
: Same as f
.g
: Format a floating point number as either fixed point or scientific, depending on its magnitude, which mostly results in the shortest form being used. This is the default for floats.G
: Same as g
, except the exponent separator is upper-cased.o
: Output integers as octals.x
: Output integers and floats as hexadecimal. For floats this uses the special hexadecimal float output.X
: The same as x
, except all alphabetic digits and prefix are output in upper-case.%
: Takes a floating point number, multiplies it by 100 and outputs it with a percentage sign appended, using fixed point notation. The default precision in this mode is 2.Example:
Result:
The UTprintf and UT_Format::printf functions use formatting code very similar to the POSIX specification for printf. The code begins with a single %
character, followed by zero or more modifiers, ending with the type specifier. Where this implementation of the printf
formatting code differs, is that there is no need to add length modifiers. Any length modifers will simply be ignored.
Custom types are supported through custom formatting functions. To define a custom formatting function for a specific type, the following function specialization needs to be implemented:
Where:
buffer
is a byte buffer to write the result into. If buffer
is a nullptr
, then the function should return the number of bytes required to store the final result.buffer_size
is the size of the byte buffer passed in via buffer
. This should be ignored if buffer
is nullptr
.buffer
is nullptr
, the amount of bytes needed to write out the entire custom type representation.A user-defined string literal to construct UT_StringHolder objects. E.g:
using UT::BVHOrderedStack = typedef UT_Array<BVHOrderedStackEntry> |
using UT::BVHOrderedStackSmall = typedef UT_SmallArray<BVHOrderedStackEntry,256> |
using UT::BVHUnorderedStack = typedef UT_Array<UT::BVH<4>::INT_TYPE> |
using UT::BVHUnorderedStackSmall = typedef UT_SmallArray<UT::BVH<4>::INT_TYPE,128> |
using UT::ItemIndex_UnderlyingIntegerType_t = typedef typename ItemIndex_UnderlyingIntegerType< ITEM_INDEX >::type |
Definition at line 116 of file UT_RTree.h.
Definition at line 296 of file UT_RTree.h.
using UT::RTree16Int = typedef RTreeT< int, 16 > |
Definition at line 290 of file UT_RTree.h.
using UT::RTree2Int = typedef RTreeT< int, 2 > |
Definition at line 291 of file UT_RTree.h.
using UT::RTreeBox = typedef UT_BoxT< fpreal64 > |
Definition at line 306 of file UT_RTree.h.
using UT::RTreeBoxD = typedef UT_BoxT< fpreal64 > |
Definition at line 305 of file UT_RTree.h.
using UT::RTreeBoxF = typedef UT_BoxT< fpreal32 > |
Definition at line 304 of file UT_RTree.h.
using UT::RTreeConfiguration = typedef RTreeConfigurationT< fpreal64 > |
Definition at line 301 of file UT_RTree.h.
using UT::RTreeConfigurationD = typedef RTreeConfigurationT< fpreal64 > |
Definition at line 300 of file UT_RTree.h.
using UT::RTreeConfigurationF = typedef RTreeConfigurationT< fpreal32 > |
Definition at line 299 of file UT_RTree.h.
using UT::RTreeInt = typedef RTreeT< int, 2 > |
Definition at line 292 of file UT_RTree.h.
|
strong |
Used by BVH::init to specify the heuristic to use for choosing between different box splits. I tried putting this inside the BVH class, but I had difficulty getting it to compile.
|
strong |
Enumerator | |
---|---|
UT_MIG_OK | |
UT_MIG_MISSING_FIELD | |
UT_MIG_MISSING_MODEL | |
UT_MIG_FIELD_ALREADY_EXISTS | |
UT_MIG_MODEL_MISSING | |
UT_MIG_MODEL_ALREADY_EXISTS |
Definition at line 38 of file UT_ORMMigrationBuilder.h.
|
strong |
|
strong |
Error codes to describe ORM errors.
Enumerator | |
---|---|
UT_ORM_OK | |
UT_ORM_NOT_SUPPORTED | |
UT_ORM_OPERATION_FAILED | |
UT_ORM_INCORRECT_TYPE | |
UT_ORM_BAD_MIGRATION | |
UT_ORM_MIG_MISSING_COL | |
UT_ORM_MIG_INV_COL_TYPE | |
UT_ORM_MIG_INV_COL_PROP | |
UT_ORM_MIG_MISSING |
Definition at line 46 of file UT_SQLORM.h.
|
noexcept |
|
noexcept |
|
noexcept |
|
inlinenoexcept |
Computes the number of items per node entry and fills in node_nitems.
Definition at line 3011 of file UT_BVHImpl.h.
RTreeT< ITEM_INDEX, MAX_ORDER > UT::constructRTree | ( | const UT_BoxT< FT > | item_box[], |
const ITEM_INDEX | num_items | ||
) |
RTreeT< ITEM_INDEX, MAX_ORDER > UT::constructRTree | ( | const UT_Array< UT_BoxT< FT > > & | item_box | ) |
RTreeConfigurationT< FT > UT::constructRTreeConfiguration | ( | const UT::RTreeT< ITEM_INDEX, MAX_ORDER > & | tree, |
const UT_BoxT< FT > | item_box[], | ||
const ITEM_INDEX | num_items | ||
) |
RTreeConfigurationT< FT > UT::constructRTreeConfiguration | ( | const RTreeT< ITEM_INDEX, MAX_ORDER > & | tree, |
const UT_Array< UT_BoxT< FT > > & | item_box | ||
) |
|
noexcept |
Fills in node_boxes as interleaved child boxes, possibly in parallel if there are enough nodes. ITEM_BOX should act like UT::Box<T,NAXES>, and the length should be the number of items. NODE_BOX should act like UT::Box<v4uf,NAXES> or UT::Box<UT_FixedVector<T,BVH_N>,NAXES>, and the length should be bvh.getNumNodes().
Definition at line 2139 of file UT_BVHImpl.h.
|
noexcept |
Fills in node_boxes as interleaved child boxes, possibly in parallel if there are enough nodes. ITEM_BOX should act like UT::Box<T,NAXES> or UT_FixedVector<T,NAXES>, and the length should be the number of items. NODE_BOX should act like UT::Box<v4uf,NAXES> or UT::Box<UT_FixedVector<T,4>,NAXES>, and the length should be bvh.getNumNodes().
Definition at line 2410 of file UT_BVHImpl.h.
|
noexcept |
Fills in node_boxes, possibly in parallel if there are enough nodes. ITEM_BOX should act like UT::Box<T,NAXES>, and the length should be the number of items. NODE_BOX should act like UT::Box<T,NAXES>, and the length should be bvh.getNumNodes().
Definition at line 2094 of file UT_BVHImpl.h.
|
noexcept |
NOTE: If farthest is true, max_dist_squared is actually min_dist_squared. NOTE: If indices_mapping is non-null, it maps from BVH item indices to indices into positions and radii. NOTE: If reordered is true, item indices in bvh must be monotone strictly increasing, but may not be contiguous, so that multiple points can be in the same leaf. This is independent of whether indices_mapping is valid, but no mapping means that positions and radii would have to be reordered too.
Definition at line 4039 of file UT_BVHImpl.h.
|
inline |
For each item i for which item_box[i] intersects query_box, call accept_item( i ). There must exist a free-standing 'intersects' function that takes a QUERY_SHAPE and a UT_BoxT< FT >.
Definition at line 913 of file UT_RTreeImpl.h.
|
inline |
Definition at line 892 of file UT_RTreeImpl.h.
|
noexcept |
Fills box_indices array with the indices of all boxes intersecting query_box. NOTE: This does not clear out previous contents of indices, so that you can easily query intersection with multiple boxes. WARNING: DO NOT depend on the order of box_indices. If you need a consistent order, sort it.
Definition at line 2444 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 2756 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 2467 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 2609 of file UT_BVHImpl.h.
|
inline |
Definition at line 947 of file UT_RTreeImpl.h.
UT_API const UT_ErrorCategory& UT::GetOrmErrorCategory | ( | ) |
UT_API const UT_ErrorCategory& UT::GetOrmMigErrorCategory | ( | ) |
UT_API const UT_ErrorCategory& UT::GetSqlErrorCategory | ( | ) |
UT_API const UT_ErrorCategory& UT::GetSqliteErrorCategory | ( | ) |
|
inline |
Definition at line 838 of file UT_RTreeImpl.h.
|
inline |
Definition at line 51 of file UT_ORMMigrationBuilder.h.
|
inline |
|
inline |
Definition at line 62 of file UT_SQLORM.h.
|
inline |
Definition at line 477 of file UT_RTreeImpl.h.
|
inline |
Definition at line 606 of file UT_RTreeImpl.h.
|
inline |
Definition at line 319 of file UT_RTreeImpl.h.
|
inline |
Definition at line 228 of file UT_RTreeImpl.h.
|
inline |
Definition at line 846 of file UT_RTreeImpl.h.
|
inline |
Definition at line 882 of file UT_RTreeImpl.h.
|
noexcept |
Definition at line 58 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 83 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 130 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 134 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 138 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 34 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 45 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 67 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 74 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 91 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 95 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 99 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 103 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 111 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 120 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 2885 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 2238 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 155 of file UT_BVHImpl.h.
SYS_FORCE_INLINE void UT::utHandleRadiiLinearly | ( | float & | d2, |
const RADIUS_ARRAY & | radii, | ||
uint | index | ||
) |
Definition at line 3077 of file UT_BVHImpl.h.
|
noexcept |
Definition at line 3908 of file UT_BVHImpl.h.