|
|
@ -23,8 +23,8 @@ void BVH::recursiveBuild(int level, int idx, int idx_u, int idx_v) { |
|
|
|
int firstChild = 4 * idx + 1; |
|
|
|
int halfRange = int(std::pow(2, maxLevel - level - 1)); // 当前层的曲面片的边长采样宽度的一半
|
|
|
|
recursiveBuild(level + 1, firstChild, idx_u, idx_v); |
|
|
|
recursiveBuild(level + 1, firstChild + 1, idx_u, idx_v + halfRange); |
|
|
|
recursiveBuild(level + 1, firstChild + 2, idx_u + halfRange, idx_v); |
|
|
|
recursiveBuild(level + 1, firstChild + 1, idx_u + halfRange, idx_v); |
|
|
|
recursiveBuild(level + 1, firstChild + 2, idx_u, idx_v + halfRange); |
|
|
|
recursiveBuild(level + 1, firstChild + 3, idx_u + halfRange, idx_v + halfRange); |
|
|
|
for (int i = 0; i < 4; i++) |
|
|
|
bound = Union(bound, tree[firstChild + i].bound); |
|
|
|