【技术实现步骤摘要】
光线跟踪系统中的相交测试
[0001]本公开涉及在光线跟踪系统中执行相交测试的技术。
技术介绍
[0002]光线跟踪是一种计算渲染技术,其用于通过通常从相机的视角在场景中跟踪光路(
‘
光线
’
)来生成场景(例如,3D场景)的图像。每条光线被建模为源自相机,并通过像素进入场景。当光线横越场景时,其可能与场景内的对象相交。可对光线和其相交的对象之间的相交建模以创建逼真的视觉效果。例如,响应于确定光线与对象相交,可以针对相交执行着色器程序(即,计算机代码的一部分)。程序员可以编写着色器程序以定义系统如何对相交(所述相交例如可能导致向场景中发射一个或多个二次光线)作出反应,例如,以表示光线从相交对象的反射或光线通过对象的折射(例如,如果对象是透明或半透明的)。作为另一示例,着色器程序可以使一条或多条光线发射到场景中,以用于确定对象是否处于交点处的阴影中。执行着色器程序(和处理相关的二次光线)的结果可以是计算光线穿过的像素的颜色值。
[0003]使用光线跟踪渲染场景的图像可以涉及执行许多相交测试,例如执行数十亿个相交测试以渲染场景的图像。为了减少需要执行的相交测试的数量,光线跟踪系统可以生成加速结构,其中加速结构的每个节点表示场景内的区域。加速结构通常是分层的(例如,具有树结构),使得其包含多个级别的节点,其中靠近加速结构的顶部的节点表示场景中相对大的区域(例如,根节点可以表示整个场景),靠近加速结构的底部的节点表示场景中相对小的区域。“树节点”是指具有指向分层加速结构中的其他节点的 ...
【技术保护点】
【技术特征摘要】
1.一种在光线跟踪系统中执行光线相对于多个凸多边形的相交测试的方法,其中所述凸多边形中的每个凸多边形由有序顶点集合定义,并且其中所述顶点中的至少一个顶点是用于定义所述凸多边形中的两个或更多个凸多边形的共享顶点,所述方法包括:将所述凸多边形的顶点投影到与光线方向正交的一对轴上,其中所述一对轴的原点与光线原点相对应;并且对于所述凸多边形中的每个凸多边形:对于所述凸多边形的由所述投影顶点中的两个投影顶点定义的每条边,确定有符号参数,其中所述有符号参数的符号指示所述光线在所述边的哪一侧通过,其中定义所述边的所述投影顶点中的第一投影顶点v
i
的位置由沿着所述一对轴中的相应轴的坐标p
i
和q
i
定义,并且其中定义所述边的所述投影顶点中的第二投影顶点v
j
的位置由沿着所述一对轴中的相应轴的坐标p
j
和q
j
定义,其中如果确定所述光线与所述边上的点相交,则使用模块来确定所述有符号参数的符号,所述模块被配置为:将p
i
、q
i
、p
j
和q
j
坐标中的每一个分类为负、零或正的指示作为输入,以及对于p
i
、q
i
、p
j
和q
j
坐标的分类的有效组合,输出所述有符号参数的所述符号的指示;以及基于针对所述凸多边形的所述边确定的所述有符号参数的所述符号来确定所述光线是否与所述凸多边形相交;其中对于所述凸多边形中的两个或更多个凸多边形中的每个凸多边形,所述光线被确定为与所述凸多边形的边上的点相交。2.根据权利要求1所述的方法,其中所述模块被配置为使得如果定义边的所述两个投影顶点的顺序被反转,则从所述模块输出的所述有符号参数的所述符号的所述指示被反转。3.根据权利要求1或2所述的方法,其中所述模块包括查找表和逻辑阵列中的一者或两者。4.根据前述权利要求中任一项所述的方法,其中使用定义所述边的所述两个投影顶点的位置的函数来确定所述边的所述有符号参数。5.根据权利要求4所述的方法,其中所述函数是定义边的所述两个投影顶点v
i
和v
j
的位置的2D叉积f(v
i
,v
j
),其被定义为f(v
i
,v
j
)=p
i
q
j
‑
q
i
p
j
。6.根据权利要求5所述的方法,其中如果定义边的所述两个投影顶点的所述位置的所述2D叉积具有零的量值,则确定所述光线与所述边上的点相交。7.根据权利要求5所述的方法,其中如果确定所述2D叉积不完全等于零,但舍入为零,则在所述2D叉积的所述确定期间设定下溢标志,并且其中如果以下情况,则确定所述光线与边上的点相交:(i)定义所述边的所述两个投影顶点的所述位置的所述2D叉积具有零的量值,以及(ii)在确定所述2D叉积期间未设置下溢标志。8.根据权利要求5至7中任一项所述的方法,其中所述模块还被配置为将边的所述2D叉积函数的所述符号的指示作为输入。9.根据权利要求5至8中任一项所述的方法,其中以由定义所述凸多边形的所述有序顶点集合中的顶点的排序定义的顺序,将定义边的所述两个投影顶点v
i
和v
j
提供给所述2D叉积f(v
i
,v
j
),并且其中如果确定所述光线未与边上的点相交,则确定所述边的所述有符号参
数的符号与f(v
i
,v
j
)的符号相同。10.根据权利要求5至9中任一项所述的方法,其中所述模块被配置为基于在以下条件下2D叉积将是什么的考虑来输出所述有符号的参数的所述符号的指示:如果定义所述边的所述两个投影顶点的所述位置被ε=(ε
p
,ε
q
)扰动,使得定义所述边的所述投影顶点中的第一投影顶点v
i
的位置具有沿着所述一对轴中的相应轴的坐标(p
i
+ε
p
)和(q
i
+ε
q
),并且定义所述边的所述投影顶点中的第二投影顶点v
j
的位置具有沿着所述一对轴中的相应轴的坐标(p
j
+ε
p
)和(q
j
+ε
q
),其中0<ε
p
<<ε
q
<<+min_float,其中+min_float是根据用于表示所述p
i
、q
i
、p
j
和q
j
坐标的数字格式的最小可表示正数。11.根...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。