started on the BVH build
[cyberay] / src / bvh.h
1 #ifndef BVH_H_
2 #define BVH_H_
3
4 #include "geom.h"
5
6 struct bvhnode {
7         struct aabox aabb;
8         int axis;
9
10         struct triangle *faces;
11         int num_faces, max_faces;
12
13         struct bvhnode *left, *right;
14 };
15
16 /* build_bvh* needs to be called with a pointer to a single-node tree,
17  * containing all the faces, left/right as null, and a pre-computed aabb
18  */
19 int build_bvh_sah(struct bvhnode *tree);
20 void free_bvh_tree(struct bvhnode *tree);
21
22 int ray_bvhnode(cgm_ray *ray, struct bvhnode *bn, float tmax, struct rayhit *hit);
23
24 #endif  /* BVH_H_ */