【技术实现步骤摘要】
一种采用双层BVH的光线追踪硬件加速器及其应用方法
[0001]本专利技术涉及计算机图像渲染的硬件设计领域,具体涉及一种采用双层BVH的光线追踪硬件加速器及其应用方法。
技术介绍
[0002]如今大多数高质量、逼真的渲染图都依赖于光线追踪技术。光线追踪算法沿着到达视点的光线反方向追踪,经过屏幕上每一个像素,找出与视线相交的物体表面点P0,并继续追踪,找出影响P0点光强的所有光源,从而算出P0点上精确的光线强度,在渲染器中渲染生成纹理效果,是计算机图形学的核心算法之一。光线追踪模拟光与物体表面的相互作用,根据光照射到物体表面产生的反射光、折射光和阴影等再次到场景中进行相交测试,因此计算量巨大。光线追踪应用通常分为交互应用和非交互应用。交互应用通常用于动态渲染3D图像,非交互应用通常用于对实时性要求不高的应用场景。为了追求更高的光线追踪性能,在现代光线追踪中通常使用加速数据结构,如BVH、kd
‑
tree等。通过引入这些加速数据结构可以加速光线与场景中图元的相交测试,但每一帧图像都必须重构这些加速数据结构,会带来非常大的构建成本。OptiX和Embree等光线追踪架构能够提供并行和优化后的包围盒层次结构(bounding volume hierarchy,BVH)构建效果,BVH现在可以以每秒数百万个图元的速度从头开始构建BVH。然而,对于如动画、游戏等内容的交互式渲染,构建BVH的成本为每帧可用的图元数量设置了上限。
[0003]在现代学术研究和工程实践中,提出了双层BVH加速数据结构的概念,
【技术保护点】
【技术特征摘要】
1.一种采用双层BVH的光线追踪硬件加速器,其特征在于,包括:栈,由硬件存储结构与控制逻辑共同组成,用于暂存光线遍历的节点,且每一个项目包含用来指示此节点是否处于局部坐标系的本地标记位isLocal以及用来指示此节点是否为底层BVH的根节点标记位isRoot;光线遍历单元,用于测试光线与该节点的两个子节点的相交情况,如果光线与该节点的两个子节点都相交,则将相交距离较远的子节点压入栈中,此时若该节点指向底层BVH的根节点,则将栈中对应项的本地标记位isLocal和根节点标记位isRoot置1;如果光线与两个子节点都不相交时,会向栈发出弹栈请求,且在发出弹栈请求后进行弹栈操作时,如果该节点当前位于局部坐标系中,而栈顶指针指向的节点位于世界坐标系,则将光线恢复到世界坐标系,然后会将栈中的节点取出再次进行遍历,如果BVH的前项遍历或回溯弹栈时待遍历的下一个节点是一个底层BVH的根节点,则利用实例化描述数组将光线变换到改局部坐标系中,并取出对应的根节点;坐标系转换模块,将当前光线从世界坐标系转换到局部坐标系,更新本地标记位isLocal;三角形相交测试单元,用于判断光线与三角形图元是否相交并计算交点。2.根据权利要求1所述的采用双层BVH的光线追踪硬件加速器,其特征在于,所述双层BVH树中每一个节点的存储结构大小为四个16字节,其中前三个16字节用于存储层次包围体BVH中的两个包围盒的坐标,最后的一个16字节存储有两个用于表示层次包围体BVH的子节点类型的字段nmask0和字段nmask1;子节点类型的值为0表示子节点为无效节点,为1表示子节点为内部节点,为2表示子节点为叶节点,且叶节点为三角形图元,值为3表示子节点为底层BVH的根节点。3.根据权利要求2所述的采用双层BVH的光线追踪硬件加速器,其特征在于,所述字段nmask0和字段nmask1均为一个字节大小。4.根据权利要求2所述的采用双层BVH的光线追踪硬件加速器,其特征在于,所述前三个16字节中,存储层次包围体BVH中的两个包围盒的坐标包括包围盒C0和包围盒C1的坐标,且包围盒C0和包围盒C1的坐标包括:包围盒C0的低位坐标C0.lo.x、C0.lo.y和C0.lo.z,包围盒C0的高位坐标C0.hi.x、C0.hi.y和C0.hi.z,包围盒C1的低位坐标C1.lo.x、C1.lo.y和C1.lo.z,包围盒C1的高位坐标C1.hi.x、C1.hi.y和C1.hi.z。5.根据权利要求4所述的采用双层BVH的光线追踪硬件加速器,其特征在于,所述最后的一个16字节中,还存储有包围盒C0的地址C0 Address和包围盒C1的地址C1 Address。6.根据权利要求5所述的采用双层BVH的光线追踪硬件加速器,其特征在于,所述最后的一个16字节中,还存储有32位的填充区Padded。7.根据权利要求6所述的采用双层BVH的光线追踪硬件加速器,其特征在于,所述最后的一个16字节中,还存储有两个子节点的图元个数,所述图元个数是指两个子节点为叶子节点时,叶子节点中包含三角形图元的数量。8.一种计算机设备,包括相互连接的微处理器和存储器,其特征在于,还包括权利要求1~7中任意一项所述的采用双层BVH的光线追踪硬件加速器,所述微处理器与采用双层BVH的光线追踪硬件加速器相连。9.一种计算机设备,包括相互连接的微处理器和存储器,其特征在于,所述微处理器中
包含权利要求1~7中任意一项所述的采用双层BVH的光线追踪硬件加速器。10.一种权利要求1~7中任意一项所述的采用双层BVH的光线追踪硬件加速器的应用方法,其特征在于,包括:S101,从光线数据中取出光线,初始化运行变量,初始化内容包括遍历栈、访问节点地址和一个用于指示光线处于局部坐标系下的全局标记位isLocal_global,其中访问节点地址初始为BVH的根节点,全局标记位isLocal_global的初始值为0;遍历栈中的每一项,包括本地标记位isLocal和根节点标记位isRoot两个标记位和节点id,将本地标记位isLocal初始值为0,根节点标记位isRoot初始值为1;S102,光线从根节点开始遍历,首先解码BVH的内存,获取子节点的地址和子节点的类型,子节点的类型包括内部节点、叶子节点或底层BVH,某条光线初始遍历时,处于世界坐标系下,光线遍历的终止条件为遍历栈为空且再次收到弹栈的请求;如果节点是内部节点或底层BVH,则根据全局标记位isLocal_global的值来获取BVH的数据:值为0表示从顶层BVH中取数据,值为1则从底层BVH中取数据;然后进行光线遍历测试,判断光线与节点的两个子节点是否相交并计算出相交的距离:
①
光线与节点的两个子节点都不相交:进行弹栈处理,通过全局标记位isLocal_global的值是否为...
【专利技术属性】
技术研发人员:黄立波,闫润,苏垠,郭辉,郑重,邓全,郭维,雷国庆,王俊辉,隋兵才,孙彩霞,王永文,倪晓强,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。