Games Task Scheduler (GTS)
A multi-processor scheduling framework for games engines
|
An iteration range over a 3D data set. Splits occur along the largest dimension unless the minimum size is reached for all dimensions. Successive splits result in a Kd-tree where each leaf represents a unit of work. More...
#include <KdRange3d.h>
Public Types | |
using | iter_type = TIterType |
using | range_type = Range1d< iter_type > |
using | split_result = SplitResult< KdRange3d, MAX_SPLITS, DIMENSIONALITY > |
using | size_type = typename range_type::size_type |
Public Member Functions | |
KdRange3d (KdRange3d const &)=default | |
GTS_INLINE | KdRange3d (iter_type xBegin, iter_type xEnd, size_type xMinSize, iter_type yBegin, iter_type yEnd, size_type yMinSize, iter_type zBegin, iter_type zEnd, size_type zMinSize, size_type xSplitOnMultiplesOf=1, size_type ySplitOnMultiplesOf=1, size_type zSplitOnMultiplesOf=1) |
Constructs a KdRange2d. More... | |
GTS_INLINE range_type const & | xRange () const |
GTS_INLINE range_type & | xRange () |
GTS_INLINE range_type const & | yRange () const |
GTS_INLINE range_type & | yRange () |
GTS_INLINE range_type const & | zRange () const |
GTS_INLINE range_type & | zRange () |
GTS_INLINE range_type const & | subRange (SubRangeIndex::Type index) const |
GTS_INLINE range_type & | subRange (SubRangeIndex::Type index) |
GTS_INLINE bool | isDivisible () const |
GTS_INLINE bool | empty () const |
GTS_INLINE size_t | size () const |
template<typename TSplitter > | |
GTS_INLINE void | split (split_result &result, TSplitter const &splitter) |
An iteration range over a 3D data set. Splits occur along the largest dimension unless the minimum size is reached for all dimensions. Successive splits result in a Kd-tree where each leaf represents a unit of work.
Derivative of TBB blocked_range3d. https://github.com/intel/tbb
|
inline |
Constructs a KdRange2d.
xBegin | An iterator to the beginning of the x-dimension range. |
xEnd | An iterator to the end of the x-dimension range. |
xMinSize | The smallest sub-range the x-dimension can be divided into. Must be >= splitOnMultiplesOf. |
yBegin | An iterator to the beginning of the y-dimension range. |
yEnd | An iterator to the end of the y-dimension range. |
yMinSize | The smallest sub-range the y-dimension can be divided into. Must be >= splitOnMultiplesOf. |
zBegin | An iterator to the beginning of the z-dimension range. |
zEnd | An iterator to the end of the z-dimension range. |
zMinSize | The smallest sub-range the z-dimension can be divided into. Must be >= splitOnMultiplesOf. |
xSplitOnMultiplesOf | Tries to ensure that each sub-range in the x-dimensions is a multiple of this value. |
ySplitOnMultiplesOf | Tries to ensure that each sub-range in the y-dimensions is a multiple of this value. |
zSplitOnMultiplesOf | Tries to ensure that each sub-range in the z-dimensions is a multiple of this value. |