光线跟踪系统中的相交测试技术方案

技术编号:35056526 阅读:15 留言:0更新日期:2022-09-28 11:03
本发明专利技术涉及光线跟踪系统中的相交测试。提供了一种用于在光线跟踪系统中执行光线与凸多边形的相交测试的方法和相交测试模块。使用空间坐标系在3D空间中定义光线和凸多边形。光线由光线原点和光线方向定义。使用光线坐标系来执行相交测试,其中光线坐标系在光线原点处具有原点,并且其中光线坐标系具有三个基向量。所述基向量中的第一基向量与光线方向对齐。所述基向量中的第二基向量和第三基向量:(i)都与所述第一基向量正交,(ii)彼此不平行,并且(iii)当在所述空间坐标系中表达时具有零作为一个分量;输出执行所述相交测试的结果以供光线跟踪系统使用。供光线跟踪系统使用。供光线跟踪系统使用。

【技术实现步骤摘要】
光线跟踪系统中的相交测试


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

技术介绍

[0002]光线跟踪是一种计算渲染技术,其用于通过通常从相机的视角在场景中跟踪光路(

光线

)来生成场景(例如,3D场景)的图像。每条光线被建模为源自相机,并通过像素进入场景。当光线横越场景时,其可能与场景内的对象相交。可对光线和其相交的对象之间的相交建模以创建逼真的视觉效果。例如,响应于确定光线与对象相交,可以针对相交执行着色器程序(即,计算机代码的一部分)。程序员可以编写着色器程序以定义系统如何对相交(所述相交例如可能导致向场景中发射一个或多个二次光线)作出反应,例如,以表示光线从相交对象的反射或光线通过对象的折射(例如,如果对象是透明或半透明的)。作为另一示例,着色器程序可以使一条或多条光线发射到场景中,以用于确定对象是否处于交点处的阴影中。执行着色器程序(和处理相关的二次光线)的结果可以是计算光线穿过的像素的颜色值。
[0003]使用光线跟踪渲染场景的图像可以涉及执行许多相交测试,例如执行数十亿个相交测试以渲染场景的图像。为了减少需要执行的相交测试的数量,光线跟踪系统可以生成加速结构,其中加速结构的每个节点表示场景内的区域。加速结构通常是分层的(例如,具有树结构),使得其包含多个级别的节点,其中靠近加速结构的顶部的节点表示场景中相对大的区域(例如,根节点可以表示整个场景),靠近加速结构的底部的节点表示场景中相对小的区域。“树节点”是指具有指向分层加速结构中的其他节点的指针的节点,即,树节点在分层加速结构中具有子节点。“叶节点”是指具有指向一个或多个图元的一个或多个指针的节点,即,叶节点在分层加速结构中不具有子节点。换句话说,加速结构的叶节点表示场景中定义一个或多个图元的区域。加速结构在不同示例中可具有不同结构,例如栅格结构、八叉树结构、空间分割结构(例如k

d树)或边界体积层次体系。节点可以表示场景中的合适形状或区域(其在本文中可以被称为“框”)。在一些示例中,节点表示场景中的轴对齐边界框(AABB)。
[0004]可以使用加速结构,通过首先测试光线与加速结构的根节点的相交(例如,以递归方式)对光线执行相交测试。如果发现光线与父节点(例如,根节点)相交,则测试可以进行到所述父节点的子节点。相比之下,如果发现光线不与父节点相交,则可以避免对所述父节点的子节点的相交测试,从而节省计算工作量。如果发现光线与叶节点相交,则可针对由叶节点表示的区域内的对象对光线进行测试,从而确定光线与哪个(些)对象相交。对象可以被表示为凸多边形。凸多边形通常是三角形,但它们也可以是其他形状,例如正方形、矩形、五边形、六边形等。如果发现光线有多于一个交点,则可以标识与光线原点最接近的交点(即,光线在场景中遇到的第一次相交),并且可以确定光线在此标识的最接近交点处相交。有可能存在光线的多个最接近命中,并且在这种情况下,可以使用一些平局决胜(tie

break)逻辑来选择多个最接近命中中的一个以用作标识的最接近交点。对于一些类型的光
线,可能不需要标识最接近的交点。例如,在处理阴影光线时,存在至少一个交点的指示是足够的,而无需确定哪一个交点最接近,并且一些API可以允许加速结构针对阴影光线的遍历响应于发现任何交点而终止,从而减少需要执行的相交测试的数量。
[0005]光线(r)可以被定义为r=O+Dt,其中O是表示光线原点的向量,D是表示光线方向的向量,并且t表示沿着光线离原点的距离。图元可以被表示为凸多边形或进一步严格而言为凸多边形。多边形(例如三角形)由有序的平面顶点集合定义,由此连续顶点对定义多边形边,并且在给定固定取向(即顺时针或逆时针)的情况下,总顶点顺序(其缠绕顺序)用于指示多边形的正面。凸多边形是没有大于180
°
的内角的多边形。严格的凸多边形是没有大于或等于180
°
的内角的多边形。定义光线的原点和方向向量以及定义凸多边形的顶点的位置可以用空间坐标系中的分量来表示。空间坐标系可以表示正在渲染的场景的世界空间,或者它可以表示放置在正在渲染的场景内的对象实例的实例空间。
[0006]为了确定光线是否与凸多边形相交,可以确定光线与包含凸多边形的平面的交点,然后可以确定该交点是否在多边形的内侧。一种通用方法是经由平行于光线方向的投影将顶点(即,世界或实例空间中的坐标)映射到平面上。如果不包含光线,则可以自由地指定平面,使得正交投影和倾斜投影都是可允许的。这将问题简化为2D问题,并且存在许多确定2D点是否在2D凸多边形内的方式。例如,在凸多边形是三角形的情况下,可以将交点变换成三角形的UV坐标,这使得相交测试变得简单。如果确定光线与多边形的边界上的点(即边或顶点)相交,则可能出现问题。特别地,通常用多个多边形,例如用多边形网格来表示对象,从而产生定义两个或更多个凸多边形的共享顶点。此外,多边形可以具有共享的边,即,两个端点都是共享顶点的边。共享顶点的一个重要类型是在封闭扇形中心处的顶点:封闭扇形被定义为由共享边连接的共享顶点的两个或更多个多边形,使得这些共享边是共享顶点作为其端点之一的唯一边。如果光线与封闭扇形的共享边上的点或共享顶点相交,则在大多数情况下,希望发现光线与多边形中的一个或多个多边形相交。如果相交测试确保与封闭扇形的共享边上的点或共享顶点相交的光线与其中至少一个多边形相交,则相交测试被描述为“严密(watertight)”。如果相交测试确保与封闭扇形的共享边上的点或共享顶点相交的光线与多边形中的一个(并且仅一个)相交,则相交测试被描述为“非冗余严密”,注意,在这种情况下,仅其边界的子集可以被认为是多边形的一部分。如果发现与共享边上的点相交的光线与零多边形相交,则其可以表现为好像多边形网格中具有孔,使得可以通过所渲染的图像中的网格看到多边形网格后面的颜色(这可以在非严密相交测试而不是针对严密相交测试的情况下发生)。例如,如果多边形网格后面的颜色与多边形网格的颜色明显不同,则这些种类的渲染误差可能非常明显。此外,如果发现与共享边上的点相交的光线与多于一个多边形相交,则在该共享边上的位置处渲染的颜色可能取决于针对相交测试多边形的顺序,使得渲染可能变得不确定。这些种类的渲染误差对于渲染图像的感知质量可能是不利的。具有非冗余严密相交测试的另外的原因包括:(i)为了避免冗余工作,以及(ii)为了避免在透明对象中由重复的相交导致的任何双重/多重命中处的阴影不连续性。通常独立于对与第二多边形相交的光线的测试来执行对与第一多边形相交的光线的测试,并且注意到,确保严密性,并且具体地,确保用于相交测试的非冗余严密性并不简单。
[0007]由于在光线跟踪系统中多次执行光线对凸多边形(例如三角形)的相交测试,因此在专用硬件模块中例如使用固定功能电路系统来实施用于执行这些相交测试的功能而不
使用在通用处理单元上执行的软件模块来实施这些相交测试可以是有益的。软件实施方案通常更加灵活,因为软件在被设计和/或创建之后比本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在光线跟踪系统中执行光线与凸多边形的相交测试的方法,其中使用空间坐标系在3D空间中定义所述光线和所述凸多边形,并且其中利用光线原点和光线方向定义所述光线,所述方法包括:使用光线坐标系来执行相交测试,其中所述光线坐标系在所述光线原点处具有原点,并且其中所述光线坐标系具有三个基向量,其中所述基向量中的第一基向量与所述光线方向对齐,并且其中所述基向量中的第二基向量和第三基向量:(i)都与所述第一基向量正交,(ii)彼此不平行,并且(iii)当在所述空间坐标系中表达时具有零作为一个分量;以及输出执行所述相交测试的结果以供所述光线跟踪系统使用。2.根据权利要求1所述的方法,还包括通过从定义所述凸多边形的顶点的位置减去所述光线原点来平移定义所述凸多边形的所述顶点,以用于执行所述相交测试。3.根据权利要求1或2所述的方法,其中当在所述空间坐标系中表示时,所述光线坐标系的所述第二基向量和所述第三基向量具有
±
1的值作为一个分量。4.根据任一项前述权利要求所述的方法,其中当用所述空间坐标系的分量表示时,所述第一基向量S为S=A(D
x
,D
y
,D
z
),其中当用所述空间坐标系的分量表示时,所述第二基向量P是P=B(D
z
,0,

D
x
);并且其中当用所述空间坐标系的分量表示时,所述第三基向量Q是Q=C(0,D
z


D
y
);其中D
x
,D
y
和D
z
是所述空间坐标系中所述光线方向的分量,并且A,B和C是标量值。5.根据权利要求4所述的方法,其中B是在其分母中具有D
x
的简化分数,并且C是在其分母中具有D
y
的简化分数。6.根据权利要求3所述的方法,其中当用所述空间坐标系的分量表示时,所述第一基向量S是S=A(D
x
,D
y
,D
z
),其中当用所述空间坐标系的分量表示时,所述第二基向量P是并且其中当用所述空间坐标系的分量表示时,所述第三基向量Q是其中D
x
,D
y
和D
z
是所述空间坐标系中所述光线方向的分量,并且A是标量值。7.根据权利要求3所述的方法,其中当用所述空间坐标系的分量表示时,所述第一基向量S是S=A(D
x
,D
y
,D
z
),其中当用所述空间坐标系的分量表示时,所述第二基向量P是并且其中当用所述空间坐标系的分量表示时,所述第三基向量Q是其中D
x
,D
y
和D
z
是所述空间坐标系中所述光线方向的分量,并且A是标量值。8.根据权利要求1或2所述的方法,其中当用所述空间坐标系的分量表示时,所述第一基向量S是S=A(D
x
,D
y
,D
z
),其中当用所述空间坐标系的分量表示时,所述第二基向量P是并且其中当用所述空间坐标系的分量表示时,所述第三基向量Q是其中D
x
,D
y
和D
z
是所述空间坐标系中所述光线方向的分量,并且A是标量值。
9.根据权利要求1或2所述的方法,其中当用所述空间坐标系的分量表示时,所述第一基向量S是S=A(D
x
,D
y
,D
z
),其中当用所述空间坐标系的分量表示时,所述第二基向量P是并且其中当用所述空间坐标系的分量表示时,所述第三基向量Q是其中D
x
,D
y
和D
z
是所述空间坐标系中所述光线方向的分量,并且A是标量值。10.根据权利要求4

9中任一项所述的方法,其中11.根据任一项前...

【专利技术属性】
技术研发人员:P
申请(专利权)人:想象技术有限公司
类型:发明
国别省市:

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

1