一种采用双层BVH的光线追踪硬件加速器及其应用方法技术

技术编号:38996475 阅读:9 留言:0更新日期:2023-10-07 10:27
本发明专利技术公开了一种采用双层BVH的光线追踪硬件加速器及其应用方法,本发明专利技术的光线追踪硬件加速器包括:栈,用于暂存光线遍历的节点,且每一个项目包含用来指示此节点是否处于局部坐标系的本地标记位isLocal以及用来指示此节点是否为底层BVH的根节点标记位isRoot;光线遍历单元,用于测试光线与当前节点的两个子节点是否相交并计算出相交的距离;坐标系转换模块,将当前光线从世界坐标系转换到局部坐标系;三角形相交测试单元,用于判断光线与三角形图元是否相交并计算交点。本发明专利技术旨在实现采用双层BVH进行光线追踪时硬件加速器设计,以简单的硬件结构、增加较少的硬件开销的基础上,显著提升动态场景光线追踪的效率。显著提升动态场景光线追踪的效率。显著提升动态场景光线追踪的效率。

【技术实现步骤摘要】
一种采用双层BVH的光线追踪硬件加速器及其应用方法


[0001]本专利技术涉及计算机图像渲染的硬件设计领域,具体涉及一种采用双层BVH的光线追踪硬件加速器及其应用方法。

技术介绍

[0002]如今大多数高质量、逼真的渲染图都依赖于光线追踪技术。光线追踪算法沿着到达视点的光线反方向追踪,经过屏幕上每一个像素,找出与视线相交的物体表面点P0,并继续追踪,找出影响P0点光强的所有光源,从而算出P0点上精确的光线强度,在渲染器中渲染生成纹理效果,是计算机图形学的核心算法之一。光线追踪模拟光与物体表面的相互作用,根据光照射到物体表面产生的反射光、折射光和阴影等再次到场景中进行相交测试,因此计算量巨大。光线追踪应用通常分为交互应用和非交互应用。交互应用通常用于动态渲染3D图像,非交互应用通常用于对实时性要求不高的应用场景。为了追求更高的光线追踪性能,在现代光线追踪中通常使用加速数据结构,如BVH、kd

tree等。通过引入这些加速数据结构可以加速光线与场景中图元的相交测试,但每一帧图像都必须重构这些加速数据结构,会带来非常大的构建成本。OptiX和Embree等光线追踪架构能够提供并行和优化后的包围盒层次结构(bounding volume hierarchy,BVH)构建效果,BVH现在可以以每秒数百万个图元的速度从头开始构建BVH。然而,对于如动画、游戏等内容的交互式渲染,构建BVH的成本为每帧可用的图元数量设置了上限。
[0003]在现代学术研究和工程实践中,提出了双层BVH加速数据结构的概念,这一概念是基于这样一个发现:场景的大部分图元通常在很长一段时间内保持静止,这些图元在动态场景中无需重构,剩余部分可以进行结构完整的转换,如刚体运动或仿射转换进行重构。这种方法最初于2003年提出针对kd

