37 #ifndef PCL_GPU_OCTREE_ITERATOR
38 #define PCL_GPU_OCTREE_ITERATOR
45 template<
int CTA_SIZE,
int STACK_DEPTH>
48 using Storage =
int[STACK_DEPTH][CTA_SIZE];
56 storage[
level][threadIdx.x] = (0 << 8) + 1;
62 storage[
level][threadIdx.x] = (first << 8) + len;
67 return storage[
level][threadIdx.x] >> 8;
74 int data = storage[
level][threadIdx.x];
76 if ((data & 0xFF) > 1)
79 storage[
level][threadIdx.x] = data;
141 int parent_first = parent >> 8;
142 int parent_len = __popc(parent & 0xFF);
144 int pos = node_idx - parent_first;
146 length = parent_len - pos;
const OctreeGlobalWithBox & octree
__device__ __forceinline__ void operator++()
__device__ __forceinline__ OctreeIteratorDevice(Storage &storage_arg)
__device__ __forceinline__ void gotoNextLevel(int first, int len)
__device__ __forceinline__ void operator++()
__device__ __forceinline__ int operator*() const
__device__ __forceinline__ void gotoNextLevel(int first, int len)
int[STACK_DEPTH][CTA_SIZE] Storage
__device__ __forceinline__ int operator*() const
__device__ __forceinline__ OctreeIteratorDeviceNS(const OctreeGlobalWithBox &octree_arg)