再学一周光线追踪 bvh树流程
蒙特卡洛光线追踪技术系列 见 蒙特卡洛光线追踪技术
这次详细分析一下《再学一周光线追踪》里面bvh树和包围盒绑定的流程,为了加入三角面片来进行优化。
Sphere类
在hitable类的派生类sphere中只有一个返回项bounding_box,返回sphere的包围盒。但是sphere和这个返回的包围盒并没有直接联系。
BVHTree
void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));
-
base-- 指向要排序的数组的第一个元素的指针。
-
nitems-- 由 base 指向的数组中元素的个数。
-
size-- 数组中每个元素的大小,以字节为单位。
-
compar-- 用来比较两个元素的函数,即函数指针(回调函数)
目的是把base里面的内容进行排序
box_x_compare,box_y_compare,box_z_compare 这三个函数就是用来让qsort分别根据x轴,y轴,z轴来给里面的元素进行排序。