diff --git a/src/main_lbvh.cpp b/src/main_lbvh.cpp index a92221ee..af1cd585 100644 --- a/src/main_lbvh.cpp +++ b/src/main_lbvh.cpp @@ -1036,21 +1036,18 @@ void findRegion(int *i_begin, int *i_end, int *bit_index, const std::vector= 0; --b) { - int l = getBit(codes[i_node-1], b); - int m = getBit(codes[i_node], b); - int r = getBit(codes[i_node+1], b); - if (l == 0 && m == 0 && r == 1) { + int i_bit = NBITS-1; + for (; i_bit >= 0; --i_bit) { + int b2 = getBit(codes[i_node - 1], i_bit); + int b1 = getBit(codes[i_node], i_bit); + int b0 = getBit(codes[i_node + 1], i_bit); + int mask = (b2 << 2) | (b1 << 1) | (b0); + if (mask == 0b001) { dir = -1; - found_bit = b; break; - } - - if (l == 0 && m == 1 && r == 1) { + } else if (mask == 0b011) { dir = 1; - found_bit = b; break; } }