光线跟踪系统中的相交测试的方法、相交测试模块及介质与流程

文档序号:37298527发布日期:2024-03-13 20:46阅读:12来源:国知局
光线跟踪系统中的相交测试的方法、相交测试模块及介质与流程

本公开涉及在光线跟踪系统中执行相交测试的技术。


背景技术:

1、光线跟踪是一种计算渲染技术,其用于通过通常从相机的视角在场景中跟踪光路(‘光线’)来生成场景(例如,3d场景)的图像。每条光线被建模为源自相机,并通过像素进入场景。当光线横越场景时,其可能与场景内的物体相交。可对光线和其相交的物体之间的相交建模以创建逼真的视觉效果。例如,响应于确定光线与物体相交,可以针对相交执行着色器程序(即,计算机代码的一部分)。程序员可以编写着色器程序以定义系统如何对相交(所述相交例如可能导致向场景中发射一个或多个二次光线)作出反应,例如,以表示光线从相交物体的反射或光线通过物体的折射(例如,如果物体是透明或半透明的)。作为另一示例,着色器程序可以使一条或多条光线发射到场景中,以用于确定物体是否处于交点处的阴影中。执行着色器程序(和处理相关的二次光线)的结果可以是计算光线穿过的像素的颜色值。

2、使用光线跟踪渲染场景的图像可以涉及执行许多相交测试,例如执行数十亿个相交测试以渲染场景的图像。为了减少需要执行的相交测试的数量,光线跟踪系统可以生成加速结构,其中加速结构的每个节点表示场景内的区域。加速结构通常是分层的(例如,具有树结构),使得其包含多个级别的节点,其中靠近加速结构的顶部的节点表示场景中相对大的区域(例如,根节点可以表示整个场景),靠近加速结构的底部的节点表示场景中相对小的区域。“树节点”是指具有指向分层加速结构中的其它节点的指针的节点,即,树节点在分层加速结构中具有子节点。“叶节点”是指具有指向一个或多个图元的一个或多个指针的节点,即,叶节点在分层加速结构中不具有子节点。换句话说,加速结构的叶节点表示场景中界定一个或多个图元的区域。加速结构在不同示例中可具有不同结构,例如栅格结构、八叉树结构、空间分割结构(例如k-d树)或边界体积层次体系。节点可以表示场景中的合适形状或区域(其在本文中可以被称为“框”)。在一些示例中,节点表示场景中的轴对齐边界框(aabb)。

3、可以使用加速结构,通过首先测试光线与加速结构的根节点的相交(例如,以递归方式)对光线执行相交测试。如果发现光线与父节点(例如,根节点)相交,则测试可以进行到所述父节点的子节点。相比之下,如果发现光线不与父节点相交,则可以避免对所述父节点的子节点的相交测试,从而节省计算工作量。如果发现光线与叶节点相交,则可针对由叶节点表示的区域内的物体对所述光线进行测试,从而确定光线与哪个(些)物体相交。如果发现光线有多于一个交点,则可以标识与光线原点最接近的交点(即,光线在场景中遇到的第一次相交),并且可以确定光线在此标识的最接近交点处相交。有可能存在光线的多个最接近命中,并且在这种情况下,可以使用一些平局决胜(tie-break)逻辑来选择多个最接近命中中的一个以用作标识的最接近交点。对于一些类型的光线,可能不需要标识最接近的交点。例如,在处理阴影光线时,存在至少一个交点的指示是足够的,而无需确定哪一个交点最接近,并且一些api可以允许加速结构针对阴影光线的遍历响应于发现任何交点而终止,从而减少需要执行的相交测试的数量。使用加速结构(而非直接利用场景中的物体测试光线)减少了需要执行的相交测试的数量,并简化了相交测试。相交测试更加简单,因为加速结构的节点表示基本形状(例如,轴对齐边界框或球),针对这些基本形状的相交测试比针对更复杂的物体形状的相交测试更简单,例如,按照并未预先确定相对于坐标系轴的对齐的三角形图元定义基本形状。

4、光线(r)可被定义为r=o+dt,其中o是表示光线原点的向量,d是表示光线方向向量,并且t表示沿着光线距原点的距离。根据一种方法,可以通过针对x、y和z维度中的每一个发现区间t来针对轴对齐框测试光线,在所述区间内,光线在表示框的垂直于所述维度的侧面的两个平面之间。这针对t的值给出了三个区间(一个用于x维度,一个用于y维度,并且一个用于z维度)。如果这三个区间的交点(本身为区间)为空,则光线不与轴对齐框相交;而如果这三个区间的交点不为空,则光线可能与轴对齐框相交。这种相交测试方法涉及执行六个测试以发现三个区间t,然后执行比较以确定那些区间的交点是否为空。

