Optimise BVH

This commit is contained in:
CJSatnarine
2024-07-08 17:54:58 -04:00
parent 80f3aff65d
commit 8a50479e27
5 changed files with 926 additions and 909 deletions

9
bvh.h
View File

@@ -14,7 +14,12 @@ class bvh_node : public hittable {
}
bvh_node(std::vector<shared_ptr<hittable>>& objects, size_t start, size_t end) {
int axis = randomInt(0,2);
bBox = aabb::empty;
for (size_t objectIndex = start; objectIndex < end; objectIndex++) {
bBox = aabb(bBox, objects[objectIndex]->boundingBox());
}
int axis = bBox.longestAxis();
auto comparator = (axis == 0) ? boxXCompare
: (axis == 1) ? boxYCompare
@@ -34,8 +39,6 @@ class bvh_node : public hittable {
left = make_shared<bvh_node>(objects, start, mid);
right = make_shared<bvh_node>(objects, mid, end);
}
bBox = aabb(left->boundingBox(), right->boundingBox());
}
bool hit(const ray& r, interval ray_t, hitRecord& rec) const override {