|
883 | 883 |
|
884 | 884 | class bvh_node : public hittable {
|
885 | 885 | public:
|
886 |
| - bvh_node(const hittable_list& list) : bvh_node(list.objects, 0, list.objects.size()) {} |
| 886 | + bvh_node(hittable_list list) : bvh_node(list.objects, 0, list.objects.size()) {} |
887 | 887 |
|
888 |
| - bvh_node(const std::vector<shared_ptr<hittable>>& src_objects, size_t start, size_t end) { |
| 888 | + bvh_node(std::vector<shared_ptr<hittable>>& objects, size_t start, size_t end) { |
889 | 889 | // To be implemented later.
|
890 | 890 | }
|
891 | 891 |
|
|
940 | 940 | class bvh_node : public hittable {
|
941 | 941 | public:
|
942 | 942 | ...
|
943 |
| - bvh_node(const std::vector<shared_ptr<hittable>>& src_objects, size_t start, size_t end) { |
| 943 | + bvh_node(std::vector<shared_ptr<hittable>>& objects, size_t start, size_t end) { |
944 | 944 | int axis = random_int(0,2);
|
945 | 945 |
|
946 | 946 | auto comparator = (axis == 0) ? box_x_compare
|
947 | 947 | : (axis == 1) ? box_y_compare
|
948 | 948 | : box_z_compare;
|
949 | 949 |
|
950 |
| - auto objects = src_objects; // A modifiable array of the source scene objects |
951 |
| - |
952 | 950 | size_t object_span = end - start;
|
953 | 951 |
|
954 | 952 | if (object_span == 1) {
|
955 | 953 | left = right = objects[start];
|
956 | 954 | } else if (object_span == 2) {
|
957 |
| - if (comparator(objects[start], objects[start+1])) { |
958 |
| - left = objects[start]; |
959 |
| - right = objects[start+1]; |
960 |
| - } else { |
961 |
| - left = objects[start+1]; |
962 |
| - right = objects[start]; |
963 |
| - } |
| 955 | + left = objects[start]; |
| 956 | + right = objects[start+1]; |
964 | 957 | } else {
|
965 | 958 | std::sort(objects.begin() + start, objects.begin() + end, comparator);
|
966 | 959 |
|
|
1078 | 1071 | class bvh_node : public hittable {
|
1079 | 1072 | public:
|
1080 | 1073 | ...
|
1081 |
| - bvh_node(const std::vector<shared_ptr<hittable>>& src_objects, size_t start, size_t end) { |
| 1074 | + bvh_node(std::vector<shared_ptr<hittable>>& objects, size_t start, size_t end) { |
1082 | 1075 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
1083 | 1076 | // Build the bounding box of the span of source objects.
|
1084 | 1077 | bbox = aabb::empty;
|
1085 |
| - for (int object_index=start; object_index < end; object_index++) |
1086 |
| - bbox = aabb(bbox, src_objects[object_index]->bounding_box()); |
| 1078 | + for (size_t object_index=start; object_index < end; object_index++) |
| 1079 | + bbox = aabb(bbox, objects[object_index]->bounding_box()); |
1087 | 1080 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
1088 | 1081 |
|
1089 | 1082 | ...
|
|
1099 | 1092 | class bvh_node : public hittable {
|
1100 | 1093 | public:
|
1101 | 1094 | ...
|
1102 |
| - bvh_node(const std::vector<shared_ptr<hittable>>& src_objects, size_t start, size_t end) { |
| 1095 | + bvh_node(std::vector<shared_ptr<hittable>>& objects, size_t start, size_t end) { |
1103 | 1096 | // Build the bounding box of the span of source objects.
|
1104 | 1097 | bbox = aabb::empty;
|
1105 |
| - for (int object_index=start; object_index < end; object_index++) |
1106 |
| - bbox = aabb(bbox, src_objects[object_index]->bounding_box()); |
| 1098 | + for (size_t object_index=start; object_index < end; object_index++) |
| 1099 | + bbox = aabb(bbox, objects[object_index]->bounding_box()); |
1107 | 1100 |
|
1108 | 1101 |
|
1109 | 1102 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
|
0 commit comments