5、根据另一方法,可以从光线的视角针对形成框的2d轮廓的框的边缘测试光线。如果光线在每一个轮廓边缘的内部通过,则确定光线与框相交,而如果光线在框的一个或多个轮廓边缘的外部通过,则确定光线不与框相交。aabb通常具有6个轮廓边缘(取决于从光线的视角看的aabb的取向),因此这种方法通常需要执行六个测试。

6、上述测试将确定与光线对齐的无限长的线是否将与框相交。然而,光线的长度通常不是无限的,并且光线可以具有一个或多个有效区间。例如,光线可以具有距光线原点的某一最小距离和某一最大距离,其可以按照t的最小值(被称为最小剔除距离,tmin)和t的最大值(被称为最大剔除距离,tmax)来定义。因此,可以执行最小距离测试以检查最小剔除距离不大于到光线与框的交点的最大相交距离;并且可以执行最大距离测试以检查最大剔除距离不小于到光线与框的交点的最小相交距离。在使用相交区间来确定光线是否与框相交的上述第一示例中,不执行单独的最小距离和最大距离测试,而是可以初始化起始区间以表示介于tmin与tmax之间的t值范围,使得只有在对于介于tmin与tmax之间的t值发生相交时,确定区间之间是否存在任何交点的结果才确定存在交点。范围tmin和tmax的每一个端点都可以包含在区间中或从区间中排除。

7、由于光线针对与加速结构的节点对应的形状(例如轴对齐框)的相交测试已执行多次,因此在专用硬件模块中例如使用固定功能电路系统来实施用于执行这些相交测试的功能而不使用在通用处理单元上执行的软件模块来实施这些相交测试可以是有益的。软件实施方案通常更加灵活,因为软件在被设计和/或创建之后比硬件实施方案更容易改变。然而,硬件实施方案通常在延迟和功耗方面提供更有效的实施方案,因此如果所需功能是事先已知的,则硬件实施方案可能优于软件实施方案。当设计被配置成用于执行相交测试的相交测试模块的硬件实施方案时,通常存在以下竞争目标:(i)有更小的尺寸(即,更小的硅面积),(ii)有更低的延迟,以及(iii)有更低的功耗。


技术实现思路

1、提供本
技术实现要素:
是为了以简化的形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

2、提供了一种在光线跟踪系统中执行光线与框的相交测试的方法,其中使用空间坐标系在3d空间中定义所述光线和所述框,并且其中利用光线原点和光线方向定义所述光线,所述方法包括:

3、使用光线坐标系来执行相交测试,其中所述光线坐标系在所述光线原点处具有原点,并且其中所述光线坐标系具有三个基向量,

4、其中所述基向量中的第一基向量与所述光线方向对齐;并且

5、其中所述基向量中的第二基向量和第三基向量:(i)都与所述第一基向量正交,(ii)彼此不平行,并且(iii)当在所述空间坐标系中表达时具有零作为一个分量;以及

6、输出执行所述相交测试的结果以供所述光线跟踪系统使用。

7、所述方法还可包括通过从定义所述框的位置的一个或多个位置向量减去所述光线原点来平移定义所述框的所述位置的所述一个或多个位置向量以用于执行所述相交测试。

8、当在所述空间坐标系中表达时,所述光线坐标系的所述基向量中的所述第二基向量和所述第三基向量可以具有值±1作为一个分量。

9、所述第一基向量s在用所述空间坐标系的分量表达时可为s=a(dx,dy,dz),其中所述第二基向量p在用所述空间坐标系的分量表达时可为p=b(dz,0,-dx);并且其中所述第三基向量q在用所述空间坐标系的分量表达时可为q=c(0,dz,-dy);其中dx、dy和dz是所述空间坐标系中的所述光线方向的分量,并且a、b和c是标量值。

10、b可以是分母为dx的简化分数,并且c可以是分母为dy的简化分数。

11、所述第一基向量s在用所述空间坐标系的分量表达时可为s=a(dx,dy,dz),其中所述第二基向量p在用所述空间坐标系的分量表达时可为并且其中所述第三基向量q在用所述空间坐标系的分量表达时可为其中dx、dy和dz是所述空间坐标系中的所述光线方向的分量,并且a是标量值。

