|
|
@ -126,7 +126,7 @@ bool get_oct_vox(
|
|
|
|
parent_stack[parent_stack_position] = head;
|
|
|
|
parent_stack[parent_stack_position] = head;
|
|
|
|
|
|
|
|
|
|
|
|
// Set our initial dimension and the position at the corner of the oct to keep track of our position
|
|
|
|
// Set our initial dimension and the position at the corner of the oct to keep track of our position
|
|
|
|
int dimension = 128;
|
|
|
|
int dimension = OCTDIM;
|
|
|
|
int3 quad_position = zeroed_int3;
|
|
|
|
int3 quad_position = zeroed_int3;
|
|
|
|
|
|
|
|
|
|
|
|
// While we are not at the required resolution
|
|
|
|
// While we are not at the required resolution
|
|
|
@ -192,16 +192,17 @@ bool get_oct_vox(
|
|
|
|
// Negate it by one as it counts itself
|
|
|
|
// Negate it by one as it counts itself
|
|
|
|
int count = popcount((uchar)(head >> 16) & count_mask_8[mask_index]) - 1;
|
|
|
|
int count = popcount((uchar)(head >> 16) & count_mask_8[mask_index]) - 1;
|
|
|
|
|
|
|
|
|
|
|
|
//bool jumping = false;
|
|
|
|
// access the far point at which the head points too. Determine it's value, and add
|
|
|
|
//if (far_bit_mask & descriptor_buffer[current_index])
|
|
|
|
// a count of the valid bits to the index
|
|
|
|
// jumping = true;
|
|
|
|
if (far_bit_mask & octree_descriptor_buffer[current_index]) {
|
|
|
|
|
|
|
|
int far_pointer_index = current_index + (head & child_pointer_mask);
|
|
|
|
|
|
|
|
current_index = octree_descriptor_buffer[far_pointer_index] + count;
|
|
|
|
|
|
|
|
}
|
|
|
|
// access the element at which head points to and then add the specified number of indices
|
|
|
|
// access the element at which head points to and then add the specified number of indices
|
|
|
|
// to get to the correct child descriptor
|
|
|
|
// to get to the correct child descriptor
|
|
|
|
current_index = current_index + (head & child_pointer_mask) + count;
|
|
|
|
else {
|
|
|
|
|
|
|
|
current_index = current_index + (head & child_pointer_mask) + count;
|
|
|
|
//if (jumping == true)
|
|
|
|
}
|
|
|
|
// current_index = descriptor_buffer[current_index];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
head = octree_descriptor_buffer[current_index];
|
|
|
|
head = octree_descriptor_buffer[current_index];
|
|
|
|
|
|
|
|
|
|
|
|
// Increment the parent stack position and put the new oct node as the parent
|
|
|
|
// Increment the parent stack position and put the new oct node as the parent
|
|
|
@ -323,7 +324,7 @@ __kernel void raycaster(
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
constant int vox_dim = 128;
|
|
|
|
constant int vox_dim = OCTDIM;
|
|
|
|
|
|
|
|
|
|
|
|
// If we hit a voxel
|
|
|
|
// If we hit a voxel
|
|
|
|
if (voxel.x < vox_dim && voxel.y < vox_dim && voxel.z < vox_dim){
|
|
|
|
if (voxel.x < vox_dim && voxel.y < vox_dim && voxel.z < vox_dim){
|
|
|
|