1.GPU上构建BVH树并行光线追踪方法,其步骤为:
1)读取3D场景模型,设置三角形的模型图形元,这些图形元三角形数据存储在GPU显存中;
2)创建一个动态增长存储BVH节点的空间;
3)根据模型图形元,分别求X轴、Y轴和Z轴的跨度,并且求出最大值,以这个最大值的坐标轴使用SAH机制划分空间;
4)判断由步骤3)分割的子节点当中的三角形数目是否大于1,若大于1返回到步骤
3),反之下一步;
5)BVH-tree构造完毕,输出线性结构BVHlist数组;
6)根据视点和投影面构造射线;
7)构造一个BVH元素的堆栈,声明变量stackoffset=0;
8)取当前射线与当前所指BVHlist节点做相交测试;
9)如果当前射线与这个BVH节点不相交,而且如果stackoffset为0,表明当前光线没有与场景相交,结束当前射线的光线追踪;反之stackoffset大于0,那么stackoffset减
1,并且把当前节点设置为栈中偏移量为stackoffset的节点,转移到步骤8);如果当前射线与这个BVH节点相交转移到步骤10);
10)判断该BVH节点中是否有图形元三角形,如果有,说明当前射线与一个BVH树的叶子节点正方体有相交,并继续测试该射线与节点内的三角形是否相交,如果相交就把当前的节点和三角形序号交给该射线;同时若stackoffset等于0,则结束当前射线的光线追踪;若stackoffset大于0就减1,并且把当前节点设置为栈中偏移量为stackoffset的节点,转移到步骤8);如果BVH节点没有图形元三角形就转移到步骤11);
11)根据当前节点的右节点标记变量,把右节点序号放入栈中,然后stackoffset加1,把当前节点设置为之前节点的左节点,转移到步骤8)。