tree的设计,后来也用于BVH。为避免重构加速数据结构,采用的方法可以简单表述为,不在所有图元上构建单个BVH,而是将图元分组为逻辑对象,为这些对象构建BVH,并在这些对象上构建第二层BVH。这样的设计允许只进行选择性地更新需要更改的对象,而后通过相对简单的变换过程。图1简述了顶层BVH到实例化后的底层BVH的转换过程。这个变换过程主要包括顶层BVH、实例化列表和底层BVH。实例化列表(在下文中表述为实例化描述数组)包括转换矩阵和对象ID,底层BVH为未进行重构的加速数据结构部分。转换矩阵的作用是:在3维空间中的物体与转换矩阵点乘可以得到线性变换后空间向量;对象ID主要是为了获取需要转换对象的转换矩阵。光线变换到局部坐标系就是通过光线的源点和方向向量与变换矩阵点乘来获得的。底层BVH本身不发生变换,仅光线变换进行线性变换,依此来达到局部坐标系与世界坐标系的转换。在顶层BVH中,指向底层BVH的叶节点会指向一个实例化对象,用来索引具体的底层BVH,并完成世界坐标系到局部坐标系的变换。
[0004]通过双层BVH的实现,将交互应用中的场景分为两类,即静态的物体和非结构性变化的物体。对于静态的物体,光线遍历的过程与常规的BVH一致。对于非结构性变化的物体,光线可以通过仿射变换与对象相交,物体本身不发生变化,而是将变换的光线与未变换的
物体进行相交测试,这样可以得到与场景对象变换一致的结果,这样会稍微增加每条光线处理时的开销,但显著减少重构加速数据结构的开销。
[0005]在光线追踪硬件加速器设计中,结合双层BVH进行定制化设计,能够有效地减少重构BVH的时间开销。但是,现有双层BVH的设计实现均是基于通用CPU或GPU平台进行设计实现,在学术研究和商业界中暂无对这种特殊构造的BVH进行定制化的设计,设计支持双层BVH的光线追踪硬件加速器实现方法及装置可以在面向动态场景应用中更加高效。

技术实现思路

[0006]本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种采用双层BVH的光线追踪硬件加速器及其应用方法,本专利技术旨在实现采用双层BVH进行光线追踪时硬件加速器设计,以简单的硬件结构、增加较少的硬件开销的基础上,显著提升动态场景光线追踪的效率。
[0007]为了解决上述技术问题,本专利技术采用的技术方案为:
[0008]一种采用双层BVH的光线追踪硬件加速器,包括:
[0009]栈,由硬件存储结构与控制逻辑共同组成,用于暂存光线遍历的节点,且每一个项目包含用来指示此节点是否处于局部坐标系的本地标记位isLocal以及用来指示此节点是否为底层BVH的根节点标记位isRoot;
[0010]光线遍历单元,用于测试光线与该节点的两个子节点的相交情况,如果光线与该节点的两个子节点都相交,则将相交距离较远的子节点压入栈中,此时若该节点指向底层BVH的根节点,则将栈中对应项的本地标记位isLocal和根节点标记位isRoot置1;如果光线与两个子节点都不相交时,会向栈发出弹栈请求,且在发出弹栈请求后进行弹栈操作时,如果该节点当前位于局部坐标系中,而栈顶指针指向的节点位于世界坐标系,则将光线恢复到世界坐标系,然后会将栈中的节点取出再次进行遍历,如果BVH的前项遍历或回溯弹栈时待遍历的下一个节点是一个底层BVH的根节点,则利用实例化描述数组将光线变换到改局部坐标系中,并取出对应的根节点;
[0011]坐标系转换模块,将当前光线从世界坐标系转换到局部坐标系,更新本地标记位isLocal;
[0012]三角形相交测试单元,用于判断光线与三角形图元是否相交并计算交点。
[0013]可选地,所述双层BVH树中每一个节点的存储结构大小为四个16字节,其中前三个16字节用于存储层次包围体BVH中的两个包围盒的坐标,最后的一个16字节存储有两个用于表示层次包围体BVH的子节点类型的字段nmask0和字段nmask1;子节点类型的值为0表示子节点为无效节点,为1表示子节点为内部节点,为2表示子节点为叶节点,且叶节点为三角形图元,值为3表示子节点为底层BVH的根节点。
[0014]可选地,所述字段nmask0和字段nmask1均为一个字节大小。
[0015]可选地,所述前三个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。
[0016]可选地,所述最后的一个16字节中,还存储有包围盒C0的地址C0 Address和包围盒C1的地址C1 Address。
[0017]可选地,所述最后的一个16字节中,还存储有32位的填充区Padded。
[0018]可选地,所述最后的一个16字节中,还存储有两个子节点的图元个数,所述图元个数是指两个子节点为叶子节点时叶子节点中包含三角形图元的数量。
...

【技术保护点】

【技术特征摘要】
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的值是否为...

【专利技术属性】
技术研发人员:黄立波闫润苏垠郭辉郑重邓全郭维雷国庆王俊辉隋兵才孙彩霞王永文倪晓强
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1