12、所述第一基向量s在用所述空间坐标系的分量表达时可为s=a(dx,dy,dz),其中所述第二基向量p在用所述空间坐标系的分量表达时可为并且其中所述第三基向量q在用所述空间坐标系的分量表达时可为其中dx、dy和dz是所述空间坐标系中的所述光线方向的分量,并且a是标量值。

13、所述第一基向量s在用所述空间坐标系的分量表达时可为s=a(dx,dy,dz),其中所述第二基向量p在用所述空间坐标系的分量表达时可为并且其中所述第三基向量q在用所述空间坐标系的分量表达时可为其中dx、dy和dz是所述空间坐标系中的所述光线方向的分量,并且a是标量值。

14、所述第一基向量s在用所述空间坐标系的分量表达时可为s=a(dx,dy,dz),其中所述第二基向量p在用所述空间坐标系的分量表达时可为并且其中所述第三基向量q在用所述空间坐标系的分量表达时可为其中dx、dy和dz是所述空间坐标系中的所述光线方向的分量,并且a是标量值。

15、在一些示例中,

16、所述方法还可包括将所述光线和所述框从所述空间坐标系变换到所述光线坐标系中,其中可以在所述光线坐标系中执行所述相交测试。

17、可以使用固定功能电路系统来执行所述相交测试。所述固定功能电路系统可包括用于使用所述光线坐标系的所述第二基向量和所述第三基向量来执行乘法和加法的一个或多个乘与加部件。

18、所述方法还可包括在执行所述光线与所述轴对齐框的相交测试之前,选择性地排列所述光线和所述轴对齐框的所述分量,使得|dz|≥|dx|并且|dz|≥|dy|。

19、所述方法还可包括在执行所述光线与所述轴对齐框的相交测试之前,选择性地反转所述光线和所述轴对齐框的所述分量,使得dx≥0,dy≥0并且dz≥0。

20、可以针对所述光线预先计算以下中的至少一个的值并将其存储在存储装置中:和和和以及或dz,其中所述方法可包括从所述存储装置读取存储的值以用于执行相交测试。

21、可以在光线跟踪系统中使用输出的结果来渲染3d场景的图像。

22、所述框可以是界定要渲染的几何形状的轴对齐边界框。

23、所述框可对应于要用于在所述光线跟踪系统中执行相交测试的分层加速结构的节点。所述节点可以是用于在示例空间中表示几何形状的底层加速结构(blas)的一部分,并且所述方法可包括将所述光线变换到所述示例空间中。

24、提供了一种在光线跟踪系统中执行光线与框的相交测试的方法,其中使用空间坐标系在n维空间中定义所述光线和所述框,其中n≥3,并且其中利用光线原点和光线方向定义所述光线,所述方法包括:

25、使用光线坐标系来执行相交测试,其中所述光线坐标系在所述光线原点处具有原点,并且其中所述光线坐标系具有n个基向量,

26、其中所述基向量中的第一基向量与所述光线方向对齐,

27、其中所述基向量中的(n-1)个基向量与所述第一基向量正交,

28、其中所述(n-1)个基向量的对彼此不平行,并且

29、其中当在所述空间坐标系中表达时,所述(n-1)个基向量对于(n-2)个分量具有零;以及

30、输出执行所述相交测试的结果以供所述光线跟踪系统使用。

31、提供了一种在光线跟踪系统中使用的相交测试模块,其被配置成执行光线与框的相交测试,其中使用空间坐标系在3d空间中定义所述光线和所述框,并且其中利用光线原点和光线方向定义所述光线,所述相交测试模块被配置成进行以下操作:

32、使用光线坐标系来执行相交测试,其中所述光线坐标系在所述光线原点处具有原点,并且其中所述光线坐标系具有三个基向量,

33、其中所述基向量中的第一基向量与所述光线方向对齐;并且

34、其中所述基向量中的第二基向量和第三基向量:(i)都与所述第一基向量正交,(ii)彼此不平行,并且(iii)当在所述空间坐标系中表达时具有零作为一个分量;以及

35、输出执行所述相交测试的结果以供所述光线跟踪系统使用。

36、所述第一基向量s在用所述空间坐标系的分量表达时可为s=a(dx,dy,dz),其中所述第二基向量p在用所述空间坐标系的分量表达时可为p=b(dz,0,-dx);并且其中所述第三基向量q在用所述空间坐标系的分量表达时可为q=c(0,dz,-dy);其中dx、dy和dz是所述空间坐标系中的所述光线方向的分量,a是标量值,并且:(i)并且或(ii)并且

