37 #ifndef PCL_GPU_OCTREE_ITERATOR 38 #define PCL_GPU_OCTREE_ITERATOR 45 template<
int CTA_SIZE,
int STACK_DEPTH>
48 typedef int Storage[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;
132 node_idx = octree.
parent[node_idx];
140 int parent = octree.
nodes[octree.
parent[node_idx]];
141 int parent_first = parent >> 8;
142 int parent_len = __popc(parent & 0xFF);
144 int pos = node_idx - parent_first;
146 lenght = 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)
__device__ __forceinline__ int operator*() const
int Storage[STACK_DEPTH][CTA_SIZE]
__device__ __forceinline__ OctreeIteratorDeviceNS(const OctreeGlobalWithBox &octree_arg)