37、所述相交测试模块可包括被配置成使用所述光线坐标系来执行相交测试的固定功能电路系统。所述固定功能电路系统可包括用于使用所述光线坐标系的所述第二基向量和所述第三基向量来执行乘法和加法的一个或多个乘与加部件。

38、所述相交测试模块还可包括被配置成针对所述光线存储以下中的至少一个的值的存储装置:(i)和(ii)和(iii)和以及(iv)或dz,其中所述相交测试模块可被配置成从所述存储装置读取存储的值以用于执行相交测试。

39、提供了一种在光线跟踪系统中使用的相交测试模块,其被配置成执行光线与框的相交测试,其中使用空间坐标系在n维空间中定义所述光线和所述框,其中n≥3,并且其中利用光线原点和光线方向定义所述光线,所述相交测试模块被配置成进行以下操作:

40、使用光线坐标系来执行相交测试,其中所述光线坐标系在所述光线原点处具有原点,并且其中所述光线坐标系具有n个基向量,

41、其中所述基向量中的第一基向量与所述光线方向对齐,

42、其中所述基向量中的(n-1)个基向量与所述第一基向量正交,

43、其中所述(n-1)个基向量的对彼此不平行,并且

44、其中当在所述空间坐标系中表达时,所述(n-1)个基向量对于(n-2)个分量具有零;以及

45、输出执行所述相交测试的结果以供所述光线跟踪系统使用。

46、可以提供一种相交测试模块,其被配置成执行本文所描述的任一种方法。

47、可以提供一种计算机可读代码,其被配置成在所述代码运行时使本文所描述的任一种方法得以执行。

48、可以提供一种在光线跟踪系统中确定光线是否与三维轴对齐框相交的方法,所述方法包括:

49、确定是否满足第一条件,其中所述第一条件是或等效于

50、确定是否满足第二条件,其中所述第二条件是或等效于

51、确定是否满足第三条件,其中所述第三条件是或等效于以及

52、使用是否满足所述第一条件、所述第二条件和所述第三条件的所述确定来确定所述光线是否与所述轴对齐框相交;

53、其中cx、cy和cz是所述轴对齐框的中心相对于所述光线的原点的位置的x、y和z分量,其中hx、hy和hz是所述轴对齐框在x、y和z维度中的半宽度,并且其中dx、dy和dz是所述光线的方向向量的x、y和z分量。

54、可以提供一种在光线跟踪系统中使用的相交测试模块,其被配置成确定光线是否与三维轴对齐框相交,所述相交测试模块被配置成:

55、确定是否满足第一条件,其中所述第一条件是或等效于

56、确定是否满足第二条件,其中所述第二条件是或等效于

57、确定是否满足第三条件,其中所述第三条件是或等效于以及

58、使用是否满足所述第一条件、所述第二条件和所述第三条件的所述确定来确定所述光线是否与所述轴对齐框相交;

59、其中cx、cy和cz是所述轴对齐框的中心相对于所述光线的原点的位置的x、y和z分量,其中hx、hy和hz是所述轴对齐框在x、y和z维度中的半宽度,并且其中dx、dy和dz是所述光线的方向向量的x、y和z分量。

60、所述相交测试模块可以在集成电路上以硬件体现。可以提供一种在集成电路制造系统处制造相交测试模块的方法。可以提供一种集成电路定义数据集,当在集成电路制造系统中被处理时,所述集成电路定义数据集将系统配置成制造相交测试模块。可以提供一种非瞬态计算机可读存储介质,其上存储有相交测试模块的计算机可读描述,当在集成电路制造系统中被处理时,所述计算机可读描述使集成电路制造系统制造体现相交测试模块的集成电路。

61、可以提供一种集成电路制造系统,其包括:非瞬态计算机可读存储介质,其上存储有相交测试模块的计算机可读描述;布局处理系统,其被配置成处理计算机可读描述以便生成体现相交测试模块的集成电路的电路布局描述;以及集成电路生成系统,其被配置成根据电路布局描述来制造相交测试模块。

62、可以提供用于执行本文所述的任一种方法的计算机程序代码。可以提供非瞬态计算机可读存储介质,所述非瞬态计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令在计算机系统处执行时使计算机系统执行本文所述的任一种方法。

63、如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1