CN115115761B - 确定光线是否与三维轴对齐框相交的方法、装置和介质 - Google Patents
确定光线是否与三维轴对齐框相交的方法、装置和介质 Download PDFInfo
- Publication number
- CN115115761B CN115115761B CN202210268319.7A CN202210268319A CN115115761B CN 115115761 B CN115115761 B CN 115115761B CN 202210268319 A CN202210268319 A CN 202210268319A CN 115115761 B CN115115761 B CN 115115761B
- Authority
- CN
- China
- Prior art keywords
- ray
- scaled
- box
- max
- plane
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
本申请涉及确定光线是否与三维轴对齐框相交的方法、装置和介质。提供了用于在光线跟踪系统中确定光线是否与3D轴对齐框相交的方法和相交测试模块。框表示由针对每个维度的前向平面和后向平面定义的体积。确定缩放的逆光线分量ρu和ρv,其中和其中第三缩放的逆光线分量Dw是光线方向向量的主分量,例如|Dw|≥|Du|和|Dw|≥|Dv|。使用将光线的未缩放的最小剔除距离tmin,unscaled乘以ADw的量值的结果来确定缩放的最小剔除距离tmin,scaled。使用将光线的未缩放的最大剔除距离tmax,unscaled乘以ADw的量值的结果来确定缩放的最大剔除距离tmax,scaled。使用缩放的逆光线分量来确定到定义框的平面的缩放的相交距离。标识所确定的到框的前向平面的缩放的相交距离中的最大距离。标识所确定的到框的后向平面的缩放的相交距离中的最小距离。
Description
技术领域
本公开涉及在光线跟踪系统中执行相交测试的技术。
背景技术
光线跟踪是一种计算渲染技术,其用于通过通常从相机的视角在场景中跟踪光路(‘光线’)来生成场景(例如,3D场景)的图像。每条光线被建模为源自相机,并通过像素进入场景。当光线横越场景时,其可能与场景内的对象相交。可对光线和其相交的对象之间的相交建模以创建逼真的视觉效果。例如,响应于确定光线与对象相交,可以针对相交执行着色器程序(即,计算机代码的一部分)。程序员可以编写着色器程序以定义系统如何对相交(所述相交例如可能导致向场景中发射一个或多个二次光线)作出反应,例如,以表示光线从相交对象的反射或光线通过对象的折射(例如,如果对象是透明或半透明的)。作为另一示例,着色器程序可以使一条或多条光线发射到场景中,以用于确定对象是否处于交点处的阴影中。执行着色器程序(和处理相关的二次光线)的结果可以是计算光线穿过的像素的颜色值。
使用光线跟踪渲染场景的图像可以涉及执行许多相交测试,例如执行数十亿个相交测试以渲染场景的图像。为了减少需要执行的相交测试的数量,光线跟踪系统可以生成加速结构,其中加速结构的每个节点表示场景内的区域。加速结构通常是分层的(例如,具有树结构),使得其包含多个级别的节点,其中靠近加速结构的顶部的节点表示场景中相对大的区域(例如,根节点可以表示整个场景),靠近加速结构的底部的节点表示场景中相对小的区域。“树节点”是指具有指向分层加速结构中的其他节点的指针的节点,即,树节点在分层加速结构中具有子节点。“叶节点”是指具有指向一个或多个图元的一个或多个指针的节点,即,叶节点在分层加速结构中不具有子节点。换句话说,加速结构的叶节点表示场景中定义一个或多个图元的区域。加速结构在不同示例中可具有不同结构,例如栅格结构、八叉树结构、空间分割结构(例如k-d树)或边界体积层次体系。节点可以表示场景中的合适形状或区域(其在本文中可以被称为“框”)。在一些示例中,节点表示场景中的轴对齐边界框(AABB)。
可以使用加速结构,通过首先测试光线与加速结构的根节点的相交(例如,以递归方式)对光线执行相交测试。如果发现光线与父节点(例如,根节点)相交,则测试可以进行到所述父节点的子节点。相比之下,如果发现光线不与父节点相交,则可以避免对所述父节点的子节点的相交测试,从而节省计算工作量。如果发现光线与叶节点相交,则可针对由叶节点表示的区域内的对象对光线进行测试,从而确定光线与哪个(些)对象相交。如果发现光线有多于一个交点,则可以标识与光线原点最接近的交点(即,光线在场景中遇到的第一次相交),并且可以确定光线在此标识的最接近交点处相交。有可能存在光线的多个最接近命中,并且在这种情况下,可以使用一些平局决胜(tie-break)逻辑来选择多个最接近命中中的一个以用作标识的最接近交点。对于一些类型的光线,可能不需要标识最接近的交点。例如,在处理阴影光线时,存在至少一个交点的指示是足够的,而无需确定哪一个交点最接近,并且一些API可以允许加速结构针对阴影光线的遍历响应于发现任何交点而终止,从而减少需要执行的相交测试的数量。使用加速结构(而非直接利用场景中的物体测试光线)减少了需要执行的相交测试的数量,并简化了相交测试。相交测试更加简单,因为加速结构的节点表示基本形状(例如,轴对齐边界框或球),针对这些基本形状的相交测试比针对更复杂的物体形状的相交测试更简单,例如,按照并未预先确定相对于坐标系轴的对齐的三角形图元定义基本形状。
光线(r)可以被定义为r=O+Dt,其中O是表示光线原点的向量,D是表示光线方向的向量,并且t表示沿着光线离原点的距离。根据一种方法,可以通过针对x、y和z维度中的每一个发现区间t来针对轴对齐框测试光线,在所述区间内,光线在表示框的垂直于所述维度的侧面的两个平面之间。这针对t的值给出了三个区间(一个用于x维度,一个用于y维度,并且一个用于z维度)。如果这三个区间的交点(其本身是一个区间)是空的,则光线不与轴对齐框相交;而如果这三个区间的交点不是空的,则光线可以与轴对齐框相交。这种相交测试方法涉及执行六个测试以发现三个区间t,然后执行比较以确定那些区间的交点是否为空。
根据另一方法,可以从光线的视角针对形成框的2D轮廓的框的边缘测试光线。如果光线在每一个轮廓边缘的内部通过,则确定光线与框相交,而如果光线在框的一个或多个轮廓边缘的外部通过,则确定光线不与框相交。AABB通常具有6个轮廓边缘(取决于从光线的视角看的AABB的取向),因此这种方法通常需要执行六个测试。
上述测试将确定与光线对齐的无限长的线是否将与框相交。然而,光线的长度通常不是无限的,并且光线可以具有一个或多个有效区间。例如,光线可以具有距光线原点的某一最小距离和某一最大距离,其可以按照t的最小值(被称为最小剔除距离,tmin)和t的最大值(被称为最大剔除距离,tmax)来定义。因此,可执行最小距离测试,以检查最小剔除距离不大于到光线与框的交点的最大相交距离;并且可以执行最大距离测试,以检查最大剔除距离不小于到光线与框的交点的最小相交距离。
由于光线针对与加速结构的节点对应的形状(例如轴对齐框)的相交测试已执行多次,因此在专用硬件模块中例如使用固定功能电路系统来实施用于执行这些相交测试的功能而不使用在通用处理单元上执行的软件模块来实施这些相交测试可以是有益的。软件实施方案通常更加灵活,因为软件在被设计和/或创建之后比硬件实施方案更容易改变。然而,硬件实施方案通常在延迟和功耗方面提供更有效的实施方案,因此如果所需功能是事先已知的,则硬件实施方案可能优于软件实施方案。当设计被配置为用于执行相交测试的相交测试模块的硬件实施方案时,通常存在以下竞争目标:(i)有更小的尺寸(即,更小的硅面积),(ii)有更低的延迟,以及(iii)有更低的功耗。
发明内容
提供本发明内容是为了以简化的形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
提供一种在光线跟踪系统中确定光线是否与三维轴对齐框相交的方法,其中所述框表示由所述三维轴对齐框的每个维度的前向平面和后向平面定义的体积,所述方法包括:
确定缩放的逆光线分量μu和μv,其中和/>其中第三缩放的逆光线分量/>其中Du,Dv和Dw是光线的光线方向向量D的分量,其中Dw是光线方向向量的主分量,使得|Dw|≥|Du|且|Dw|≥|Dv|,并且其中A是标量值;
使用将所述光线的未缩放的最小剔除距离tmin,unscaled乘以ADw的量值的结果来确定缩放的最小剔除距离tmin,scaled;
使用将所述光线的未缩放的最大剔除距离tmax,unscaled乘以ADw的量值的结果来确定缩放的最大剔除距离tmax,scaled;
使用缩放的逆光线分量来确定到定义框的平面的缩放的相交距离;
标识所确定的到框的前向平面的缩放的相交距离中的最大距离;
标识所确定的到框的后向平面的缩放的相交距离中的最小距离;
确定是否:
(i)所标识的到框的前向平面的最大缩放的相交距离不大于所标识的到框的后向平面的最小缩放的相交距离;
(ii)所标识的到框的前向平面的最大缩放的相交距离不大于缩放的最大剔除距离tmax,scaled;以及
(iii)所标识的到框的后向平面的最小缩放的相交距离不小于缩放的最小剔除距离tmin,scaled;以及
如果满足所述三个确定(i)至(iii)中的全部,则确定光线与框相交,并且如果不满足所述三个确定(i)至(iii)中的一个或多个,则确定光线未命中框。
例如,a=1。可以并行地执行三个确定(i)至(iii)。
所述框表示由针对所述三维轴对齐框的维度u,v和w中的每一个维度的前向平面和后向平面所定义的体积,其中bmin,u是针对u维度的所述前向平面的恒定u分量值,bmax,u是针对u维度的所述后向平面的恒定u分量值,bmin,v是针对v维度的前向平面的恒定v分量值,bmax,v是针对v维度的后向平面的恒定v分量值,bmin,w是针对w维度的前向平面的恒定w分量值,并且bmax,w是针对w维度的后向平面的恒定w分量值,其中所述使用缩放的逆光线分量来确定到定义框的平面的缩放的相交距离可以包括:
通过将bmin,u和ρu相乘来确定到针对u维度的前向平面的缩放的相交距离τu,min;
通过将bmax,u和ρu相乘来确定到针对u维度的后向平面的缩放的相交距离τu,max;
通过将bmin,v和ρv相乘来确定到针对v维度的前向平面的缩放的相交距离τv,min;
通过将bmax,v和ρv相乘来确定到针对v维度的后向平面的缩放的相交距离τv,max;
确定到针对w维度的前向平面的缩放的相交距离τw,min,使得τw,min=bmin,wρw;
确定到针对w维度的后向平面的缩放的相交距离τw,max,使得τw,max=bmax,wρw。
所述方法还可以包括:如果bmin,u,bmax,u,bmin,v,bmax,v,bmin,w或bmax,w值中的任一者的量值为零,则将所述值的量值设置为等于非零的替代值,所述非零的替代值足够小,使得在确定和比较所述缩放的相交距离中的两个的运算中,所述非零的替代值将表现得像零;以及如果ρu值或ρv值的量值为无穷大,则所述值的量值可以被设置为等于有限替代值,所述有限替代值足够大,使得在确定和比较所述缩放的相交距离中的两个缩放的相交距离的运算中,所述有限替代值将表现得像无穷大。
所述方法还可以包括从定义框的前向平面和后向平面的位置的相应分量中减去光线的原点的相应分量,从而确定bmin,u,bmax,u,bmin,v,bmax,v,bmin,w和bmax,w的值。
可以用空间坐标系中的分量Dx,Dy和Dz来定义光线方向向量,并且所述方法还可以包括选择性地置换光线的x、y和z分量以及框的分量,以确定空间坐标系的x、y和z分量如何映射到u、v和w维度上,从而确保Dw是光线方向向量的主分量,使得|Dw|≥|Du|和|Dw|≥|Dv|。
光线方向向量的分量可以都是非负的,即Du≥0,Dv≥0和Dw≥0。例如,所述方法还可以包括选择性地反转光线的分量的轴和轴对齐框,使得Du≥0,dv≥0和Dw≥0。
所述方法还可以包括:如果tmin,scaled≥0和tmax,scaled≥0,则确定是否bmax,u≥0,bmax,v≥0和bmax,w≥0,其中所述确定到定义框的平面的缩放的相交距离可以响应于确定bmax,u≥0,bmax,v≥0和bmax,w≥0而执行,其中如果bmax,u,bmax,v和bmax,w中的任一者都大于零,则可以确定光线未命中框,而无需确定到定义框的平面的缩放的相交距离。
所述方法还可以包括:如果tmin,scaled≤0和tmax,scaled≤0,则确定是否为bmin,u≤0,bmin,v≤0和bmin,w≤0,其中所述确定到定义框的平面的缩放的相交距离可以响应于确定bmin,u≤0,bmin,v≤0和bmin,w≤0而执行,其中如果bmin,u,bmin,v和bmin,w中的任一者都小于零,则可以确定光线未命中框,而无需确定到定义框的平面的缩放的相交距离;
所述方法还可以包括:如果tmin,scaled≤0和tmax,scaled≥0,则确定是否满足下列中的任一项:(i)bmin,u≤0,bwin,v≤0和bmin,w≤0,或(ii)bmax,u≥0,bmax,v≥0和bwax,w≥0,其中所述确定到定义框的平面的缩放的相交距离可以响应于确定以下中的任一项而执行:(i)bmin,u≤0,bmin,v≤0和bmin,w≤0,或(ii)bmax,u≥0,bmax,v≥0和bmax,w≥0,其中如果以下两者都满足:(i)bmin,u,bmin,v和bmin,w中的任一者都大于零,以及(ii)bmax,u,bmax,v和bmax,w的任一者都小于零,则可以确定光线未命中框,而无需确定到定义所述框的平面的缩放的相交距离;和/或
所述方法还可以包括:如果tmin,scaled≥0和tmax,scaled≤0,则确定光线未命中框,而无需确定到定义框的平面的缩放的相交距离。
所述光线的所确定的缩放的逆光线分量、所确定的缩放的最小剔除距离和所确定的缩放的最大剔除距离可用于确定光线是否与光线跟踪系统中的多个轴对齐框相交。
可以在不计算到框的所述平面中的任一平面的未缩放的相交距离的情况下执行所述方法。
所述方法还可包括输出所述光线是否与所述轴对齐框相交的所述确定的结果的指示,其中输出的指示可在所述光线跟踪系统中用于渲染3D场景的图像。
轴对齐框可以是界定要渲染的几何形状的轴对齐的边界框,并且其中轴对齐框可以对应于要被用于在光线跟踪系统中执行相交测试的分层加速结构的节点。
所述节点可以是用于在实例空间中表示几何形状的底层加速结构(BLAS)的一部分,并且所述方法可包括将所述光线变换到所述实例空间中。
光线跟踪系统可以被配置为执行光线相对于由所述分层加速结构的叶节点所界定的几何形状的多边形相交测试过程,所述光线被确定为要与所述几何形状相交,其中多边形相交测试过程可以确定光线是否与定义几何形状的一个或多个多边形相交。
所述方法还可以包括扩展框的有效尺寸以确保所述方法对于在光线与框的相交测试期间可引入的舍入误差是保守的。
所述方法还可以包括扩展框的有效尺寸,以确保所述方法对于在光线与框的相交测试期间可引入的舍入误差以及对于在多边形相交测试过程中可引入的舍入误差是保守的。
缩放的最小剔除距离tmin,scaled可确定为tmin,scaled=ADwtmin,unscaled+B,其中B是标量值,并且其中B≤0。例如,B<0。缩放的最大剔除距离tmax,scaled可确定为tmax,scaled=ADwtmax,unscaled+C,其中C是标量值,并且其中C≥0。例如,C>0。
提供一种在光线跟踪系统中使用的相交测试模块,其被配置成确定光线是否与三维轴对齐框相交,其中所述框表示由所述三维轴对齐框的每个维度的前向平面和后向平面定义的体积,所述相交测试模块被配置成进行以下操作:
确定缩放的逆光线分量ρu和ρv,其中和/>其中第三缩放的逆光线分量/>其中Du,Dv和Dw是光线的光线方向向量D的分量,其中Dw是光线方向向量的主分量,使得|Dw|≥|Du|和|Dw|≥|Dv|,并且其中A是标量值;
使用将所述光线的未缩放的最小剔除距离tmin,unscaled乘以ADw的量值的结果来确定缩放的最小剔除距离tmin,scaled;
使用将所述光线的未缩放的最大剔除距离tmax,unscaled乘以ADw的量值的结果来确定缩放的最大剔除距离tmax,scaled;
使用缩放的逆光线分量来确定到定义框的平面的缩放的相交距离;
标识所确定的到框的前向平面的缩放的相交距离中的最大距离;
标识所确定的到框的后向平面的缩放的相交距离中的最小距离;
确定是否:
(i)所标识的到框的前向平面的最大缩放的相交距离不大于所标识的到框的后向平面的最小缩放的相交距离;
(ii)所标识的到框的前向平面的最大缩放的相交距离不大于缩放的最大剔除距离tmax,scaled;以及
(iii)所标识的到框的后向平面的最小缩放的相交距离不小于缩放的最小剔除距离tmin,scaled;以及
如果满足所述三个确定(i)至(iii)中的全部,则确定光线与框相交,并且如果不满足所述三个确定(i)至(iii)中的一个或多个,则确定光线未命中框。
可以提供一种使用集成电路制造系统制造如本文的相交测试模块的方法,所述方法包括:
使用布局处理系统处理相交测试模块的计算机可读描述,以便生成体现相交测试模块的集成电路的电路布局描述;以及
使用集成电路生成系统根据所述电路布局描述来制造所述相交测试模块。
可以提供一种计算机可读代码,其被配置为在所述代码运行时使本文所描述的任一种方法得以执行。
可提供一种在光线跟踪系统中确定光线是否与三维轴对齐框相交的方法,其中所述框表示由针对三维轴对齐框的维度u,v和w中的每一个维度的前向平面和后向平面所定义的体积,其中bmin,u是针对u维度的前向平面的恒定u分量值,bmax,u是针对u维度的后向平面的恒定u分量值,bmin,v是针对v维度的前向平面的恒定v分量值,bmax,v是针对v维度的后向平面的恒定v分量值,bmin,w是针对w维度的前向平面的恒定w分量值,并且bmax,w是针对w维度的后向平面的恒定w分量值,所述方法包括:
确定缩放的光线分量ρu和ρv,其中和/>并且其中第三缩放的光线分量/>其中Du,Dv和Dw是所述光线的光线方向向量D的分量,其中Dw是所述光线方向向量的主分量;
使用将所述光线的未缩放的最小剔除距离tmin,unscaled乘以Dw的量值的结果来确定缩放的最小剔除距离tmin,scaled;
使用将所述光线的未缩放的最大剔除距离tmax,unscaled乘以Dw的量值的结果来确定缩放的最大剔除距离tmax,scaled;
确定Aρubmin,v,Aρvbmin,u,Aρubmax,v和Aρvbmax,u的叉乘值,其中A是标量值;
确定以下中的一项或两项的叉乘值:(i)Aρubmin,w和(ii)Aρvbmin,w;
确定以下中的一项或两项的叉乘值:(i)Aρubmax,w和(ii)Aρvbmax,w;
使用所确定的叉乘值来:
标识所述前向平面中的哪个前向平面在沿着所述光线的最远位置与所述光线相交;以及
标识所述后向平面中的哪个后向平面在沿着所述光线的最近位置与所述光线相交;
确定所述光线是否在沿着所述光线不比所述光线与所标识的后向平面相交的位置更远的位置处与所述框的所标识的前向平面相交;
确定ρ-tmax,scaled是否不小于b-,其中如果针对u维度的所述前向平面是所标识的前向平面,则ρ-=ρu和b-=bmin,u,并且其中如果针对v维度的所述前向平面是所标识的前向平面,则ρ-=ρv和b-=bmin,v,并且其中如果针对w维度的所述前向平面是所标识的前向平面,则ρ-=ρw=1和b-=bmin,w;
确定ρ+tmin,scaled是否不大于b+,其中如果针对u维度的所述后向平面是所标识的后向平面,则ρ+=ρu和b+=bmax,u,其中如果针对v维度的所述后向平面是所标识的后向平面,则ρ+=ρv和b+=bmax,v,并且其中如果针对w维度的所述后向平面是所标识的后向平面,则ρ+=ρw=1和b+=bmax,w;以及
如果以下所有三项满足,则确定所述光线与所述框相交:(i)确定所述光线在沿着所述光线不比所述光线与所标识的后向平面相交的位置更远的位置处与所述框的所标识的前向平面相交,(ii)确定ρ-tmax,scaled不小于b-,以及(iii)确定ρ+tmin,scaled不大于b+,否则所述确定光线未命中所述框。
可提供一种在光线跟踪系统中使用的相交测试模块,其被配置为确定光线是否与三维轴对齐框相交,其中框表示由针对三维轴对齐框的维度u,v和w中的每一个维度的前向平面和后向平面所定义的体积,其中bmin,u是针对u维度的前向平面的恒定u分量值,bmax,u是针对u维度的后向平面的恒定u分量值,bmin,v是针对v维度的前向平面的恒定v分量值,bmax,v是针对v维度的后向平面的恒定v分量值,bmin,w是针对w维度的前向平面的恒定w分量值,并且bmax,w是针对w维度的后向平面的恒定w分量值,所述相交测试模块被配置为:
确定缩放的光线分量ρu和ρv,其中和/>并且其中第三缩放的逆光线分量/>其中Du,Dv和Dw是所述光线的光线方向向量D的分量,其中Dw是所述光线方向向量的主分量;
使用将所述光线的未缩放的最小剔除距离tmin,unscaled乘以Dw的量值的结果来确定缩放的最小剔除距离tmin,scaled;
使用将所述光线的未缩放的最大剔除距离tmax,unscaled乘以Dw的量值的结果来确定缩放的最大剔除距离tmax,scaled;
确定Aρubmin,v,Aρvbmin,u,Aρubmax,v和Aρvbmax,u的叉乘值,其中A是标量值;
确定以下中的一项或两项的叉乘值:(i)Aρubmin,w和(ii)Aρvbmin,w;
确定以下中的一项或两项的叉乘值:(i)Aρubmax,w和(ii)Aρvbmax,w;
使用所确定的叉乘值来:
标识所述前向平面中的哪个前向平面在沿着所述光线的最远位置与所述光线相交;以及
标识所述后向平面中的哪个后向平面在沿着所述光线的最近位置与所述光线相交;
确定所述光线是否在沿着所述光线不比所述光线与所标识的后向平面相交的位置更远的位置处与所述框的所标识的前向平面相交;
确定ρ-tmax,scaled是否不小于b-,其中如果针对u维度的所述前向平面是所标识的前向平面,则ρ-=ρu和b-=bmin,u,并且其中如果针对v维度的所述前向平面是所标识的前向平面,则ρ-=ρv和b-=bmin,v,并且其中如果针对w维度的所述前向平面是所标识的前向平面,则ρ-=ρw=1和b-=bmin,w;
确定ρ+tmin,scaled是否不大于b+,其中如果针对u维度的所述后向平面是所标识的后向平面,则ρ+=ρu和b+=bmax,u,其中如果针对v维度的所述后向平面是所标识的后向平面,则ρ+=ρv和b+=bmax,v,并且其中如果针对w维度的所述后向平面是所标识的后向平面,则ρ+=ρw=1和b+=bmax,w;以及
如果以下所有三项满足,则确定所述光线与所述框相交:(i)确定所述光线在沿着所述光线不比所述光线与所标识的后向平面相交的位置更远的位置处与所述框的所标识的前向平面相交,(ii)确定ρ-tmax,scaled不小于b-,以及(iii)确定ρ+tmin,scaled不大于b+,否则所述确定光线未命中所述框。
可提供一种在光线跟踪系统中确定光线是否与三维轴对齐框相交的方法,其中所述框表示由所述三维轴对齐框的每个维度的前向平面和后向平面定义的体积,所述方法包括:
确定缩放的逆光线分量ρu和ρv,其中和/>其中第三缩放的逆光线分量/>其中Du,Dv和Dw是光线的光线方向向量D的分量,其中Dw是光线方向向量的主分量,并且其中A是标量值;
使用将所述光线的未缩放的最小剔除距离tmin,unscaled乘以ADw的量值的结果来确定缩放的最小剔除距离tmin,scaled;
使用将所述光线的未缩放的最大剔除距离tmax,unscaled乘以ADw的量值的结果来确定缩放的最大剔除距离tmax,scaled;
使用缩放的逆光线分量来确定到定义框的平面的缩放的相交距离;以及
使用所确定的与定义框的平面的缩放的相交距离、缩放的最小剔除距离和缩放的最大剔除距离,来确定光线是否与框相交。
提供了一种相交测试模块,其被配置成执行本文所描述的任一种方法。
所述相交测试模块可以在集成电路上以硬件体现。可以提供一种在集成电路制造系统处制造相交测试模块的方法。可以提供一种集成电路定义数据集,当在集成电路制造系统中被处理时,所述集成电路定义数据集将系统配置成制造相交测试模块。可以提供一种非瞬态计算机可读存储介质,其上存储有相交测试模块的计算机可读描述,当在集成电路制造系统中被处理时,所述计算机可读描述使集成电路制造系统制造体现相交测试模块的集成电路。
可以提供一种集成电路制造系统,包括:非暂时性计算机可读存储介质,其上存储有相交测试模块的计算机可读描述;布局处理系统,其被配置为处理计算机可读描述以便生成体现相交测试模块的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造相交测试模块。
可提供用于执行本文所述的任一方法的计算机程序代码。可以提供非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令当在计算机系统处被执行时使计算机系统执行本文所述的任一方法。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1示出了根据本文所描述的示例的光线跟踪系统;
图2a从第一视角示出了两条光线以及框;
图2b从第二视角示出了光线和框,其中第二视角在光线原点处;
图3a和图3b是根据本文所描述的示例的执行相交测试以确定光线是否与3D轴对齐框相交的方法的流程图;
图4a示出了光线的起点超出框的光线和框;
图4b示出了光线的末端在框前的光线和框;
图4c示出了光线的起点在框前并且光线的末端超出框的光线和框;
图5是在图3a和图3b的流程图中所示的方法的第一实施方案中执行步骤S312的第一方法的流程图;
图6是在图3a和图3b的流程图中所示的方法的第二实施方案中执行步骤S312的第二方法的流程图;
图7示出了可以或不可以实施早期排除测试的三条光线和五个框;
图8示出了在其中实施光线跟踪系统的计算机系统;以及
图9示出了用于生成体现光线跟踪系统的集成电路的集成电路制造系统。
附图示出了各种示例。技术人员将理解,附图中所示的元素边界(例如,框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元素可以被设计为多个元素,或者多个元素可以被设计为一个元素。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文描述的实施方案,并且对所公开的实施方案的各种修改对于本领域的技术人员将是显而易见的。
现在仅通过示例的方式来描述实施方案。
即使使用加速结构,在光线跟踪系统中执行相交测试所涉及的工作量仍然很大。例如,光线跟踪可用于渲染3D场景的图像,其中图像可具有大约一百万像素。像素颜色值源自与图像平面中的点相关联的样本的一些分布(通常,像素与样本位置之间存在一对一的对应关系,但图像的区域可能具有较高或较低的样本密度,或者可能另外独立于像素的布置)。在光线跟踪的上下文中,样本本身与由每个样本位置的邻域参数化的一次光线(在统计意义上)的分布相关联。在最简单示例中,针对每个样本跟踪单个一次光线,并且使用所述一次光线来确定所述样本的结果。在其他示例中,可以根据分布(例如,随机采样)和源自单独的一次光线的一些累积或组合的结果生成多条光线。当光线与场景中的物体相交时,可以执行着色器,其可以使另一光线(即,“二次光线”)发射到场景中。每个一次光线可引起数个二次光线的发射,这些二次光线全部通过场景跟踪以确定其交点。因此,通过场景跟踪数千万或数亿的光线以渲染图像并不少见。随着图形渲染技术的发展,要渲染的场景变得越来越复杂,因此场景中存在数千个物体并不少见,每个物体可以由许多图元表示。此外,正在渲染的图像可以表示要实时渲染的帧序列的帧,例如,用于实时向用户显示。例如,用户可能正在玩游戏,其中渲染的图像表示在用户玩游戏时所述用户的3D场景视图。为了使一系列帧看起来像是连续的视频数据流,可以每秒渲染数个帧,例如每秒24、30或60帧,作为一些示例。因此,可以理解的是,在光线跟踪系统中执行相交测试以实时渲染要输出的场景所涉及的工作很多。
克服此问题并执行光线跟踪以实时渲染要输出的场景的一种方式是使一个或多个超级计算机执行所有处理。这可被视为一种“强力”方法。然而,除了具有高性能(执行光线跟踪以实时渲染要输出的场景)的目标,还存在缩减光线跟踪系统的尺寸(例如硅面积)和功耗的竞争目标。例如,可存在在例如平板计算机或智能手机等移动装置上实施光线跟踪系统的目标,其可接受的尺寸和功耗可远低于超级计算机。因此,当设计光线跟踪系统时,在性能、功耗和面积之间可存在折衷。取决于如何实施此折衷,本文所描述的示例可以允许提高性能而不显著增加功耗和面积(与上文在背景部分中所描述的现有技术相比)。替代地,在折衷的不同实施方案中,本文所描述的示例可以允许缩减光线跟踪系统的功耗和/或尺寸而不显著降低光线跟踪系统的性能(与上文在背景部分中所描述的现有技术相比)。可以设计不同的实施方案以针对性能、功耗和硅面积之间的折衷中的不同点。
如上文所描述,测试光线与对应于加速结构的节点的轴对齐边界框(AABB)的相交是光线跟踪系统中极其频繁的操作。具体地说,光线与边界体积的相交测试(即,确定光线是否与轴对齐框相交)通常考虑被执行以使用光线跟踪来渲染场景图像的大多数相交测试。因此,可对执行相交测试的方式进行的任何优化对于在减少光线跟踪系统的延迟、功耗和物理尺寸方面优化光线跟踪系统可能非常有用。
在背景部分中给出的两个示例中,执行六个测试(加上最小和最大距离测试)以确定光线是否与轴对齐框相交。根据本文所述的示例,这些测试可以被简化和/或在多个测试中使用的中间值可以被计算一次并且被重新使用,而不是在每次使用它们时计算它们,从而减少在执行用于确定光线是否与轴对齐框相交的测试中涉及的处理工作量。这可以通过执行对于光线恒定的少量预先计算来实现,因此可以降低执行此预先计算的成本,这是因为对光线执行了一次预先计算,然后就可以在涉及光线的许多相交测试中使用所述预先计算。光线方向向量D具有分量Dx,Dy和Dz(在定义框的空间坐标系的三维中:x,y和z)。在下面详细所述的示例中,在执行相交测试之前,选择性地置换(即,选择性地交换)和/或反转光线的x、y和z分量和轴对齐框,以确定对应的u、v和w分量,其中维度u,v和w对应于空间坐标系的置换和/或反转维度x,y和z。特别地,在这些示例中,执行轴的选择性反转,使得光线方向向量将指向空间坐标系的八分区中,所述八分区对于u,v和w具有正值,并且选择性地置换轴,使得Dw将为光线方向的主分量,即|Dw|≥|Du|和|Dw|≥|Dv|。因此,在轴的选择性置换和/或反转之后,已知Dw≥Du≥0和Dw≥Dv≥0。由于任何有效光线方向向量具有非零的量值,因此还已知|Dw|>0。例如,可以预先计算并且存储光线的和/>的值。作为另一示例,可以预先计算并且可以存储光线的/>和/>的值,其中A是标量值,例如A是非零常数值,并且在一些示例中A=1。在一些示例中,光线的/>值可以被预先计算并且也可以被存储。对于框测试,我们可能仅使用符号Dw,因此在一些示例中,可仅存储符号Dw以用于框测试中,而不是存储Dw或/>在已经预先计算这些值之后,可使用这些值对光线执行相交测试。预先计算值可用于可并行执行的多个相交测试。在一些示例中,存储预先计算值,使得它们可以被读取,而不是被计算以用于对光线执行相交测试。减少执行用于确定光线是否与轴对齐框相交的测试中涉及的处理工作量可以减少光线跟踪系统中的相交测试模块的等待时间、量值和/或功耗。
图1示出了包括光线跟踪单元102和存储器104的光线跟踪系统100。光线跟踪单元102包括处理模块106、相交测试模块108和处理逻辑110。相交测试模块108包括一个或多个框相交测试单元112、一个或多个三角形相交测试单元114、光线重新缩放单元116和示例变换单元118。在一些示例中,相交测试模块108还可以包括一个或多个过程测试器单元(图1中未示出),用于针对过程图元(例如,由着色器代码以编程方式生成的这些)执行相交测试。在操作中,光线跟踪单元102接收定义3D场景内的对象的几何数据。光线跟踪单元102还接收定义要测试相交的光线的光线数据。光线可以是一次光线或二次光线。处理模块106被配置为基于几何数据生成加速结构,并且将加速结构发送至存储器104以存储于其中。在加速结构已被存储在存储器104中之后,相交测试模块108可以从存储器104检索加速结构的节点(包括定义对应于节点的轴对齐框的数据)以针对所检索的节点执行光线相交测试。为了避免一次读取整个加速结构,相交测试模块108基于先前相交测试的结果在每个阶段从存储器104检索来自一层加速结构的框的子集。框相交测试单元112执行相交测试以确定光线是否与对应于加速结构的节点的边界框中的每一个相交(其中未命中可以剔除大片的分层加速结构)。如果叶节点相交,则三角形相交测试单元114执行一个或多个三角形相交测试以确定光线与哪个(些)物体(如果存在)相交。相交测试的结果指示光线与场景中的哪一个物体相交,并且结果还可以指示在所述物体上所述光线与所述物体相交的位置,并且还可以指示沿着光线发生相交的距离。将相交测试的结果提供到处理逻辑110。处理逻辑110被配置为处理相交测试的结果以确定表示3D场景的图像的渲染值。由处理逻辑110确定的渲染值可以传回到存储器104以存储在其中以表示3D场景的图像。
图2a从第一视角示出了两条光线202和214以及框204。如上所述,光线202和214r(t),可以表示为r(t)=O+Dt,其中O是表示光线的原点的向量,并且D是光线的方向向量,其中O=(Ox,Oy,Oz)和D=(Dx,Dy,Dz)。可以选择性地置换和/或反转x、y和z轴,从而确定坐标系的u、v和w轴。图2a中示出了u、v和w轴。在此示例中,光线202和214两者具有相同的原点,并且坐标系的原点在光线原点处。这可以通过减去光线原点以平移光线原点和框的位置来实现。框204是相对于u、v和w轴(以及相对于x、y和z轴)的轴对齐框。坐标系可以是正在渲染的场景的世界空间坐标系,或者坐标系可以是正在渲染的场景内的一组几何形状的示例的示例空间坐标系。框204的拐角206在一个位置(bmin,u,bmin,v,bmin,w),而框的相对拐角208在一个位置(bmax,u,bmax,v,bmax,w)。框204表示由三维轴对齐框的每个维度的前向平面和后向平面定义的体积。特别地,对于u维度,存在:(i)-前向(FF)平面(包括拐角点206、216、218和222),其具有平行于u轴并指向u的负值的法线,其中针对u维度的前向平面上的任何点都具有bmin,u的u分量值;以及(ii)后向(BF)平面(包括拐角点208、220、224和226),其具有平行于u轴并指向u的正值的法线,其中针对u维度的后向平面上的任何点都具有bmax,u的u分量值。对于v维度,存在:(i)-前向(FF)平面(包括拐角点206、222、224和226),其具有平行于v轴并指向v的负值的法线,其中针对v维度的前向平面上的任何点都具有bmin,v的v分量值;以及(ii)后向(BF)平面(包括拐角点208、216、218和220),所述平面具有平行于v轴并指向v的正值的法线,其中针对v维度的后向平面上的任何点都具有bmax,v的v分量值。对于W维度,存在:(i)前向(FF)平面(包括拐角点206、218、220和224),其具有平行于w轴并指向w的负值的法线,其中针对w维度的前向平面上的任何点都具有bmin,w的w分量值;以及(ii)后向(BF)平面(包括拐角点208、216、222和226),其具有平行于w轴并指向w的正值的法线,其中针对w维度的后向平面上的任何点都具有bmax,w的w分量值。在图2a所示的示例中,光线202和214以及框204都在坐标系的正八分区中,即光线202和214的方向向量对于它们的所有分量值都具有正值,并且bmin,u,bmin,v,bmin,w,bmax,u,bmax,v和bmax,wz全部都是正的。不同于定义物体的平面/面之间可能不具有相关性的一般物体,定义轴对齐边界框(AABB)的面的平面布置成平行对,使得对于每个维度,AABB都具有前向平面和平行的后向平面。如上所述,选择性地反转这些轴,使得光线方向向量指向空间坐标系的八分区,所述八分区对于u,v和w具有正值,即Du≥0,Dv≥0且Dw>0。因此,轴的前向平面沿该轴具有比轴的后向平面更低的恒定分量值。对于AABB的一对平行平面,前向(FF)平面是光线将首先与之相交的平面(当沿着光线方向从-∞看时),而后向(BF)平面是光线将其次与之相交的平面(当沿着光线方向从-∞看时)。如果光线与框204相交(对于所述线,所有bmin,u,bmin,v,bmin,w,bmax,u,bmax,v和bmax,w全部是正的),则它将通过前向平面进入框,并且它将通过后向平面离开框。这一般化为使得,如果框被放置在光线原点后面(使得对于负t可以发生相交),则前向平面与光线以较低(最负)的t值相交,并且后向平面与光线以较高(最小负)的t值相交。还注意到,如果光线平行于任何平面对(即,如果Du和Dv中的至少一个为零),则它将与平面对的平面中的一个相交,而如果光线不平行于平面对,则存在分别由平面对的前面和后向平面界定的(无限)体积的唯一的进入点和退出点。
图2b从第二视角示出了光线202和214以及框204,其中第二视角在光线原点处。由于图2b的视角是光线202和214的原点,所以光线仅表现为点。图2b中示出了u、v和w轴。在图2a和图2b中,框204的拐角被一致地标记为206、208、216、218、220、222、224和226,以帮助理解如何在两个图中查看框204。
如图2a和图2b所示,光线202与框204相交。具体地说,光线202在位置210和212处与框的平面相交。在图2b中,交点210和212处于与光线202相同的投影位置。光线202在位置210进入框204,所述位置在框204的针对w维度的前向平面上,具有bmin,w的恒定w分量值。光线202在位置212离开框204,所述位置在框204的针对v维度的后向平面上,具有bmax,v的恒定v分量值。光线214不与框204相交。
图3a和图3b是执行相交测试以确定光线202是否与3D轴对齐框204相交的方法的流程图。尽管以下描述涉及测试光线202是否与框204相交,但可以应用相同的方法来测试光线214是否与框204相交。图3a和图3b中所示的方法由相交测试模块108执行。
在步骤S302中,在相交测试模块108处获得定义光线202和框204的数据。具体地说,获得定义光线原点和光线方向的分量的数据。定义光线原点的数据可以是光线原点位置的三个分量Ox,Oy和Oz。定义光线方向的数据可包括光线方向的三个分量Dx,Dy和Dz。定义框的数据可以是定义表示框的平面的位置的数据,例如,在三维中的每个中对于前向平面和后向平面中的每个恒定的分量值。
在步骤S304中,相交测试模块108(例如,框相交测试单元112或实例变换单元118)从定义框的前向平面和后向平面的位置的相应分量中减去光线的原点的相应分量。步骤S304可以被描述为在光线202和框204上执行平移,使得坐标系的原点在光线202的原点处。从参考图3a和图3b所描述的方法中的这一点开始,光线的原点是坐标系的原点,即在位置(0,0,0)处。
在步骤S306中,相交测试模块108(例如,实例变换单元118)选择性地置换和/或反转光线和框的分量的轴,使得Dw≥Du≥0和Dw≥Dv≥0。在步骤S306中,轴的选择性置换和/或反转将空间坐标系的x、y和z轴映射到u、v和w轴上。轴的置换可被认为是重新布置轴。具体地说,轴的置换包括:(i)三个轴的旋转,(ii)两个轴的转置,或(iii)同一性(即,不改变轴)。应注意,涉及两个轴的转置的置换可改变坐标系的偏手性,而不涉及两个轴的转置的置换不会改变坐标系的偏手性。执行轴的置换,使得光线方向的主分量是Dw(即,确保|Dw|≥|Du|和|Dw|≥|Dv|)。例如,如果光线方向向量的z分量具有比光线方向向量的x和y分量更大的量值,则不使用置换(其可以被认为是使用恒等运算的置换),使得u=x,v=y并且w=z;如果光线方向向量的x分量具有比光线方向向量的y和z分量更大的量值,则所述置换包括三个轴的旋转,使得u=y、v=z并且w=x;并且如果光线方向向量的y分量具有比光线方向向量的x和z分量更大的量值,则置换包括y和z轴的转置,使得u=x,v=z并且w=y。可以仅在步骤S306中执行选择性置换(即不执行选择性反转),但是在参照图3a至图3b描述的方法中,执行零轴、一个或多个轴的选择性反转,使得光线方向进入具有正u、v和w的八分圆。轴的“反转”可被称为“反射”、“反向”或“求反”,并且可涉及改变维度中沿着所讨论的轴的所有分量值的正负号。定义光线的数据包括光线方向,并且定义框的数据包括定义框的平面的位置的分量值。无论是否执行轴的选择性反转,都需要注意正确地标识哪些平面是“前向”平面以及哪些平面是“后向”平面,因为如本领域技术人员将显而易见的,反转轴以用于维度交换所述维度的平面中的哪些是前向以及哪些是后向。特别地,用于负光线分量的前向平面具有较高的值(例如,最小负值),并且后向平面具有较低的值(例如,最大负值)。在一些示例中,对于具有沿着特定维度的正光线方向的光线,作为AABB格式的一部分,明确地标识一对平面中的哪个平面是前向的以及哪个平面是后向的(例如,对有序分量序列进行编码,使得第一三元组值小于或等于第二值);根据定义,这不取决于任何给定光线的方向。在这些示例中,不必比较平面对来建立相对于特定光线哪个是前向的以及哪个是后向的。如果相应的光线方向分量是正的,则前向和后向平面被假定为如AABB格式所指定的,否则光线方向分量是负的,并且平面被交换。为了便于说明,我们假设执行轴的选择性反转,即,使得光线方向进入具有正u,v和w的八分区,使得如果特定维度的光线方向分量为负,则其轴反转,然后将特定维度的前向平面和后向平面的定义切换到本文描述的定义,使得前向平面将是与后向平面的沿着特定维度的恒定分量值相比具有沿着特定维度的较低恒定分量值的平面。
图2a和图2b示出了在步骤S304和S306中已经执行了轴的平移和选择性置换和/或反转之后的光线202和框204,使得坐标系的原点处于光线的原点,并且使得Dw≥Du≥0和Dw≥Dv≥0处于光线的原点。
在步骤S308中,相交测试模块108(例如,光线重新缩放单元116)确定光线202的方向向量的缩放光线分量。如以下参照图5和图6更详细描述的,在不同实施方案中可以不同地执行重新缩放。例如,可以将重新缩放的光线分量(即,光线方向向量的分量)、ρu,ρv和ρw确定为和/>在所述示例中,不执行确定ρw的值的运算或计算,因为根据定义,刚好知道ρw=1,所以步骤S308可能仅涉及确定ρu和ρv的运算或计算。注意,在本文所述的主要示例中,轴被选择性地反转,使得Du≥0,Dv≥0和Dw≥0,因此在这些示例中,模数符号对ρu,ρv和ρw的表达式没有影响,使得/>和/>作为另一个示例,重新缩放的光线分量(即光线方向向量的分量)ρu,ρv和ρw可以确定为和/>并且其中A是有限的非零标量常数,例如A=1。在所述示例中,不执行确定ρw的值的运算或计算,因为根据定义,刚好知道ρw=|A|,其中|A|的值是恒定的和预定的,所以步骤S308可能仅涉及确定ρu和ρv的运算或计算。在本文所述的示例中,A为正,并且再次注意,在本文所述的主要示例中,轴选择性地反转,使得Du≥0,Dv≥0和Dw≥0,因此在这些示例中,模数符号对ρu,ρv和ρw的表达式没有影响,使得和/> 为正。如下面更详细地描述的,光线分量的重新缩放可以简化由框相交测试单元112执行的运算,以便确定光线是否与框相交(以及在三角形相交测试单元114中确定光线是否与三角形相交)。
在这里所述的示例中,在步骤S308中由光线重新缩放单元116执行的计算涉及除法运算。除法运算通常比包括乘法、加法和减法运算的许多其它运算在硬件中实现起来更复杂。然而,在步骤S308中,可以针对光线执行一次光线分量的重新缩放,然后可以随后在相交测试模块中例如由框相交测试单元112和/或三角形相交测试单元114多次使用重新缩放的光线分量。因此,可以在涉及光线的许多相交测试上分摊在针对光线执行步骤S308中的运算中涉及的成本。此外,由于重新缩放的光线分量可简化由框相交测试单元112和/或三角形相交测试单元114执行的运算,因此重新缩放的光线分量的使用可总体上改进相交测试模块108的效率(例如,在减少的处理等待时间、减少的硅面积和/或减少的功率消耗方面)。注意,在重新缩放的光线分量被用于与多个框的相交测试的情况下,则存储原始光线分量(例如sgn(Dx),sgn(Dy)和sgn(Dz))的符号的指示和哪些轴是光线方向主轴的指示以及重新缩放的光线分量,使得相交测试模块108知道如何选择性地置换和/或反转这些轴(如以上关于步骤S306所述),从而将x、y和z框分量映射到u、v和w轴上,以便相对于后续框测试光线。在这些示例中,步骤S302可以包括接收重新缩放的光线分量和原始光线分量的符号的指示以及哪些轴是光线方向主轴的指示,然后步骤S304和S306将包括选择性地置换和/或反转框分量的轴以匹配光线分量如何被选择性地置换和/或反转(根据光线分量的符号的指示以及哪些轴是光线方向主轴的指示)以及从框分量中减去光线原点的分量。因此,在这些示例中,对后续框的框分量执行步骤S304和S306,但是不需要对相同光线的光线分量重复。
在相交测试模块108处接收光线202的未缩放的最小剔除距离tmin,unscaled和未缩放的最大剔除距离tmax,unscaled。在步骤S310中,相交测试模块108(例如,光线重新缩放单元116)使用将光线的未缩放的最小剔除距离和最大剔除距离乘以Dw的量值的结果来确定缩放的最小剔除距离和最大剔除距离tmin,scaled和tmax,scaled。例如,缩放的最小剔除距离可被确定为tmin,scaled=Dwtmin,unscaled,缩放的最大剔除距离可被确定为tmax,scaled=Dwtmax,unscaled。在另一示例中,缩放的最小剔除距离可被确定为tmin,scaled=ADwtmin,unscaled,并且缩放的最大剔除距离可被确定为tmax,scaled=ADwtmax,unscaled,其中A是可被用于确定重新缩放的光线分量的标量值。
在步骤S308和S310中由光线重新缩放单元116确定的缩放的光线分量以及缩放的最小剔除距离和最大剔除距离tmin,scaled和dtmax,scaled被存储用于光线202(例如,在图1中未示出的光线跟踪单元102的存储器中,例如,在相交测试模块108内的存储器中),以供框相交测试单元112和/或三角形相交测试单元114在执行涉及光线的相交测试时后续使用。
如上所述,注意,步骤S302到S310可能不是按图3a中所示的顺序执行的。例如,可以在知道光线将针对哪个框进行相交测试之前,针对光线执行步骤S306、S308和S310。因此,可以执行这些步骤,并且可以存储原始光线分量的符号的指示以及哪些轴是光线方向主轴的指示,然后可以执行步骤S302和S304,其中在步骤S302中为光线接收的数据可以包括重新缩放的光线分量(其可能不包括ρw的值)、Dx,Dy和Dz的符号的指示、Dx,Dy和Dz中的哪个是最大的(即,其是主轴)的指示以及在步骤S308和S310中已经确定的光线的缩放的最小剔除距离和最大剔除距离。如果光线涉及关于多个框和/或三角形的相交测试,则可以针对光线执行一次步骤S306、S308和S310,以确定光线的缩放的光线分量以及缩放的最小剔除距离和最大剔除距离,然后可以在多个相交测试中使用这些步骤来测试光线与多个框和/或三角形的相交。
在步骤S308中确定的缩放的光线分量以及在步骤S310中确定的缩放的最小剔除距离和最大剔除距离被用于确定光线是否与框相交。
在步骤S311中,可以执行早期排除测试。下面参照图7更详细地描述早期排除测试。如果确定在所述早期阶段可以排除光线和框之间的相交,则所述方法直接从步骤S311转到步骤S324,其中确定光线未命中框而无需执行步骤S312到S322。然而,如果步骤S311没有确定光线和框之间的相交在所述早期阶段可以被排除,则所述方法从步骤S311进行到步骤S312。在一些示例中,不执行步骤S311的早期排除测试,并且在这些示例中,所述方法将直接从步骤S310转到步骤S312。
在步骤S312中,相交测试模块108(具体地,一个或多个框相交测试单元112)标识框204的前向平面中的哪个前向平面在沿着光线最远的位置与光线202相交,并且标识框204的后向平面中的哪个后向平面在沿着光线最近的位置与光线202相交。使用重新缩放的光线分量ρu,ρv和ρw以及定义框204的平面位置的分量bmin,u,bmin,v,bmin,w,bmax,u,bmax,v和bmax,w来执行所述步骤。执行步骤S312的方式在不同的示例中是不同的,如下面参考图5和图6所描述的,并且取决于在步骤S308中缩放光线分量的方式。
如上文所描述,对于每个维度,框204具有前向平面和后向平面。光线在与所述维度的后向平面相交之前,将与所述维度的前向平面相交。由于在步骤S306中选择性地反转轴,使得光线被引导到由u、v和w轴定义的空间坐标系的正八分区中,所以针对某个维度的前向平面将具有针对所述维度的最小分量值(例如bmin,u,bmin,v或bmin,w),并且针对某个维度的后向平面将具有所述维度的最大分量值(例如bmax,u,bmax,v或bmax,w)。如果光线的来源位于框的外部,并且如果光线进入和离开框,则光线通过前向平面进入框,并且光线通过后向平面离开框。具体地说,如果光线进入和离开框,则光线通过在沿着光线的最远位置与光线相交的(框的三个前向平面中的)前向平面进入框,并且光线通过在沿着光线的最近位置与光线相交的(三个后向平面中的)后向平面离开框。在平局的情况下,光线在拐角上(如果所有面平局)或在边缘上(如果两个面平局)进入(或离开)多个前向(或后向)平面上的框。短语“沿着光线最远的位置”在这里将被理解为意指“在具有最大t值的点处”(在光线等式r(t)=O+Dt中),并且短语“沿着光线最近的位置”在这里将被理解为意指“在具有最低t值的点处”(在光线等式r(t)=O+Dt中)。因此,在本文所述的示例中,短语“沿着最远”和“沿着最近”是指光线方向向量,而不是意味着“离光线原点最远”或“离光线原点最近”。
所述方法从步骤S312转到步骤S314、S316和S318。
在步骤S314中,框相交测试单元112确定如果光线无限长,则光线是否将与轴对齐框相交。为此,在步骤S314中,相交测试模块108(例如,框相交测试单元112)确定光线是否与所标识的前向平面相交,而不是沿着光线与所标识的后向平面相交的位置。如果光线与所标识的前向平面相交,而不是沿着光线与所标识的后向平面相交的位置相交,则光线可以与框相交(在步骤S316和S318中进行最小和最大距离剔除测试)。然而,如果光线沿着光线比光线与所标识的前向平面相交的位置与所标识的前向平面相交得更远,则光线不与框相交,即,光线错过框。
例如,参考图2a和图2b,用于光线202的框204的所标识的前向平面(在步骤S312中标识)是针对w维度的前向平面,其具有bmin,w的恒定w分量值。光线202与针对w维度的前向平面相交的沿着光线的位置比光线202与针对u和v维度的前向平面相交的位置更远。对于光线202,框204的标识的后向平面(在步骤S312中标识)是针对v维度的后向平面,其具有bmax,v的恒定v分量值。光线202与针对v维度的后向平面相交的沿着光线的位置比光线202与针对u和w维度的后向平面相交的位置更近。然后,在步骤S314中确定光线202与所标识的前向平面在点210处相交的位置比光线202与所标识的后向平面在点212处相交的距离更近,因此光线202可以与框204相交(在步骤S316和S318中经受最小和最大距离剔除测试)。
又如,参考图2a和图2b,用于光线214的框204的所标识的前向平面(在步骤S312中标识)是针对w维度的前向平面,其具有bmin,w的恒定w分量值。光线214与针对w维度的前向平面相交的沿着光线的位置比光线214与针对u和v维度的前向平面相交的位置更远。对于光线214,框204的标识的后向平面(在步骤S312中标识)是针对v维度的后向平面,其具有bmax,u的恒定v分量值u。光线214与针对u维度的后向平面相交的沿着光线的位置比光线214与针对v和w维度的后向平面相交的位置更近。然后,在步骤S314中确定光线214与所标识的前向平面沿着光线相交的位置比光线214与所标识的后向平面相交的位置更远,并且因此确定光线214未命中框204,如在图2a和图2b中可以看到的。
在步骤S316中,框相交测试单元112确定光线是否在沿着光线至少与光线的最小剔除距离一样远的位置处与所标识的后向平面相交。如果光线在至少与最小剔除距离一样远的位置处与所标识的后向平面相交,则光线可与框相交(经受步骤S314和S318中的测试)。然而,如果光线在沿着光线比最小剔除距离更近的位置处与所标识的后向平面相交,则光线不与框相交,即,它未命中框。换句话说,在步骤S316中,框相交测试单元112确定光线的原点(由最小剔除距离定义)在沿着光线的方向向量行进时是否超出框。图4a示出了框相交测试单元112确定光线402是否与框404相交的示例。最小剔除距离定义了光线离光线原点410的最小有效距离,最大剔除距离定义了光线离光线原点412的最大有效距离。在步骤S314中,将确定光线402在其与框404的所标识的后向平面相交(在点408处)之前与框404的所标识的前向平面相交(在点406处),使得光线402可以与框404相交。在一些示例中,最小剔除距离为零,但在图4a所示的示例中,最小剔除距离大于零。注意,由于在步骤S306中选择性地反转了轴,因此光线的方向向量进入正八分区,即Du≥0,Dv≥0和Dw>0。在图4a所示的示例中,光线离光线原点410的最小有效距离大于从光线原点到光线与框的最近的后向平面在点408处的交点的距离。因此,在所述示例中,在步骤S316中,将确定不满足最小距离条件,即,将确定光线在沿着光线比最小剔除距离更近的位置408处与框404的所标识的后向平面相交,使得光线402不与框404相交。
在步骤S318中,框相交测试单元112确定光线是否在沿着光线不超过光线的最大剔除距离的位置处与所标识的前向平面相交。如果光线在沿着光线不超过最大剔除距离的位置处与所标识的前向平面相交,则光线可与框相交(经受步骤S314和S316中的测试)。然而,如果光线在沿着光线比最大剔除距离更远的位置处与所标识的前向平面相交,则光线不与框相交。换句话说,在步骤S318中,框相交测试单元112确定光线的端部(由最大剔除距离定义)在沿着光线的方向向量行进时是否在框之前。图4b示出了框相交测试单元112确定光线422是否与框424相交的示例。最小剔除距离定义了光线离光线原点430的最小有效距离,最大剔除距离定义了光线离光线原点432的最大有效距离。注意,在这个示例中,最小剔除距离430为负,即,在光线被定义为r(t)=O+Dt的情况下,其中Du≥0,Dv≥0和Dw>0,最小剔除距离430处于具有负值t的位置。对于负的t值,可以应用与正的t值相同的方法。在步骤S314中,将确定光线422在其与框424的所标识的后向平面相交(在点428处)之前与框424的所标识的前向平面相交(在点426处),使得光线422可以与框424相交。在图4b所示的示例中,光线离光线原点432的最大有效距离小于从光线原点到光线与框的最远前向平面在点426处的交点的距离。因此,在所述示例中,在步骤S318中,将确定不满足最大距离条件,即,将确定光线在沿着光线比最大剔除距离更远的位置426处与框424的所标识的前向平面相交,使得光线422不与框424相交。
图4c示出了框相交测试单元112确定光线442是否与框444相交的示例。最小剔除距离定义了光线离光线原点450的最小有效距离,最大剔除距离定义了光线离光线原点452的最大有效距离。在步骤S314中,将确定光线442在其与框444的所标识的后向平面相交(在点448处)之前与框444的所标识的前向平面相交(在点446处),使得光线442可以与框444相交。在图4c所示的示例中,光线离光线原点450的最小有效距离小于从光线原点到光线与框的最近的后向平面在点448处的交点的距离。因此,在此示例中,在步骤S316中,将确定满足最小距离条件,即,将确定光线在沿着光线至少与最小剔除距离一样远的位置448处与框444的所标识的后向平面相交,使得光线442可与框444相交。此外,在图4c所示的示例中,光线离光线原点452的最大有效距离大于从光线原点到光线与框的最远前向平面在点446处的交点的距离。因此,在所述示例中,在步骤S318中,将确定满足最大距离条件,即,将确定光线在沿着光线不超过最大剔除距离的位置446处与框444的所标识的前向平面相交,使得光线442可与框444相交。
步骤S314、S316和S318中的一个或多个的结果被用于步骤S320。在步骤S320中,框相交测试单元112确定是否满足在相应的步骤S314、S316和S318中执行的所有三个确定。如果满足所有这三个确定(即,如果(i)在步骤S314中确定光线与所标识的前向平面相交的位置不比光线与所标识的后向平面相交的位置更远,(ii)确定光线与所标识的后向平面相交于沿着光线至少与最小剔除距离一样远的位置,以及(iii)确定光线与所标识的前向平面相交于沿着光线不比最大剔除距离更远的位置),则所述方法从步骤S320转到步骤S322,其中框相交测试单元112确定光线与框相交。另一方面,如果不满足三个确定中的一个或多个(即,如果(i)在步骤S314中确定光线与所标识的前向平面相交的位置比光线与所标识的后向平面相交的位置更远,(ii)确定光线与所标识的后向平面相交于沿着光线比最小剔除距离近的位置,或(iii)确定光线与所标识的前向平面相交于沿着光线比最大剔除距离更远的位置),则所述方法从步骤S320转到步骤S324,其中框相交测试单元112确定光线不与框相交,即,其未命中框。
在步骤S322或S324之后,方法进行到步骤S326,在所述步骤中,相交测试模块108输出确定光线是否与框相交的结果的指示。此指示可以是二进制指示(例如,一位标志),以指示光线相对于框的‘命中’或‘错过’。在其他示例中,指示可以具有不同的形式。在步骤S328中,(例如,处理逻辑110)在光线跟踪系统100中使用输出的指示来渲染3D场景的图像。例如,框可以界定要在场景中渲染的几何形状。如果框对应于要被用于在光线跟踪系统中执行相交测试的分层加速结构的节点,则可以使用光线是否与框相交的指示来确定是否测试光线与对应于节点中对应于相交框的任何子节点的框相交。例如,如果光线与对应于父节点的框相交,则测试光线与对应于所述父节点的子节点的框的相交,而如果光线不与对应于父节点的框相交,则不测试光线与对应于所述父节点的子节点的框的相交。如果光线与对应于分层加速结构的叶节点的框相交,则可以测试光线与叶节点所参考的任何几何形状(例如,三角形或其它图元)的相交。
在图3a和图3b所示的示例中,在步骤S314、S316和S318中执行的测试不依赖于彼此的结果。这样,在图3a和图3b所示的示例中,步骤S314、S316和S318在框相交测试单元112中并行执行,但是在其他示例中,这些步骤中的一个或多个可以不与其他步骤并行执行,例如,它们可以一个接一个地顺序执行。这三个步骤的顺序在不同的示例中可以不同,但是仅为了给出示例,可以执行步骤S314,然后可以执行步骤S316,然后可以执行步骤S318。当已经执行了步骤S314、S316和S318时,方法转到步骤S320。并行执行测试在框相交测试单元112以硬件(例如,在固定功能电路系统中)实施的实施方案中可能特别有益。在其它示例中(例如,其中框相交测试单元112以软件实现,例如在处理单元上执行的计算机代码的模块),可以顺序地执行在步骤S314、S316和S318中执行的测试,其中仅在第一测试未确定光线关于框的未命中时执行测试中的第二测试,并且仅在第一测试和第二测试未确定光线关于框的未命中时执行测试中的第三测试。这种顺序方法允许确定未命中,而不必执行步骤S314、S316和S318的所有测试(如果序列中的较早测试已经确定了光线相对于框的未命中)。
现在我们继续更详细地描述如何实现两个示例。参考图5描述第一示例,并且参考图6描述第二示例。
在第一示例中,在步骤S308中,光线重新缩放单元116确定缩放的光线分量ρu和ρv,使得和/>第三缩放的光线分量/>如上所述,Du,Dv和Dw是光线的光线方向向量k的分量,其中Dw是光线方向向量的主分量。如上所述,在步骤S306中执行轴的选择性置换和/或反转,使得Dw≥Du≥0和Dw≥Dv≥0,并且其中对于有效光线方向向量Dw>0。
在所述第一示例中,在步骤S310中,由光线重新缩放单元116使用将光线的未缩放的最小剔除距离tmin,unscaled乘以Dw的量值的结果来确定缩放的最小剔除距离tmin,scaled。例如,tmin,scaled可以被确定为tmin,scaled=Dwtmin,unscaled。如下文更详细地描述,在其它示例中,t,in,scaled可确定为tmin,scaled=Dwtmin,unscaled+B,其中B为标量值并且其中B≤0。
此外,在所述第一示例中,在步骤S310中,由光线重新缩放单元116使用将光线tmax,unscaled的未缩放的最大剔除距离乘以Dw的量值的结果来确定缩放的最大剔除距离tmax,scaled。例如,tmax,scaled可以被确定为tmax,scaled=Dwtmax,unscaled。如下文更详细地描述,在其它示例中,tmax,scaled可确定为tmax,scaled=Dwtmax,unscaled+C,其中C为标量值并且其中C≥0。
图5示出了在第一示例中在步骤S312期间由框相交测试单元112执行的步骤。执行步骤S502到S514,以便标识框的前向平面中的哪个前向平面在沿着光线的最远位置与光线相交。执行步骤S516到S528,以便标识框的后向平面中的哪个后向平面在沿着光线的最近位置与光线相交。
如上所述,光线202上的点由O+Dt给出,其中O是光线原点,D是光线方向,并且t表示沿着光线离原点的距离。由于步骤S304,重新映射的光线原点的分量全部为零。如果t1<t2,则光线在与位置Dt2相交之前将与位置Dt1相交。当参数t具有使得Dut=bmin,u的值时,光线将与针对u维度的前向平面相交,其中bmin,u是在所述平面上恒定的u维度的分量值;并且当参数t具有使得Dvt=bmin,v的值时,光线将与针对v维度的前向平面相交,其中bmin,v是在所述平面上恒定的v维度的分量值;因此,如果则光线在针对v维度的后向平面相交之前,将与针对u维度的前向平面相交。然而,执行除法运算通常比执行乘法运算更昂贵(在等待时间、硅面积和/或功率消耗方面),因此,与执行比较以比较/>和/>的值不同,方法可改为执行比较以比较bmin,uDv和bmin,vDu的值。这样,运算被叉乘,以避免在比较中需要执行除法运算。然而,光线分量已经被缩放(通过公因子),因此不是使用Du和Dv的值,而是使用ρu和ρv的值。特别地,在步骤S502中,框相交测试单元112确定Aρubmin,v和Aρvbmin,u的叉乘值,其中A是标量值,例如大于零的有限标量常数。例如,A可以是1。然后,步骤S502包括通过比较所确定的Aρubmin,v和Aρvbmin,u的叉乘值来确定是否ρubmin,v≥ρvbmin,u。
如果ρubmin,v>ρvbmin,u,则确定光线与针对v维度的前向平面沿着光线相交的位置比光线与针对u维度的前向平面相交的位置更远,并且所述方法从步骤S502进行到步骤S504。另一方面,如果ρubmin,v<ρvbmin,u,则确定光线与针对v维度的前向平面沿着光线相交的位置比光线与针对v维度的前向平面相交的位置更远,并且所述方法从步骤S502进行到步骤S506。如果ρubmin,v=ρvbmin,u,则实际上,光线与针对u和v维度的前向平面相交的边相交。在这种情况下,选择任一平面作为“更远”平面同样有效,并且所述选择不影响测试过程的有效性,因此可以选择u和v个前向平面中的任一个,但是在图5所示的示例中,选择针对v维度的前向平面,并且所述方法从步骤S502转到步骤S504。步骤S502包括执行两个乘法运算和两个乘法运算的结果的比较。相对于除法或减法运算,乘法和比较运算在硬件中实施的成本较低,例如,乘法和比较运算可以在硅面积较小的硬件(例如,固定功能电路系统)中实施。因此,实现乘法和比较运算以确定ρubmin,v≥ρvbmin,u在硬件中实现是否比实现除法和比较运算以确定是否或者实现乘法和减法运算以确定是否ρubmin,v-ρvbmin,u≥0更便宜(例如,在硅面积方面)。注意,ρu和ρv值≥0(并且稍后将描述用于ρu=0或ρv=0的特殊情况),使得前向平面和后向平面分别具有最小和最大恒定分量。如上所述,如果任何光线方向分量为负,则这些平面的角色互换,使得为了执行正确的比较,最大分量被标识(而不是最小)为任何负方向分量的前向平面(或者等效地,在此描述的测试中的比较的符号可以反转)。因此,轴的选择性反转确保我们具有一致的平面排序,而与光线的方向无关。如果不进行反转,则光线方向分量和恒定平面分量的符号保持不变,但是在比较结果中将产生等效的结果。在任一情况下,必须小心以确保标识正确的平面以进行比较。
在步骤S504中,框相交测试单元112确定Aρvbmin,w的叉乘值。步骤S504也使用Aρwbmin,v值,但是所述值可能不需要在步骤S504中主动计算。特别地,由于在步骤S308中光线分量的缩放,ρw=1,所以Aρwbmin,v=Abmin,v。此外,在一些示例中,标量值是A=1,使得Aρwbmin,v=bmin,v。然后,步骤S504包括通过比较Aρvbmin,w和Aρwbmin,v的值来确定是否ρvbmin,w≥ρwbmin,v。
如果在步骤S504中确定ρvbmin,w>ρwbmin,v,则所述方法进行到步骤S508,其中将针对w维度的前向平面标识为在沿着光线最远的位置与光线相交的框的前向平面。另一方面,如果在步骤S504中确定ρvbmin,w<ρwbmin,v,则所述方法进行到步骤S510,其中将针对v维度的前向平面标识为在沿着光线最远的位置与光线相交的框的前向平面。如果在步骤S504中确定ρvbmin,w=ρwbmin,vk,则实际上,光线与针对v和w维度的前向平面相交的边相交。在这种情况下,选择任一平面作为“更远”平面同样有效,并且所述选择不影响测试过程的有效性,因此可以选择v和w个前向平面中的任一个,但是在图5所示的示例中,在这种情形下,在步骤S508中,将针对w维度的前向平面标识为在沿着光线的最远位置与光线相交的框的前向平面。步骤S504涉及执行一个或两个乘法运算和比较运算。如上所述,相对于除法或减法运算,乘法和比较运算在硬件中实施的成本较低,例如,乘法和比较运算可以在硅面积较小的硬件(例如,固定功能电路系统)中实施。
在步骤S506中,框相交测试单元112确定Aρubmin,w的叉乘值。步骤S506也使用Aρwbmin,u值,但是所述值可能不需要在步骤S506中主动计算。特别地,由于在步骤S308中光线分量的缩放,ρw=1,所以Aρwbmin,u=Abmin,u。此外,在一些示例中,标量值是A=1,使得Aρwbmin,u=bmin,u。然后,步骤S506包括通过比较Aρubmin,w和Aρwbmin,u的值来确定是否ρubmin,w≥ρwbmin,u。
如果在步骤S504中确定ρubmin,w>ρwbmin,u,则所述方法进行到步骤S512,其中将针对w维度的前向平面标识为在沿着光线最远的位置与光线相交的框的前向平面。另一方面,如果在步骤S506中确定ρubmin,w<ρwbmin,u,则所述方法进行到步骤S514,其中将针对u维度的前向平面标识为在沿着光线最远的位置与光线相交的框的前向平面。如果在步骤S504中确定ρubmin,w=ρwbmin,uk,则实际上,光线与针对u和w维度的前向平面相交的边相交。在这种情况下,选择任一平面作为“更远”平面同样有效,并且所述选择不影响测试过程的有效性,因此可以选择u和w个前向平面中的任一个,但是在图5所示的示例中,在这种情形下,在步骤S512中,将针对w维度的前向平面标识为在沿着光线的最远位置与光线相交的框的前向平面。步骤S506涉及执行一个或两个乘法运算和比较运算。如上所述,相对于除法或减法运算,乘法和比较运算在硬件中实施的成本较低,例如,乘法和比较运算可以在硅面积较小的硬件(例如,固定功能电路系统)中实施。
因此,步骤S502到S514用于使用叉乘值来标识框的在沿着光线的最远位置与光线相交的前向平面。
在步骤S516中,确定Aρubmax,v和Aρvbmax,u的叉乘值,并比较以确定是否ρubmax,v≤ρvbmax,u。如果ρubmax,v<ρvbmax,u,则确定光线与针对v维度的后向平面沿着光线相交的位置比光线与针对u维度的后向平面相交的位置更近,并且所述方法从步骤S516进行到步骤S518。另一方面,如果ρubmax,v>ρvbmax,u,则确定光线与针对v维度的后向平面沿着光线相交的位置比光线与针对v维度的后向平面相交的位置更近,并且所述方法从步骤S516进行到步骤S520。如果ρubmax,v=ρvbmax,u,则实际上,光线与针对u和v维度的后向平面相交的边相交。在这种情况下,选择任一平面作为“更近”平面同样有效,并且所述选择不影响测试过程的有效性,因此可以选择u和v后向平面中的任一个,但是在图5所示的示例中,选择针对v维度的后向平面,并且所述方法从步骤S516转到步骤S518。步骤S516包括执行两个乘法运算和两个乘法运算的结果的比较。
在步骤S518中,框相交测试单元112确定Aρvbmax,w的叉乘值。步骤S518也使用Aρwbmax,v值,但是所述值可能不需要在步骤S518中主动计算。特别地,由于在步骤S308中光线分量的缩放,ρw=1,所以Aρwbmax,v=Abmax,v。此外,在一些示例中,标量值是A=1,使得Aρwbmax,v=bmax,v。然后,步骤S518包括通过比较Aρvbmax,w和Aρwbmax,v的值来确定是否ρvbmax,w≤ρwbmax,v。如果在步骤S518中确定ρvbmax,w<ρwbmax,v,则所述方法进行到步骤S522,其中将针对w维度的后向平面标识为在沿着光线最近的位置与光线相交的框的后向平面。另一方面,如果在步骤S518中确定ρvbmax,w>ρwbmax,v,则所述方法进行到步骤S524,其中将针对v维度的后向平面标识为在沿着光线最近的位置与光线相交的框的后向平面。如果在步骤S518中确定ρvbmax,w=ρwbmax,vk,则实际上,光线与针对v和w维度的后向平面相交的边相交。在这种情形下,选择任一平面作为“更近”平面同样有效,并且所述选择不影响测试过程的有效性,因此可以选择v和w后向平面中的任一个,但是在图5所示的示例中,在这种情形下,在步骤S522中,将针对w维度的后向平面标识为在沿着光线的最近位置与光线相交的框的后向平面。步骤S518涉及执行一个或两个乘法运算和比较运算。
在步骤S520中,框相交测试单元112确定Aρubmax,w的叉乘值。步骤S520也使用Aρwbmax,u值,但是所述值可能不需要在步骤S520中主动计算。特别地,由于在步骤S308中光线分量的缩放,ρw=1,所以Aρwbmax,u=Abmax,u。此外,在一些示例中,标量值是A=1,使得Aρwbmax,u=bmax,u。然后,步骤S520包括通过比较Aρubmax,w和Aρwbmax,u的值来确定是否ρubmax,w≤ρwbmax,u。
如果在步骤S520中确定ρubmax,w<ρwbmax,u,则所述方法进行到步骤S526,其中将针对w维度的后向平面标识为在沿着光线最近的位置与光线相交的框的后向平面。另一方面,如果在步骤S520中确定ρubmax,w>ρwbmax,u,则所述方法进行到步骤S528,其中将针对u维度的后向平面标识为在沿着光线最近的位置与光线相交的框的后向平面。如果在步骤S520中确定ρubmax,w=ρwbmax,uk,则实际上,光线与针对u和w维度的后向平面相交的边相交。在这种情形下,选择任一平面作为“更近”平面同样有效,并且所述选择不影响测试过程的有效性,因此可以选择u和w后向平面中的任一个,但是在图5所示的示例中,在这种情形下,在步骤S526中,将针对w维度的后向平面标识为在沿着光线的最近位置与光线相交的框的后向平面。步骤S520涉及执行一个或两个乘法运算和比较运算。
因此,步骤S516到S528用于使用叉乘值来标识框的在沿着光线的最近位置与光线相交的后向平面。步骤S516到S528可以与图5所示的步骤S502到S514并行执行。或者,步骤S516到S528可以与步骤S502到S514串行执行。
如下面更详细描述的,零可以作为特殊情况来处理。例如,在形式ρibj≥ρjbi的比较中(其中i和j是u,v或w中的任一个),如果ni=ρi=0,则比较简化为确定是否0≥0,其不提供任何有用信息。如果bi=ρi=0,这意味着光线位于bi平面中。如果bi=ρi=0,则处理这种情况的一种方式是排除平面bi(即,不将其标识为框的在沿着光线的最远位置与光线相交的前向平面,并且不将其标识为框的在沿着光线的最远位置与光线相交的后向平面)。
如上所述,所述方法从步骤S312转到步骤S314、S316和S318。在此示例中,步骤S314包括确定是否Aρ-b+≥Aρ+b-。ρ-和b-的值是在步骤S312中标识出其前向平面的维度的缩放的光线分量值和前向平面的框分量值。特别地,如果针对u维度的前向平面是在沿着光线最远的位置与光线相交的所标识的前向平面,则ρ-=ρu和b-=bmin,u;如果针对v维度的前向平面是在沿着光线最远的位置与光线相交的所标识的前向平面,则ρ-=ρv和b-=bmin,v;并且如果针对w维度的前向平面是在沿着光线最远的位置与光线相交的所标识的前向平面,则ρ-=ρw=1和b-=bmin,w。ρ+和b+的值是在步骤S312中标识出其后向平面的维度的缩放的光线分量值和后向平面的框分量值。特别地,如果针对u维度的后向平面是在沿着光线最近的位置与光线相交的所标识的后向平面,则ρ+=ρu和b+=bmax,u;如果针对v维度的后向平面是在沿着光线最近的位置与光线相交的所标识的后向平面,则ρ+=ρv和b+=bmax,v;并且如果针对w维度的后向平面是在沿着光线最近的位置与光线相交的所标识的后向平面,则ρ+=ρw=1和b+=bmax,w。注意,Aρ-b+和Aρ+b-的值中的一个或两个可能已经在步骤S312中确定。如果在步骤S312中已经确定了值,则可以在步骤S314中重新使用所述值而不重新计算它,即,可以在步骤S312中将其存储(例如,存储在作为框相交测试单元112的一部分的存储器中),然后在步骤S314期间读取所述值。此外,注意,由于ρw=1,如果是ρ-=ρw或ρ+=ρw,则可以简单地确定Aρ-b+和/或Aρ+b-。例如,如果A=1和ρ-=ρw,则Aρ-b+=b+,则不需要计算来确定Aρ-b+的值。类似地,如果A=1和ρ+=ρw,则Aρ+b-=b-,则不需要计算来确定Aρ+b-的值。如果Aρ-b+≥Aρ+b-,则在步骤S314确定光线与所标识的前向平面相交的沿着光线的位置不比光线与所标识的后向平面相交的位置更远。另一方面,如果Aρ-b+<Aρ+b-,则在步骤S314确定光线与所标识的前向平面相交的沿着光线的位置比光线与所标识的后向平面相交的位置更远。在本文所述的示例中,A为正。如果A为负,则这里给出在不等式的两侧都涉及A的的不等式将被反转,例如“大于”比较将变成“小于”比较,例如,Aρ-b+≥Aρ+n-的测试将变成Aρ-b+≤Aρ+b-的测试。
注意,当在计算系统中执行计算时,结果并不总是完全准确的。例如,当两个数(例如,以浮点格式)相乘在一起时,可以对结果进行舍入,以便使结果能够以特定格式表示。这里描述的比较可以作为有损比较来执行,其中比较一个或多个乘法的结果。这意味着,被执行以确定要被比较的值的每个乘法可能被不精确地评估(例如,由于舍入误差),并且在值的比较中允许一些容差。例如,当测试a≥b(假设项是正的)时,测试可以替代地被执行为(a+δ)≥b,其中δ是小的正数,例如对应于a的值中的一个或多个最小精度单位("ULP")。替代地,测试可以被执行为a≤b-δ,使得δ替代地根据b的ULP给出,以便避免相对昂贵的减法(例如,当b和/或a由负浮点值表示时)。作为另一个示例,当测试a≤b(假设这些项是正的)时,测试可以改为被执行为(a-δ)≤b,其中δ是小的正数,例如对应于a的值中的一个或多个最小精度单位(“ULP”)。替代地,测试可以被执行为a≤b+δ,使得δ改为根据b的ULP给出,以便避免相对昂贵的减法(例如当b和/或a由正浮点值表示时)。设计公差使得框测试结果中的任何误差是“保守的”。这意味着框测试中的误差可能提供假正结果,即,误差可能导致在完全准确的测试将发现光线未命中框时确定光线与框相交,但是误差不能使得框测试提供假负结果,即,误差不能导致在完全准确的测试将发现光线与框相交时确定光线未命中框。
此外,如果所标识的前向和后向平面是针对相同维度的平面(即,如果ρ-=ρ+),则在步骤S314中,确定光线在沿着光线不比光线与所标识的后向平面相交的位置更远的位置处与框的所标识的前向平面相交而无需执行步骤S314中的任何计算。换句话说,关于光线是否在沿着光线不比光线与所标识的后向平面相交的位置更远的位置处与框的所标识的前向平面相交的确定可包括确定框的所标识的前向平面和框的所标识的后向平面是针对相同维度的平面。如果是这种情况,则可以确定光线确实在沿着光线不比光线与所标识的后向平面相交的位置更远的位置处与所标识的框的前向平面相交,而不在步骤S314中执行任何进一步的计算。这是因为对于特定的维度,通过定义前向平面和后向平面,光线将与针对所述维度的前向平面相交的沿着光线的位置不比光线与针对后向平面相交的位置更远,即(对于ρ-=ρ+并且正A)。
步骤S316涉及确定是否ρ+tmin,scaled≤b+。这可以通过计算ρ+tmin,scaled的值,然后将所述值与b+进行比较来确定。在所述示例中,如上所述,其中i∈{u,v,w},并且tmin,scaled=Dwtmin,unscaled。因此,ρ+tmin,scaled=D+tmin,unscaled,并且将所述值与b+进行比较将确定光线是否在至少与最小剔除距离一样远的沿着光线的位置处与所标识的后向平面相交。具体地,如果ρ+tmin,scaled≤b+,则确定光线在至少与最小剔除距离一样远的沿着光线的位置处与所标识的后向平面相交;而如果ρ+tmin,scaled>b+,则确定光线在沿着光线比最小剔除距离远的位置处与所标识的后向平面相交。如果ρ+=ρw=1,则步骤S316不涉及乘法运算,而是仅涉及比较运算,以比较tmin,scaled和b+的值。这在硬件中实现起来很简单。上面陈述了其中i∈{u,v,w},并且注意到,在本文描述的主要示例中,轴被选择性地反转,使得Du≥0,Dv≥0和Dw≥0,因此我们不需要模数符号,使得/>
步骤S318涉及确定是否ρ-tmax,scaled≥b-。这可以通过计算ρ-tmax,scaled的值然后将所述值与b-进行比较来确定。在所述示例中,如上所述,(或者在轴被选择性地反转以确保Du≥0,Dv≥0和Sw≥0的示例中仅/>),其中i∈{u,v,w},并且tmax,scaled=Dwtmax,unscaled。因此ρ-tmax,scaled=D-tmax,unscaled,并且将所述值与b-进行比较将确定光线在沿着光线不比最大剔除距离远的位置处与所标识的后向平面相交。具体地,如果ρ-tmax,scaled≥b-,则确定光线在沿着光线不比最大剔除距离远的位置处与所标识的前向平面相交;而如果ρ-tmax,scaled<b-,则确定光线在沿着光线比最大剔除距离更远的位置处与所标识的前向平面相交。如果ρ-=ρw=1,则步骤S318不涉及乘法运算,而是仅涉及比较运算,以比较tmax,scaled和b-的值。这在硬件中实现起来很简单。如上所述,这里描述的比较可以作为有损比较来执行,其中比较一个或多个乘法的结果(包括确定是否ρ+tmin,scaled≤b+以及是否ρ-tmax,scaled≥b-)。这意味着,被执行以确定要比较的值的一个或多个乘法中的每一个可能被不精确地评估(例如,由于舍入误差),并且在值的比较中允许一些容差以确保框测试是保守的。
在所述示例中,步骤S320至S324涉及如果以下所有三项满足,则确定光线与框相交:(i)确定光线在沿着光线不比光线与所标识的后向平面相交的位置更远的位置处与框的所标识的前向平面相交,(ii)确定ρ-tmax,scaled不小于b-,以及(iii)确定ρ+tmin,scaled不大于b+,否则确定光线未命中框。
可以在不计算到框的所述平面中的任一平面的相交距离的情况下执行所述方法。相反,在所述示例中,步骤S312和S314涉及执行比较以针对一对平面确定这些平面中的哪些平面与进一步沿着光线的光线相交,例如通过比较叉乘值,这不涉及计算到框的平面的相交距离。到框的平面的相交距离是从光线原点到所述平面上光线与平面相交的点的距离。
在参考图5所述的示例中,在步骤S502和S516中确定Aρubmin,v,Aρvbmin,u,Aρubmax,v和Aρvbmax,u的叉乘值。此外,以下中的一项或两项的叉乘值:(i)Aρubmin,w和(ii)Aρvbmin,w可以在步骤S504、S506或S314中确定。类似地,以下中的一项或两项的叉乘值:(i)Aρubmax,w和(ii)Aρvbmax,w可以在步骤S518、S520或S314中确定。
在一些情形下,确定下列各项中的仅一项:(i)Aρubmin,w和(ii)Aρvbmin,w。在这些情形下,所述方法通过不执行用于确定这些叉乘值之一的处理来提高框交叉测试过程的效率。特别地,所述方法可以包括仅确定叉乘值Aρubmin,w和Aρvbmin,w中的每一个,条件是其待用于下列中的一项或两项:(a)标识前向平面中的哪个前向平面在沿着光线的最远位置与光线相交(在步骤S504或S506中),以及(b)确定光线是否在沿着光线不比光线与所标识的后向平面相交的位置更远的位置处与框的所标识的前向平面相交(在步骤S314中)。例如,如果方法从步骤S502转到步骤S504(而不是转到步骤S506),并且如果不是以下两种情况,则可能无法确定Aρubmin,w的值:(i)将针对w维度的前向平面标识为最远的前向平面,以及(ii)将针对u维度的后向平面标识为最近的后向平面(使得在步骤S314中不使用Aρubmin,w的值)。作为另一示例,如果方法从步骤S502转到步骤S506(而不是转到步骤S504),并且如果不是以下两种情况,则可能无法确定Aρvbmin,w的值:(i)将针对w维度的前向平面标识为最远的前向平面,以及(ii)将针对v维度的后向平面标识为最近的后向平面(使得在步骤S314中不使用Aρvbmin,w的值)。
类似地,在一些情形下,确定下列各项中的仅一项:(i)Aρubmax,w和(ii)Aρvbmax,w。在这些情形下,所述方法通过不执行用于确定这些叉乘值之一的处理来提高框交叉测试过程的效率。特别地,所述方法可以包括仅确定叉乘值Aρubmax,w和Aρvbmax,w中的每一个,条件是其待用于下列中的一项或两项:(a)标识后向平面中的哪个后向平面在沿着光线的最近位置与光线相交(在步骤S518或S520中),以及(b)确定光线是否在沿着光线不比光线与所标识的后向平面相交的位置更远的位置处与框的所标识的前向平面相交(在步骤S314中)。例如,如果方法从步骤S516转到步骤S518(而不是转到步骤S520),并且如果不是以下两种情况,则可能无法确定Aρubmax,w的值:(i)将针对u维度的前向平面标识为最远的前向平面,以及(ii)将针对w维度的后向平面标识为最近的后向平面(使得在步骤S314中不使用Aρubmax,w的值)。作为另一示例,如果方法从步骤S516转到步骤S520(而不是转到步骤S518),并且如果不是以下两种情况,则可能无法确定Aρvbmax,w的值:(i)将针对v维度的前向平面标识为最远的前向平面,以及(ii)将针对w维度的后向平面标识为最近的后向平面(使得在步骤S314中不使用Aρvbmax,w的值)。
在参考图5描述的实例中产生益处,因为与现有技术相比,可减少所执行的乘法运算的数目。例如,一些乘法的结果可在步骤S312、S314、S316和/或S318之间共享(使得计算这些乘法值中涉及的处理不被复制),并且由于光线分量的缩放以及最小剔除距离和最大剔除距离,可完全避免一些乘法。
特别地,如果标识的前向平面和标识的后向平面都是针对相同维度的平面(即,如果ρ-=ρ+),则步骤S314不涉及任何乘法运算。可以理解,当由于定义轴对齐框的前向和后向平面的定义而导致ρ-=ρ+时,ρ-b+≥ρ+b-自动满足。因此通过所述示例的方法简化了这种情形。
如果在步骤S312中标识出w个前向平面(即,如果ρ-=ρw=1),则步骤S318不涉及任何乘法运算:相反,它仅涉及比较tmax,scaled和bmin,w。此外,在步骤S314中,ρ-b+=b+,因此不需要乘法来计算ρ-b+的值。因此通过所述示例的方法简化了这种情形。
如果在步骤S312中标识出w后向平面(即,如果ρ+=ρw=1),则步骤S316不涉及任何乘法运算:相反,它仅涉及比较tmin,scaled和bmax,w。此外,在步骤S314中,ρ+b-=b-,因此不需要乘法来计算ρ+b-的值。因此通过所述示例的方法简化了这种情形。
如果在步骤S312中标识出u前向平面和v后向平面(即,如果ρ-=ρu和ρ+=ρv),则步骤S314涉及确定是否ρubmax,v≥ρvbmin,u,其中Aρvbmin,u和Aρubmax,v的值已经分别在步骤S502和S516中确定,因此它们可以在步骤S314中重用而无需在步骤S314中执行任何进一步的乘法运算。因此通过所述示例的方法简化了这种情形。
如果在步骤S312中标识出u前向平面和u后向平面(即,如果ρ-=ρv和ρ+=ρu),则步骤S314涉及确定是否ρvbmax,u≥ρubmin,v,其中Aρubmin,v和Aρvbmax,u的值已经分别在步骤S502和S516中确定,因此它们可以在步骤S314中重用而无需在步骤S314中执行任何进一步的乘法运算。因此通过所述示例的方法简化了这种情形。
因此,通过所述示例的方法以各种方式简化了其中平面的不同组合被标识为所标识的前向平面和所标识的后向平面的所有情况。这种简化(例如,需要执行的乘法运算的减少)导致硬件中的益处,诸如减少的硅面积、减少的功耗和减少的等待时间。
上述简化可以这样组合,即,除了在步骤S502和S516中确定的乘积(即,Aρubmin,v,Aρvbmim,u,Aρubmax,v和Aρvbmax,u)的值,最多需要两个另外的乘积来确定步骤S314、S316和S318中的比较。在一些示例中,实现方式可以选择针对第一乘积评估Aρ-b+在ρ+=ρw=1时的值或者替代地ρ+tmin,scaled在ρ+≠ρw时的值。注意,可以基于ρ+的数值或者作为步骤S522或步骤S526的结果来做出所述决定,指示光线在后向w平面之前不与任何后向平面相交。步骤S316所使用的ρ+tmin,scaled的值由该第一乘积在ρ+≠ρw时给出,并且tmin,scaled直接在ρ+=ρw=1时给出。当ρ+=ρw=1时,由该第一乘积给出步骤S314所使用的Aρ-b+的值。否则,有三种情况要考虑。如果p+≠ρw和ρ-=ρw=1,则Aρ-b+是Abmax,v或Abmax,u,并且在A=1的示例中,则Aρ-b+直接由bmax,v或bmax,u给出。如果ρ+≠ρw和ρ+≠ρ-≠ρw,则Aρ-b+由Aρubmax,v或Aρvbmax,u给出,两者都在步骤S516中被评估。否则,如果是ρ+=ρ-,则步骤S314自动通过。
对于第二乘积,实现方式可以选择评估Aρ+b-在ρ-=ρw=1时的值或者替代地ρ-tmax,scaled在ρ-≠ρw时的值。注意,可以基于ρ-的数值或者作为步骤S508或步骤S512的结果来做出所述决定,指示光线在前向w平面之后不与任何前向平面相交。步骤S318所使用的ρ-tmax,scaled的值由该第二乘积在ρ-≠ρw时给出,并且tmax直接在ρ-=ρw=1时给出。当ρ-=ρw=1时,由该第二乘积给出步骤S314所使用的Aρ+b-的值。如果ρ-≠ρw和ρ+=ρw=1,则Aρ+b-是Abmin,v或Abmin,u,并且在A=1的示例中,则Aρ+b-直接由bmin,v或bmin,u给出。如果ρ-≠ρw和ρ-≠ρ+≠ρw,则Aρ+b-由Aρubmin,v或Aρvbmin,u给出,两者都在步骤S502中被评估。否则,如果是ρ+=ρ-,则步骤S314自动通过。
在上述计算中存在一些冗余。首先,如果ρ+=ρ-=ρw=1,则在步骤S314、S316和S318中不需要乘法,并且实际上步骤S314自动通过。其次,如果是ρ+=ρw或ρ-=ρw(但ρ+≠ρ-),则如果步骤S504、S506、S518或S520中的乘积被重用,则可能仅需要一次乘法。由于我们希望避免这些阶段中的冗余比较(我们在步骤S314中减少冗余而在别处增加冗余是没有益的),所以我们依赖于步骤S314所使用的单个乘积(ρ+或ρ-中的一个是ρw=1),Aρvbmin,w,Aρubmin,w,Aρvbmax,w或Aρubmax,w中的任一个(假设ρu或ρv都不是一)匹配在Aρvbmin,w或Aρubmin,w的情况下根据是否执行步骤S504或步骤S506所确定的任何乘积,或者在Aρvbmax,w或Aρubmax,w的情况下根据是否执行步骤S518或步骤S520所确定的任何乘积。如果ρu或ρv是一,则假设w平面是最远的前向平面或最远的后向平面可能不成立(即,如果我们基于ρ-和/或ρ+的数值而不是w平面是最远的前向平面或最远的后向平面的知识来决定计算哪些乘积),但是在这种情况下,从步骤S502和S516可以获得所需的乘积(并且由于在步骤S502到S528中需要更少的乘积,所以可以进行额外的简化)。
在一些示例中,标识这些附加冗余以进一步减少相交测试器的计算工作量可能是有益的。然而,在其它示例中,例如,当在固定功能电路系统中实施功能性时,相交测试模块被配置为处置最坏情况的场景,其在此意味着计算两个乘法以执行步骤S314、S316及S318。利用所述限制因素(即,接受针对步骤S314、S316和S318计算两个乘法,即使有时可能需要少于两个乘法),通过执行冗余计算(具有等效结果)而不是针对特殊情况的测试,可以简化数据选择逻辑(这可以改善关键路径上的等待时间)。特别地,参考上面定义的产品对,我们再次注意到,如果ρ+=ρ-≠ρw,则步骤S314自动通过(注意,如果ρ+=ρ-=ρw,则所述步骤可以自动通过,但是进一步取决于与框的相对面相交的光线,如果为ρu=ρw或ρv=ρw,即,其中前向平面和后向平面与不同尺寸相关联,则情况可能不是这样)。然而,我们可以通过执行形式bmax,u≥bmin,u,bmax,v≥bmin,v,Aρvbmax,u≥Aρvbmin,u或Aρubmax,u≥Aρubmin,u的比较来避免明确地标识这种情况,所有形式的项都已经预先计算。这使得我们能够选择相同的乘积来进行比较,而是否ρ+=ρ-。如步骤S314所使用的ρ-b+的值如上所述由第一乘积在ρ+=ρw=1时给出。否则,现在有两种情况要考虑(前三种)。如果ρ+≠ρw和ρ-=ρw=1,则Aρ-b+是Abmax,v或Abmax,u,并且在A=1的示例中,则Aρ-b+直接由bmax,v或bmax,u给出。如果ρ+≠ρw和ρ+≠ρw,则Aρ-b+或其替代冗余比较项由Aρubmax,v或Aρvbmax,u给出,两者都在步骤S516中评估。当ρ-=ρw=1时,由该第二乘积给出步骤S314所使用的Aρ+b-的值。如果ρ-≠ρw和ρ+=ρw=1,则Aρ+b-是Abmin,v或Abmin,u,并且在A=1的示例中,则Aρ+b-直接由bmin,v或bmin,u给出。如果ρ-≠ρw和ρ+≠ρw,则Aρ+b-或其替代冗余比较项由Aρubmin,v或Aρvbmin,u给出,两者都在步骤S502中评估。
此外,步骤S314所需的比较项的选择可基于步骤S516至S528来进行。特别地,由于步骤S524的结果导致b+=bmax,v,因此可以在步骤S518存储乘积Aρubmax,v,而不需要存储Aρvbmax,u。同样,由于步骤S528的a结果导致b+=bmax,u,因此可以在步骤S520存储乘积Aρvbmax,u,而不需要存储Aρubmax,v。类似地,由于步骤S510的结果导致b-=bmin,v,因此可以在步骤S504存储乘积Aρubmin,v,而不需要存储Aρvbmin,u。同样,由于步骤S514的a结果导致b-=bmin,u,因此可以在步骤S506存储乘积Aρbbmin,u,而不需要存储Aρubmin,v。
现在我们继续参照图6更详细地描述第二示例。在第二示例中,在步骤S308中,光线重新缩放单元116确定缩放的光线分量ρu和ρv,使得它们是缩放的逆光线分量,其中和/>第三缩放的逆光线分量/>如上所述,Du,Dv和Dw是光线的光线方向向量k的分量,其中Dw是光线方向向量的主分量。A是标量值,例如,有限非零标量常数。在本文所述的示例中,A为正。作为示例,A=1。如上所述,在步骤S306中执行轴的选择性置换和/或反转,使得Dw≥Du≥0和Dw≥Dv≥0,并且其中对于有效光线方向向量Dw>0。在所述示例中,缩放的光线分量被称为“缩放的逆光线分量”或“缩放的逆光线分量”,因为光线分量ρi(其中i∈{u,v,w})是通过将值除以Di来确定的。
在所述第二示例中,在步骤S310中,由光线重新缩放单元116使用将光线的未缩放的最小剔除距离tmin,unscaled乘以ADw的量值的结果来确定缩放的最小剔除距离tmin,scaled。例如,tmin,scaled可以被确定为tmin,scaled=ADwtmin,unscaled。如下文更详细地描述,在其它示例中,tmin,scaled可确定为tmin,scaled=ADwtmin,unscaled+B,其中B为标量值并且其中B≤0。
此外,在所述第二示例中,在步骤S310中,由光线重新缩放单元116使用将光线tmax,unscaled的未缩放的最大剔除距离乘以ADw的量值的结果来确定缩放的最大剔除距离tmax,scaled。例如,tmax,scaled可以被确定为tmax,scaled=ADwtmax,unscaled。如下文更详细地描述,在其它示例中,tmax,scaled可确定为tmax,scaled=ADwtmax,unscaled+C,其中C为标量值并且其中C≥0。
图6示出了在第二示例中在步骤S312期间由框相交测试单元112执行的步骤。在步骤S602中,框相交测试单元112使用缩放的逆光线分量来确定到定义框的平面的缩放的相交距离。特别地,步骤S602包括:
-通过将bmin,u和ρu相乘来确定到针对u维度的前向平面的缩放的相交距离τu,min,例如τu,min=ρubmin,u;
-通过将bmax,u和ρu相乘来确定到针对u维度的后向平面的缩放的相交距离τu,max,例如τu,max=ρubmax,u;
-通过将bmin,v和ρv相乘来确定到针对v维度的前向平面的缩放的相交距离τv,min,例如τv,min=ρvbmin,v;
-通过将bmax,v和ρv相乘来确定到针对v维度的后向平面的缩放的相交距离τv,max,例如τv,max=ρvbmax,v;
-确定到针对w维度的前向平面的缩放的相交距离τw,min,使得τw,min=bmin,wρw;以及
-确定到针对w维度的后向平面的缩放的相交距离τw,max,使得τw,max=bmax,wρw。
注意并且在一些示例中A=1,使得ρw=1。在这些示例中,τw,min=bmin,w和τw,max=bmax,w,使得在步骤S602中不需要执行计算来确定τw,min和τw,max。为了给出一些其它示例,A可以是二的幂(例如,2、4、8、16等)或较低精度浮点值,其乘积可以以低成本评估。
还应注意,步骤S602中的缩放的相交距离的确定涉及乘法运算,而不是除法运算。如上所述,乘法运算在硬件中实现比除法运算简单得多,因此可以用较小的硅面积、降低的功耗和/或降低的等待时间来实现。使用缩放的逆光线分量允许步骤S602用乘法运算而不是除法运算来执行。此外,注意,可以以这种格式提供缩放的逆光线分量,或者可以针对光线确定一次缩放的逆光线分量,然后多次用于涉及光线的相交测试。具体地,光线的缩放的逆光线分量、缩放的最小剔除距离和缩放的最大剔除距离可用于确定光线是否与光线跟踪系统中的多个轴对齐框相交。这样,尽管确定缩放的逆光线分量涉及除法运算,但是执行所述除法运算的成本分摊在许多相交测试上,其中对于涉及光线的每个相交测试,由于使用缩放的逆光线分量,所述过程更简单。作为示例,光线可能涉及数百或数千个相交测试。
对于在所述示例中的缩放的逆光线分量,ρu和/或ρv可以是-∞或+∞。对于框分量来说可能是零。因此,确定缩放的相交距离τ为0乘以±∞,这是不确定的。如果bi=0和ρi=±∞(其中i是u或v),这意味着光线位于bi平面中。处理这种情况的一种方式是对于前向平面将τu=0*∞设置为-∞,并且对于后向平面将τu=0*∞设置为+∞。这将确保所述平面被排除(即,它不被标识为框的在沿着光线的最远位置与光线相交的前向平面,并且它不被标识为框的在沿着光线的最远位置与光线相交的后向平面)。
在步骤S604中,框相交测试单元112标识所确定的缩放的相交距离中的到框的前向平面的最大(或“最大”)的相交距离,从而标识框的前向平面,所述前向平面在沿着光线的最远位置与光线相交(当沿着光线的方向从-∞看时)。这是通过找到τu,min,τv,min和τw,min的最大值来完成的。注意,τu,min,τv,min和τw,min中的一个或多个可以是负的,并且在这种情形下,通过比较τu,min,τv,min和τw,min的有符号值以找到这三个有符号值的最大值(而不是比较它们的量值)来确定所确定的到框的前向平面的缩放的相交距离的最大值。用于找到三个数中最大值的方法是本领域已知的。到框的前向平面的缩放的相交距离中的所标识的(最大的)相交距离被表示为τ-,并且可以表示从光线原点到光线进入框的点的缩放的相交距离。
在步骤S606中,框相交测试单元112标识所确定的与框的后向平面的缩放的相交距离中的最小值,从而标识框的后向平面,所述后向平面在沿着光线的最近位置与光线相交(当沿着光线的方向从-∞看时)。这是通过找到τu,max,τv,max和τw,max的最小值来完成的。注意,τu,max,τv,max和τw,max中的一个或多个可以是负的,并且在这种情形下,通过比较τu,max,τv,max和τw,max的有符号值以找到这三个有符号值的最小值(而不是比较它们的量值)来确定所确定的到框的后向平面的缩放的相交距离的最大值。用于找到三个数中最小值的方法是本领域已知的。到框的后向平面的缩放的相交距离中的所标识的(最小的)相交距离被表示为τ+,并且可以表示从光线原点到光线退出框的点的缩放的相交距离。
步骤S604和S606可以如图6所示并行执行。或者,它们可以连续进行。
在步骤S314中,框相交测试单元112确定所标识的到框的前向平面的最大缩放的相交距离(τ-)是否不大于所标识的到框的后向平面的最小缩放的相交距离(τ+),即,其确定是否τ-≤τ+。这是一种简单的比较,其不涉及进一步的计算,例如,没有乘法、加法、减法或除法运算。以这种方式,步骤S314确定光线是否与所标识的前向平面相交,而不是在光线与所标识的后向平面相交的位置之外沿着光线(当沿着光线的方向从-∞看时)不再进一步相交。再次注意,τ-和τ+中的一个或多个可能是负的,并且在这种情形下,τ-和τ+的比较涉及比较τ-和τ+的有符号值(而不是比较它们的量值)。
在步骤S316中,框相交测试单元112确定所标识的到框的后向平面的最小缩放的相交距离(τ+)是否不小于缩放的最小剔除距离tmin,scaled,即,其确定是否τ+≥tmin,scaled。这是一种简单的比较,其不涉及进一步的计算,例如,没有乘法、加法、减法或除法运算。以这种方式,步骤S316确定光线是否在至少与最小剔除距离一样远的位置处(当沿着光线的方向从-∞看时)与所标识的后向平面相交。注意,τ+和tmin,scaled中的一个或多个可能是负的,并且在这种情形下,τ+和tmin,scaled的比较涉及比较τ+和tmin,scaled的有符号值(而不是比较它们的量值)。
在步骤S318中,框相交测试单元112确定所标识的到框的前向平面的最大缩放的相交距离(τ-)是否不大于缩放的最大剔除距离tmax,scaled,即,其确定是否τ-≤tmax,scaled。这是一种简单的比较,其不涉及进一步的计算,例如,没有乘法、加法、减法或除法运算。以这种方式,步骤S318确定光线是否在沿着光线(当从∞沿着光线的方向看时)不远于最大剔除距离的位置处与所标识的面朝前的平面相交。注意,τ-和tmax,scaled中的一个或多个可能是负的,并且在这种情形下,τ-和tmax,scaled的比较涉及比较τ-和tmax,scaled的有符号值(而不是比较它们的量值)。
如上所述,在步骤S320中,确定是否满足步骤S314、S316和S318中的所有三个确定,并且如果是,则方法转到步骤S322,其中框相交测试单元112确定光线与框相交;而如果不满足步骤S314、S316和S318中的确定中的一个或多个,则所述方法从步骤S320转到步骤S324,其中框相交测试单元112确定光线不与框相交,即它确定光线未命中框。因此,在所述示例中,如果以下:(i)τ-≤τ+,(ii)τ+≥tmin,scaled和(iii)τ-≤tmax,scaled全部满足,则确定光线与框相交;否则,确定光线未命中框。
如上所述,在图3b所示的示例中,步骤S314、S316和S318并行执行,但是在其他示例中,它们可以顺序执行。同样如上所述,在步骤S322或S324之后,在步骤S324中,相交测试模块108输出确定光线是否与轴对齐框相交的结果的指示,并且在步骤S328中,所输出的指示被用在光线跟踪系统中以用于渲染3D场景的图像。
如上所述,使用缩放的逆光线分量、缩放的最小剔除距离和缩放的最大剔除距离简化了由框相交测试单元112执行的计算。特别地,执行除法运算以用于在光线重新缩放单元116中确定缩放的逆光线分量,以确定缩放的逆光线分量,其然后可以由框相交测试单元112(以及由三角形相交测试单元114)多次使用,其中缩放的逆光线分量可以简单地乘以平面的框分量以确定到平面的缩放的相交距离。缩放的逆光线分量、缩放的最小剔除距离和缩放的最大剔除距离可以被确定一次,然后用于多次相交测试。换句话说,光线的缩放的逆光线分量、缩放的最小剔除距离和缩放的最大剔除距离可用于确定光线是否与光线跟踪系统中的多个轴对齐框(和/或多个三角形)相交。为了在已经确定了光线的缩放的逆光线分量、缩放的最小剔除距离和缩放的最大剔除距离时进行这种运算,可以将它们存储在例如相交测试模块108上的存储器中,使得它们可以被框相交测试单元112和三角形相交测试单元114读取和使用多次,而无需重新计算它们。还应注意,尽管确定了到框的平面的缩放的相交距离,但是可以在不计算到框的任何平面的未按比例绘制的相交距离的情况下执行所述方法。
如上所述,在一些示例中,早期排除测试(步骤S311)可以在步骤S310和S312之间执行。早期排除测试可以能够确定光线未命中框,而不需要执行步骤S312到S322的运算。特别地,早期排除测试使用tmin,scaled和tmax,scaled的符号以及bmin,u,bmin,v,bmin,w,bmax,i,bmax,v和bmax,w的符号来确定光线是否未命中框。
图7示出了三条光线702、704和706,以及五个轴对齐框710、712、714、716和718。图7示出了在步骤S304的平移之后以及在步骤S306中的轴的选择性置换和/或选择性反转之后的光线和框。因此,光线的原点都在坐标系的原点,并且光线方向向量的分量都是正的。为了简化说明,图7是二维(2D)图示,仅示出u和v轴,但是应当理解,参考图7描述的相同原理可以应用于3D系统。
如果最小剔除距离和最大剔除距离都是非负的(即,如果tmin,scaled≥0和tmax,scaled≥0),则步骤S311的早期排除测试可涉及确定是否bmax,u≥0,bmax,v≥0和bmax,w≥0。注意,如果值(例如tmin,scaled或tmax,scaled)大于零或者如果它等于零,则所述值是非负的。零的浮点值可以具有正或负符号位,使得+0和-0可以以浮点格式表示。如下文更详细地描述,零值可由非常小但非零值替代,使得零不需要作为特殊情况来处置。如果tmin,scaled和tmax,scaled不等于零,则可以简单地通过检查tmin,scaled和tmax,scaled的符号位来确定tmin,scaled≥0和tmax,scaled≥0是否可以被执行。如果对于光线来说,最小剔除距离和最大剔除距离都是正的,则光线仅有效地存在于坐标系的全正八分区中。在这种情形下,如果bmax,u≥0,bmax,v≥0和bmax,w≥0是与坐标系的全正八分区至少部分重叠的框,则在步骤S311中不排除相交测试,并且所述方法进行到如上所述的步骤S312。然而,如果bmax,u<0,bmax,v<0和bmax,w<0中的一个或多个不存在于坐标系的全正八分区中,则可以确定光线未命中所述框而无需执行步骤S312到S322,并且所述方法从步骤S311转到步骤S324。在图7所示的2D示例中,光线702的最小剔除距离和最大剔除距离都是正的。这意味着光线702仅有效地存在于u,v坐标系的正象限内。框710、712和714都具有bmax,u≥0和bmax,v≥0,因此它们都至少部分地与正象限重叠,因此早期排除测试不能确定光线702是与框710、712还是714相交还是未命中,并且在这些情况下所述方法将从步骤S311转到步骤S312。然而,框716具有bmax,u<0,这意味着框716不与u,v坐标系的正象限重叠(因为框716内的所有位置都具有负u分量),因此可以在步骤S311中确定光线702不与框716相交,并且在这种情形下所述方法将从步骤S311转到步骤S324。类似地,框718具有bmax,v<0,这意味着框718不与u,v坐标系的正象限重叠(因为框718内的所有位置都具有负v分量),因此可以在步骤S311中确定光线702不与框718相交,并且在这种情形下所述方法将从步骤S311转到步骤S324。
如果最小剔除距离和最大剔除距离都是非正的(即,如果tmin,scaled≤0和tmax,scaled≤0),则步骤S311的早期排除测试可涉及确定是否bmin,u≤0,bmin,v≤0和bmin,w≤0。注意,如果值(例如tmin,scaled或tmax,scaled)小于零或者如果它等于零,则所述值是非正的。如果零值被非常小但非零值所替代,如下所述,则不需要将零作为特殊情况来处理。此外,如果tmin,scaled和tmax,scaled不等于零,则可以简单地通过检查tmin,scaled和tmax,scaled的符号位来确定tmin,scaled≤0和tmax,scaled≤0是否可以被执行。如果对于光线,最小剔除距离和最大剔除距离都是负的,则光线仅有效地存在于坐标系的全负八分区中。在这种情形下,如果bmin,u≤0,bmin,v≤0和bmin,w≤0是与坐标系的全负八分区至少部分重叠的框,则在步骤S311中不排除相交测试,并且所述方法进行到如上所述的步骤S312。然而,如果bmin,u>0,bmin,v>0和bmin,w>0中的一个或多个不存在于坐标系的全负八分区中,则可以确定光线未命中所述框而无需执行步骤S312到S322,并且所述方法从步骤S311转到步骤S324。在图7所示的2D示例中,光线706的最小剔除距离和最大剔除距离都是负的。这意味着光线706仅有效地存在于u,v坐标系的负象限内。框714和716都具有bmin,u≤0和bmin,v≤0,因此它们都至少部分地与负象限重叠,因此早期排除测试不能确定光线706是否与框714或716相交或未命中,并且在这些情况下所述方法将从步骤S311转到步骤S312。然而,框710具有bmin,u>0和bmin,v>0,这意味着框710不与u,v坐标系的负象限重叠(因为框710内的所有位置都具有正u和v分量),因此可以在步骤S311中确定光线706不与框710相交,并且在这种情形下所述方法将从步骤S311转到步骤S324。类似地,框712具有bmin,v>0,这意味着框712不与u,v坐标系的负象限重叠(因为框712内的所有位置都具有正v分量),因此可以在步骤S311中确定光线706不与框712相交,并且在这种情形下所述方法将从步骤S311转到步骤S324。类似地,框718具有bmin,u>0,这意味着框718不与u,v坐标系的负象限重叠(因为框718内的所有位置都具有正u分量),因此可以在步骤S311中确定光线706不与框718相交,并且在这种情形下所述方法将从步骤S311转到步骤S324。
如果最小剔除距离为非正,并且最大剔除距离为非负(即,如果tmin,scaled≤0和tmax,scaled≥0),则步骤S311的早期排除测试可以包括确定以下是否满足下列中的任一项:(i)bmin,u≤0,bmin,v≤0和bmin,w≤0,或(ii)bmax,u≥0,bmax,v≥0和bmax,w≥0。如果对于光线,最小剔除距离为负,最大剔除距离为正,则光线有效地存在于坐标系的全负八分区和全正八分区中。在这种情形下,如果bmax,u≥0,bmax,v≥0和bmax,w≥0是与坐标系的全正八分区至少部分重叠的框,则在步骤S311中不排除相交测试,并且所述方法进行到如上所述的步骤S312。此外,在这种情形下,如果bmin,u≤0,bmin,v≤0和bmin,w≤0是与坐标系的全负八分区至少部分重叠的框,则在步骤S311中不排除相交测试,并且所述方法进行到如上所述的步骤S312。然而,如果情况不是下列中的任一项:(i)bmin,u≤0,bmin,v≤0和bmin,w≤0,或(ii)bmax,u≥0,bmax,v≥0和bmax,w≥0,则所述框不存在于坐标系的全负八分区中或全正八分区中,因此可以确定光线未命中所述框而无需执行步骤S312到S322,并且所述方法从步骤S311转到步骤S324。在图7所示的2D示例中,光线704的最小剔除距离为负,光线704的最大剔除距离为正。这意味着光线704仅有效地存在于u,v坐标系的负象限和正象限内。框710、712和714都具有bmax,u≥0和bmax,v≥0,因此它们都至少部分地与正象限重叠,因此早期排除测试不能确定光线704是与框710、712还是714相交还是未命中,并且在这些情况下所述方法将从步骤S311转到步骤S312。此外,框716具有bmin,u≤0和bmin,v≤0,因此它至少部分地与负象限重叠,因此早期排除测试不能确定光线704是否与框716相交或未命中,并且在这些情况下所述方法将从步骤S311转到步骤S312。然而,框718具有bmax,v<0和bmin,u>0,这意味着框718不与u,v坐标系的正象限或负象限重叠(因为框718内的所有位置都具有正u分量和负v分量),因此可以在步骤S311中确定光线704不与框718相交,并且在这种情形下所述方法将从步骤S311转到步骤S324。
如果最小剔除距离为正,最大剔除距离为负(即,如果tmin,scaled>0和tmax,scaled<0),则光线在任何地方都不能有效地存在,因此步骤S311的早期排除测试确定光线在这种情形下未命中框(任何框)。换句话说,在这种情形下,可以确定光线未命中框而无需执行步骤S312到S322,并且所述方法从步骤S311转到步骤S324。替代地,当第一次获得光线数据时(例如在步骤S302中)可以标识所述场景,使得光线被认为是无效的(因为所有的相交测试将自动失败)并且遍历终止。
上文描述了在光线跟踪系统中使用的方法,其不会将任何误差引入其计算中。然而,一些计算,例如使用浮点格式的数字执行的计算,可能会引入舍入误差。这在一定程度上是因为可以表示浮点数的精度因不同量值的数字而不同。顺序浮点数之间的‘步长’通常与浮点值的量值大致成比例(有一些例外,例如在零附近)。在一些示例中,相交测试模块108的相交测试模块被配置为在测试AABB与光线的相交时保守地运算。为了确保所述方法相对于在光线与框的相交测试期间可引入的舍入误差是保守的,相交测试模块108(例如,框相交测试单元112或实例变换单元118)可以进行以下中的一项或两项:(i)扩展框的有效量值(例如,作为步骤S304的一部分),以及(ii)实现“有损比较”,其允许比较中的一些容差。通过使用这些技术中的一者或两者确保BOX测试是保守的,可以实现低精度乘法器(与更高精度乘法器相比,其可以具有减小的硅面积、减小的延迟和/或减小的功耗)而不引起渲染误差。
此外,如上所述,光线跟踪系统(具体地,三角形相交测试单元114)被配置为执行光线相对于由所述分层加速结构的叶节点所界定的几何形状的多边形相交测试过程,所述光线被确定为要与所述几何形状相交。多边形相交测试过程确定光线是否与定义几何形状的一个或多个多边形相交。在一些示例中,相交测试模块可以包括一个或多个过程测试器单元,用于执行光线相对于过程图元的相交测试。框被扩展的量可以考虑在框相交测试过程和多边形相交测试过程(以及过程图元测试过程(如果有的话))期间可引入的任何误差。特别地,可以扩展框的有效尺寸以确保整个光线跟踪方法相对于在光线与框的相交测试期间可引入的舍入误差以及相对于在多边形相交测试过程中可引入的舍入误差(以及相对于在过程图元相交测试过程(如果有的话)中可引入的舍入误差)是保守的。
例如,定义框的前向平面的位置的分量(bmin,u,bmin,v和bmin,w)可以朝向负无穷大移动一个小量,并且定义框的后向平面的位置的分量(bmax,u,bmax,v和bmax,w)可以朝向正无穷大移动一个小量。这将增加框的尺寸,使得光线更可能与框相交。框平面的位置的移动量取决于可能在框相交测试单元112和三角形相交测试单元114(以及过程测试器单元(如果有的话))中引入的可能的舍入误差的量值。特别地,框的量值被充分扩展,使得如果光线将被确定(通过三角形相交测试单元114)与三角形相交,则将明确地发现其与界定所述三角形的框相交(通过框相交测试单元112)。这可以避免由于舍入误差引起的一些渲染误差。然而,超过这一点,不会不必要地扩展框的量值,因为扩展框将增加所执行的相交测试的数目。由于箱膨胀而导致的要执行的测试的数量的少量增加(例如,将测试的数量增加大约1%)而导致的效率的少量损失是可接受的。所述框扩展避免了如果确定光线未命中框,即使已经发现光线在由所述框界定的对象上相交,也会发生的渲染误差。渲染误差通常是不可接受的。
如上所述,除了扩展框的尺寸之外,为了确保框相交测试是保守的,并且不会由于框相交测试过程和/或三角形相交测试过程(和/或过程图元测试过程(如果有))中的舍入误差而引入渲染误差,可以将比较作为有损比较来执行,从而将一些容差添加到被比较的值。例如,为了执行框相交测试,可以移动缩放的最小剔除距离和缩放的最大剔除距离,以增加光线的有效长度。在上述不考虑框相交测试过程的保守性的示例中,将缩放的最小剔除距离tmin,scaled确定为tmin,scaled=Dwtmin,unscaled,或者更一般地,确定为tmin,scaled=ADwtmin,unscaled,其中A是标量值。然而,当考虑框相交测试过程的保守性时,可将缩放的最小剔除距离tmin,scaled确定为tmin,scaled=Dwtmin,unscaled+B或更一般地确定为tmin,scaled=ADwtmin,unscaled+B,其中A和B是标量值(例如,标量常数),并且其中B≤0是标量。如果B=0,则这与上述非保守方法相同。在保守方法中,B<0,因此最小缩放剔除距离被减小,从而扩展光线的有效范围。
在上述不考虑框相交测试过程的保守性的示例中,将缩放的最大剔除距离tmax,scaled确定为tmax,scaled=Dwtmax,unscaled,或者更一般地,确定为tmax,scaled=ADwtmax,unscaled,其中A是标量值。然而,当考虑框相交测试过程的保守性时,可将缩放的最大剔除距离tmax,scaled确定为tmax,scaled=Dwtmax,unscaled+C或更一般地确定为tmax,scaled=ADwtmax,unscaled+C,其中A和C是标量值(例如,标量常数),并且其中C≥0是标量。如果C=0,则这与上述非保守方法相同。在保守方法中,C>0,因此最大缩放剔除距离增加,从而扩展光线的有效范围。
缩放的最小剔除距离和最大剔除距离的偏移量取决于可能在框相交测试单元112和三角形相交测试单元114(以及任何程序测试器单元,如果在相交测试模块108中存在的话)中引入的可能的舍入误差的量值。特别地,将缩放的最小剔除距离和最大剔除距离移动足够的距离,使得如果光线将被确定(通过三角形相交测试单元114)与三角形相交,则将明确地发现其与界定所述三角形的框相交(通过框相交测试单元112)。如上所述,这可以避免由于舍入误差而引起的一些渲染误差。然而,超过这一点,由于增大光线的有效范围将增加所执行的相交测试的数量,因此,缩放的最小剔除距离和最大剔除距离不会不必要地偏移。
在上述示例中,一些值可能是零和/或无穷大。在被配置为对浮点值执行计算的硬件中,零和无穷大的值必须被作为异常来对待,这通常是低效率实现的(例如,在硅面积、处理等待时间和/或功耗方面)。此外,零值和/或无穷大可能导致未定义的结果,例如,的值是未定义的,并且0乘以∞的值是未定义的,这可以被视为如上所述的特殊情况,否则它们可能导致在框相交测试和三角形相交测试过程中的误差。例如,如果计算(例如乘法)的结果未定义,则这在比较两个计算的结果时可能导致误差。
在上述示例中,框分量bmin,u,bmax,u,bmin,v,bmax,v,bmin,w或bmax,w中的任一者可以是零。在上述第一示例中,其中缩放的光线成分为和/>ρu和ρv的值可以是零。再次注意到,由于对轴的选择性置换|Dw|≥|Du|和|Dw|≥|Dv|,因此在该示例中0≤ρu≤1和0≤ρv≤1。因此,为了避免必须将零作为异常处理,并且为了避免零可引入的误差,如果bmin,u,bmax,u,bmin,v,bmax,v,bmin,w,bmax,w,ρu或ρv值中的任何值的量值为零,则所述值的量值可以被设置为等于非零的替代值,所述替代值足够小,使得在确定和比较两个叉乘值(例如,ρvbmin,u和ρubmin,v)的运算中,所述替代值将将表现得像零(例如,如步骤S502中)。非零替代值在表示bmin,u,bmax,u,bmin,v,bmax,v,bmin,w,bmax,w,ρu或ρv的值的格式中的可表示范围的值之外。例如,如果用浮点格式来表示这些值,则存在可以用所述浮点格式来表示的最小非零量值fL。还存在最大有限量值fU,其可以以所述浮点格式表示。小的非零替代值小于fL,并且例如可以小于/>使得在确定和比较(如步骤S502中)两个叉乘值(例如ρvbmin,u和ρubmin,v)的运算中,其表现为类似零,这意味着无论是否执行替代,比较结果对于任何有限输入集都是相同的。为了表示此小的非零替代值,可相对于输入浮点格式的指数范围扩展指数范围。扩展指数范围(即,增加用于表示值的指数的位的数目)可增加在硬件中运算的值的位宽度,但其可通过避免必须将零处理为异常来简化硬件,并且其可避免由未定义的结果引入的误差。在一些示例中,可以仅对框平面集合(bmin,u,bmax,u,bmin,v,bmax,v,bmin,w,bmax,w)或光线方向分量(ρu,ρv)中的一个进行替代,因为如果可以保证至少一个因素为非零,则例如ρv·bmin,u=0·0的特殊情况不会发生。在其他示例中,替代发生在两个集合中,但是用不同的值替代与光线方向分量相对的框平面,使得从计算中去除零,但是在框平面与光线方向分量之间保持优先顺序(例如使得无论|bmin,u|=0,(在替代之前),即使ρv=0(在替代之前),|bmin,u|<<ρv)。
在上述第二示例中,其中缩放的逆光线分量是和/> 其中A是非零且有限的,ρu和ρv的值可以是无穷大。再次注意到,由于对轴的选择性置换|Dw|≥|Du|和|Dw|≥|Dv|,因此在该示例中1≤ρu≤∞和1≤ρv≤∞。为了避免必须将零作为例外处理,并且为了避免零可引入的误差,如果bmin,u,bmax,u,bmin,v,bmax,v,bmin,w或bmax,w值中的任何值的量值是零,则所述值的量值可以被设置为等于非零替代值,所述非零替代值足够小,使得在确定和比较缩放的相交距离中的两个(例如,ρubmin,u和ρvbmin,v)的运算中,所述非零替代值将将表现得像零(例如,如在步骤S602、S604和S606中)。如上所述,非零替代值在表示k、k或k的值的格式中的可表示值范围之外,并且可以例如具有小于k的量值。类似地,为了避免必须将无限度作为例外来处理,并且为了避免无限度可引入的误差,如果ρu值或ρv值的量值是无穷大,则所述值的量值可以被设置为等于有限替代值,所述有限替代值足够大使得在确定和比较缩放的相交距离中的两个(例如,ρubmin,u和ρvbmin,v)的运算中其将表现得像无穷大(例如,如在步骤S602、S604和S606中)。有限替代值在表示bmin,u,bmax,u,bmin,v,bmax,v,bmin,w,bmax,w,ρu或ρv的值的格式中的可表示值范围之外,并且可以例如具有大于/>的量值,使得在确定和比较两个缩放的相交距离的运算中,它表现得像无穷大。为了表示小的非零替代值和大的有限替代值,可以相对于输入浮点格式的指数范围扩展指数范围。扩展指数范围(即,增加用于表示值的指数的位的数目)可以增加在硬件中运算的值的位宽度,但是它可以通过避免必须将零和无限作为异常处理来简化硬件,并且它可以避免由未定义的结果引入的误差。在一些示例中,可以仅对框平面集合(bmin,u,bmax,u,bmin,v,bmax,v,bmin,w,bmax,w)或光线方向分量(ρu,ρv)中的一个进行替代,因为如果可以保证至少一个因素为非零/非无限的,则不能出现例如ρu·bmin,u=∞·0的特殊情况。在其他示例中,对于两个集合发生替代,使得可以减少异常处理,但是以这样的方式以便维持框平面与光线方向分量之间的优先(例如,使得如果ρu=∞和bmin,u=0,则ρu·bmin,u=0(在替代之前))。
在一些示例中,顶层加速结构(TLAS)可用于表示世界空间坐标系中的场景。TLAS的节点对应于表示场景中的区域的框(例如,与世界空间坐标系的轴对齐的AABB)。可以定义(例如,表示物体的)一组几何形状,并且可以将所述一组几何形状的一个或多个示例插入场景内的相应位置中。在实例空间坐标系中定义所述一组几何形状,并且利用对应于表示实例空间中的区域的框(例如,与实例空间坐标系的轴对齐的AABB)的节点创建底层加速结构(BLAS)。TLAS的一个或多个节点可以参考BLAS的节点。光线首先横穿TLAS的节点,其中如果发现光线与参考BLAS的节点的节点相交,则可以测试光线与对应于BLAS的节点的框的相交。相交测试模块108(例如,示例变换单元118)可以将光线变换到实例空间坐标系中,以便测试与对应于BLAS的节点的框的相交。本文所描述的框可以对应于TLAS的节点(即,框可以是世界空间中的轴对齐框),或者本文所描述的框可以对应于BLAS的节点(即,框可以是实例空间中的轴对齐框)。
图8示出了可以在其中实施本文所描述的光线跟踪系统的计算机系统。计算机系统包括CPU 802、GPU 804、存储器806和其他装置814,诸如显示器816、扬声器818和相机822。光线跟踪单元810(对应于光线跟踪单元102)在GPU 804以及神经网络加速器(NNA)811上实施。在其他示例中,光线跟踪单元810可以在CPU 802上或在NNA 811内实施,或作为计算机系统中的单独处理单元实施。计算机系统的部件可通过通信总线820彼此通信。存储装置812(对应于存储器104)被实施为存储器806的一部分。
图1的光线跟踪系统示出为包括数个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应理解,本文中描述为由光线跟踪系统形成的中间值不需要由光线跟踪系统在任何时间点物理地生成,并且可以只表示方便描述由光线跟踪系统在其输入与输出之间执行的处理的逻辑值。
光线跟踪单元,并且具体地说本文所描述的相交测试模块,可以在集成电路上以硬件体现。本文所描述的相交测试模块可以被配置成执行本文所描述的任一种方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或它们的任何组合中实施。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实施方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序码当在处理器上执行时执行指定任务。本文中描述的算法和方法可以由执行码的一个或多个处理器执行,该码使处理器执行算法/方法。计算机可读存储介质的示例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并且可以由机器存取的其他存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、或OpenCL等编程语言码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由该代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或它们的集合或一部分,它具有处理能力使得可以执行指令。处理器可以是或包括任何种类的通用或专用处理器,诸如CPU、GPU、NNA、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
本发明还意图涵盖定义如本文中描述的硬件的配置的软件,诸如HDL(硬件描述语言)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,所述集成电路定义数据集当在集成电路制造系统中处理(即,运行)时,将所述系统配置成制造被配置为执行本文所描述的任一种方法的相交测试模块,或者制造包括本文所描述的任何设备的相交测试模块。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统处制造如本文所描述的相交测试模块的方法。此外,可以提供一种集成电路定义数据集,当在集成电路制造系统中被处理时,所述集成电路定义数据集使制造相交测试模块的方法得以执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机系统上处理,所述计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,所述软件环境包括电路元件的定义和用于组合这些元件以便生成由所述表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将关于图9描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置成制造相交测试模块的示例。
图9示出了集成电路(IC)制造系统902的示例,其被配置为制造如本文的任何示例中描述的相交测试模块。特别地,IC制造系统902包括布局处理系统904和集成电路生成系统906。IC制造系统902被配置为接收IC定义数据集(例如,定义如本文的任何示例中描述的相交测试模块),处理IC定义数据集,并根据IC定义数据集生成IC(例如,其体现如本文的任何示例中描述的相交测试模块)。IC定义数据集的处理将IC制造系统902配置成制造体现如本文的任何示例中描述的相交测试模块的集成电路。
布局处理系统904被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定待生成的电路的门级表示,例如就逻辑部件(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统904已经确定电路布局时,其可将电路布局定义输出到IC生成系统906。电路布局定义可以是例如电路布局描述。
如本领域中已知的,IC生成系统906根据电路布局定义来生成IC。例如,IC生成系统906可实施生成IC的半导体装置制造工艺,该半导体装置制造工艺可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,掩模可在光刻工艺中用于根据电路定义来生成IC。替代地,提供给IC生成系统906的电路布局定义可呈计算机可读代码的形式,IC生成系统906可使用该计算机可读代码来形成用于生成IC的合适的掩模。
由IC制造系统902执行的不同过程可全部在一个位置例如由一方来实施。替代地,IC制造系统902可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同方来执行。例如,以下阶段中的一些可以在不同位置以及/或者由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成待生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
在其他示例中,在集成电路制造系统处对集成电路定义数据集进行处理可以将系统配置成制造相交测试模块,而不用对IC定义数据集进行处理以便确定电路布局。例如,集成电路定义数据集可以定义可重新配置的处理器诸如FPGA的配置,并且对该数据集的处理可以将IC制造系统配置为(例如,通过将配置数据加载到FPGA)生成具有该定义的配置的可重新配置的处理器。
在一些实施例中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,由集成电路制造定义数据集以上文参考图9所描述的方式对集成电路制造系统进行的配置可以制造如本文中描述的装置。
在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图9所示的示例中,IC生成系统可以由集成电路定义数据集进一步配置为在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实施方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实施的方法中)的实施方式可以提高性能。性能改进可以包含计算性能提高、延迟减少、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如,在集成电路中)期间,可以在性能改进与物理实施方式之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实施方式的改进(诸如硅面积减小)的概念可以针对性能提高进行折中。例如,这可以通过在预定义面积预算内制造模块的多个示例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
Claims (21)
1.一种在光线跟踪系统中确定光线是否与三维轴对齐框相交的方法,其中所述框表示由所述三维轴对齐框的每个维度的前向平面和后向平面定义的体积,所述方法包括:
确定缩放的逆光线分量ρu和ρv,其中和/>其中第三缩放的逆光线分量/>其中Du,Dv和Dw是所述光线的光线方向向量D的分量,其中Dw是所述光线方向向量的主分量,使得|Dw|≥|Du|且|Dw|≥|Dv|,并且其中A是标量值;
使用将所述光线的未缩放的最小剔除距离tmin,unscaled乘以ADw的量值的结果来确定缩放的最小剔除距离tmin,scaled;
使用将所述光线的未缩放的最大剔除距离tmax,unscaled乘以ADw的量值的结果来确定缩放的最大剔除距离tmax,scaled;
使用所述缩放的逆光线分量来确定到定义所述框的所述平面的缩放的相交距离;
标识所确定的到所述框的前向平面的所述缩放的相交距离中的最大距离;
标识所确定的到所述框的后向平面的所述缩放的相交距离中的最小距离;
确定是否:
(i)所标识的到所述框的前向平面的最大缩放的相交距离不大于所标识的到所述框的后向平面的最小缩放的相交距离;
(ii)所标识的到所述框的前向平面的最大缩放的相交距离不大于所述缩放的最大剔除距离tmax,scaled;并且
(iii)所标识的到所述框的后向平面的最小缩放的相交距离不小于所述缩放的最小剔除距离tmin,scaled;以及
如果满足三个确定(i)至(iii)中的全部,则确定所述光线与所述框相交,并且如果不满足所述三个确定(i)至(iii)中的一个或多个,则确定所述光线未命中所述框。
2.根据权利要求1所述的方法,其中A=1。
3.根据权利要求1或2所述的方法,所述框表示由针对所述三维轴对齐框的维度u,v和w中的每一个维度的前向平面和后向平面所定义的体积,其中bmin,u是针对u维度的所述前向平面的恒定u分量值,bmax,u是针对u维度的所述后向平面的恒定u分量值,所述bmin,v是针对v维度的所述前向平面的恒定v分量值,bmax,v是针对v维度的所述后向平面的恒定v分量值,bmin,w是针对w维度的所述前向平面的恒定w分量值,并且bmax,w是针对w维度的所述后向平面的恒定w分量值,
其中所述使用所述缩放的逆光线分量确定到定义所述框的所述平面的缩放的相交距离包括:
通过将bmin,u和ρu相乘来确定到针对u维度的所述前向平面的缩放的相交距离τu,min;
通过将bmax,u和ρu相乘来确定到针对u维度的所述后向平面的缩放的相交距离τu,max;
通过将bmix,v和ρv相乘来确定到针对v维度的所述前向平面的缩放的相交距离τv,mmin;
通过将bmax,v和ρv相乘来确定到针对v维度的所述后向平面的缩放的相交距离τv,max;
确定到针对w维度的所述前向平面的缩放的相交距离τw,min,使得τw,min=bmin,wρw;
确定到针对w维度的所述后向平面的缩放的相交距离τw,max,使得τw,max=bmax,wρw。
4.根据权利要求3所述的方法,还包括:
如果bmmin,u,bmax,u,bmin,v,bmax,v,bmin,w或bmax,w值中的任一者的量值为零,则将所述值的所述量值设置为等于非零的替代值,所述非零的替代值是小的,使得确定和比较所述缩放的相交距离中的两个缩放的相交距离的运算,针对所述非零的替代值给出与所述值为零相同的结果;以及
如果ρu值或ρv值的量值为无穷大,则将所述值的所述量值设置为等于有限替代值,所述有限替代值是大的,使得确定和比较所述缩放的相交距离中的两个缩放的相交距离的运算,针对所述有限替代值给出与所述值为无穷大相同的结果。
5.根据权利要求3所述的方法,还包括:从定义所述框的所述前向平面和所述后向平面的位置的相应分量中减去所述光线的原点的相应分量,从而确定bmin,u,bmax,u,bmin,v,bmax,v,bmin,w和bmax,w的值。
6.根据权利要求1所述的方法,其中所述光线方向向量利用空间坐标系中的分量Dx,Dy和Dz来定义,并且其中所述方法还包括选择性地置换所述光线的x、y和z分量以及选择性地置换所述框的x、y和z分量,以确定所述空间坐标系的x、y和z分量如何映射到u、v和w维度上,从而确保Dw是所述光线方向向量的所述主分量,使得|Dw|≥|Du|和|Dw|≥|Dv|。
7.根据权利要求3所述的方法,还包括:选择性地反转所述光线的x、y和z分量的轴和所述轴对齐框的x、y和z分量,使得Du≥0,Dv≥0和Dw≥0。
8.根据权利要求7所述的方法,还包括:
如果tmin,scaled≥0和tmax,scaled≥0,则确定是否bmax,u≥0,bmax,v≥0和bmax,w≥0,其中所述确定到定义所述框的所述平面的缩放的相交距离是响应于确定bmax,u≥0,bmax,v≥0和bmax,w≥0而执行,其中如果bmax,u,bmax,v和bmax,w中的任一者都大于零,则确定所述光线未命中所述框,而无需确定到定义所述框的所述平面的缩放的相交距离;
如果tmin,scaled≤0和tmax,scaled≤0,则确定是否为bmin,u≤0,bmin,v≤0和bmin,w≤0,其中所述确定到定义所述框的所述平面的缩放的相交距离是响应于确定bmin,u≤0,bmin,v≤0和bmin,w≤0而执行,其中如果bmin,u,bmin,v和bmin,w中的任一者都小于零,则确定所述光线未命中所述框,而无需确定到定义所述框的所述平面的缩放的相交距离;
如果tmin,scaled≤0和tmax,scaled≥0,则确定是否满足下列中的任一项:(i)bmin,u≤0,bmin,v≤0和bmin,w≤0,或(ii)bmax,u≥0,bmax,v≥0和bmax,w≥0,其中所述确定到定义所述框的所述平面的缩放的相交距离是响应于确定以下中的任一项而执行:(i)bmin,u≤0,bmin,v≤0和bmin,w≤0,或(ii)bmax,u≥0,bmax,v≥0和bmax,w≥0,其中如果以下两者都满足:(i)bmin,u,bmin,v和bmin,w中的任一者都大于零,以及(ii)bmax,v,bmax,v和bmax,w的任一者都小于零,则确定所述光线未命中所述框,而无需确定到定义所述框的所述平面的缩放的相交距离;和/或
如果tmin,scaled≥0和tmax,scaled≤0,则确定所述光线未命中所述框,而无需确定到定义所述框的所述平面的缩放的相交距离。
9.根据权利要求1所述的方法,其中使用所述光线的所确定的缩放的逆光线分量、所确定的缩放的最小剔除距离和所确定的缩放的最大剔除距离来确定所述光线是否与所述光线跟踪系统中的多个轴对齐框相交。
10.根据权利要求1所述的方法,其中在不计算到所述框的所述平面中的任一平面的未缩放的相交距离的情况下执行所述方法。
11.根据权利要求1所述的方法,其中并行地执行所述三个确定(i)至(iii)。
12.根据权利要求1所述的方法,还包括:输出所述光线是否与所述轴对齐框的确定的结果的指示,其中输出的指示在所述光线跟踪系统中用于渲染3D场景的图像。
13.根据权利要求1所述的方法,其中所述轴对齐框是界定要被渲染的几何形状的轴对齐边界框,并且其中所述轴对齐框对应于待用于在所述光线跟踪系统中执行相交测试的分层加速结构的节点。
14.根据权利要求13所述的方法,其中所述节点是用于表示实例空间中的几何形状的底层加速结构的一部分,并且其中所述方法包括将所述光线变换到所述实例空间中。
15.根据权利要求13或14所述的方法,其中所述光线跟踪系统被配置为执行所述光线相对于由所述分层加速结构的叶节点所界定的几何形状的多边形相交测试过程,所述光线被确定为要与所述几何形状相交,其中多边形相交测试过程确定所述光线是否与定义所述几何形状的一个或多个多边形相交。
16.根据权利要求1所述的方法,还包括:扩展所述框的有效尺寸,以确保由在所述光线与所述框的相交测试期间执行的运算导致的舍入误差不能提供假负相交测试结果。
17.根据权利要求15所述的方法,还包括:扩展所述框的有效尺寸,以确保由在所述光线与所述框的相交测试期间执行的运算导致的舍入误差以及由在所述多边形相交测试过程中执行的运算导致的舍入误差不能提供假负相交测试结果。
18.根据权利要求1所述的方法,其中所述缩放的最小剔除距离tmin,scaled被确定为tmin,scaled=ADwtmin,unscaled+B,其中B是标量值,并且其中B≤0;并且
其中所述缩放的最大剔除距离tmax,scaled被确定为tmax,scaled=ADwtmax,unscaled+C,其中C是标量值,并且其中C≥0。
19.根据权利要求18所述的方法,其中B<0和C>0。
20.一种在光线跟踪系统中使用的相交测试装置,其被配置成确定光线是否与三维轴对齐框相交,其中所述框表示由所述三维轴对齐框的每个维度的前向平面和后向平面定义的体积,所述相交测试装置包括:
确定缩放的逆光线分量ρu和ρv的装置,其中和/>其中第三缩放的逆光线分量/>其中Du,Dv和Dw是所述光线的光线方向向量D的分量,其中Dw是所述光线方向向量的主分量,使得|Dw|≥|Du|和|Dw|≥|Dv|,并且其中A是标量值;
使用将所述光线的未缩放的最小剔除距离tmin,unscaled乘以ADw的量值的结果来确定缩放的最小剔除距离tmin,scaled的装置;
使用将所述光线的未缩放的最大剔除距离tmax,unscaled乘以ADw的量值的结果来确定缩放的最大剔除距离tmax,scaled的装置;
使用所述缩放的逆光线分量来确定到定义所述框的所述平面的缩放的相交距离的装置;
标识所确定的到所述框的前向平面的缩放的相交距离中的最大距离的装置;
标识所确定的到所述框的后向平面的缩放的相交距离中的最小距离的装置;
执行以下操作的装置:确定是否:
(i)所标识的到所述框的前向平面的最大缩放的相交距离不大于所标识的到所述框的后向平面的最小缩放的相交距离;
(ii)所标识的到所述框的前向平面的最大缩放的相交距离不大于所述缩放的最大剔除距离tmax,scaled;以及
(iii)所标识的到所述框的后向平面的最小缩放的相交距离不小于所述缩放的最小剔除距离tmin,scaled;以及
如果满足三个确定(i)至(iii)中的全部,则确定所述光线与所述框相交,并且如果不满足所述三个确定(i)至(iii)中的一个或多个,则确定所述光线未命中所述框的装置。
21.一种计算机可读介质,在所述计算机可读介质上存储有计算机可读代码,所述计算机可读代码被配置为在所述计算机可读代码运行时使根据权利要求1至19中任一项所述的方法得以执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2104066.2 | 2021-03-23 | ||
GB2104066.2A GB2599188B (en) | 2021-03-23 | 2021-03-23 | Intersection testing in a ray tracing system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115115761A CN115115761A (zh) | 2022-09-27 |
CN115115761B true CN115115761B (zh) | 2023-10-17 |
Family
ID=75689983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210268319.7A Active CN115115761B (zh) | 2021-03-23 | 2022-03-18 | 确定光线是否与三维轴对齐框相交的方法、装置和介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11615577B2 (zh) |
EP (1) | EP4064204A1 (zh) |
CN (1) | CN115115761B (zh) |
GB (1) | GB2599188B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192309A (zh) * | 2006-11-28 | 2008-06-04 | 国际商业机器公司 | 进行光线跟踪的方法和系统 |
CN101527052A (zh) * | 2008-03-03 | 2009-09-09 | 英特尔公司 | 用于提高光线跟踪性能的技术 |
CN102855655A (zh) * | 2012-08-03 | 2013-01-02 | 吉林禹硕动漫游戏科技股份有限公司 | Gpu并行光线追踪渲染方法 |
CN102947865A (zh) * | 2010-04-29 | 2013-02-27 | 柯斯提克绘图公司 | 用于光线跟踪中的图元相交的系统和方法 |
CN103942825A (zh) * | 2008-09-10 | 2014-07-23 | 柯斯提克绘图公司 | 光线跟踪系统架构和方法 |
CN109087384A (zh) * | 2017-06-14 | 2018-12-25 | 想象技术有限公司 | 光线跟踪系统中经压缩的光线方向数据 |
CN109509138A (zh) * | 2017-09-15 | 2019-03-22 | 想象技术有限公司 | 针对射线跟踪系统的减小的加速结构 |
CN109643461A (zh) * | 2016-09-29 | 2019-04-16 | 英特尔公司 | 用于在光线追踪架构内对多个连续光线-表面相交点进行正确排序和枚举的方法和设备 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8411088B2 (en) | 2000-06-19 | 2013-04-02 | Nvidia Corporation | Accelerated ray tracing |
US8284188B1 (en) | 2007-10-29 | 2012-10-09 | Nvidia Corporation | Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects |
US20090284524A1 (en) * | 2008-05-14 | 2009-11-19 | Robert Allen Shearer | Optimized Graphical Calculation Performance by Removing Divide Requirements |
US8421801B2 (en) | 2008-09-09 | 2013-04-16 | Caustic Graphics, Inc. | Ray tracing using ray-specific clipping |
US9396582B2 (en) * | 2011-12-30 | 2016-07-19 | Intel Corporation | Five-dimensional rasterization with conservative bounds |
US10970912B2 (en) | 2013-03-14 | 2021-04-06 | Imagination Technologies Limited | 3-D graphics rendering with implicit geometry |
KR102159262B1 (ko) * | 2014-03-14 | 2020-09-23 | 삼성전자 주식회사 | 레이 트레이싱에서의 오류 교차점 제거 방법 및 장치 |
KR102242566B1 (ko) | 2014-06-30 | 2021-04-20 | 삼성전자주식회사 | 레이 트레이싱 처리 장치 및 방법 |
US10235338B2 (en) | 2014-09-04 | 2019-03-19 | Nvidia Corporation | Short stack traversal of tree data structures |
US9552664B2 (en) * | 2014-09-04 | 2017-01-24 | Nvidia Corporation | Relative encoding for a block-based bounding volume hierarchy |
US10242485B2 (en) | 2014-09-04 | 2019-03-26 | Nvidia Corporation | Beam tracing |
US9607425B2 (en) | 2014-10-17 | 2017-03-28 | Qualcomm Incorporated | Ray-box intersection testing using dot product-based fixed function logic |
US10692271B1 (en) | 2018-12-13 | 2020-06-23 | Advanced Micro Devices, Inc. | Robust ray-triangle intersection |
US10970914B1 (en) * | 2019-11-15 | 2021-04-06 | Imagination Technologies Limited | Multiple precision level intersection testing in a ray tracing system |
US11663777B2 (en) * | 2020-03-15 | 2023-05-30 | Intel Corporation | Apparatus and method for motion blur with a dynamic quantization grid |
GB2599124A (en) | 2020-09-24 | 2022-03-30 | Imagination Tech Ltd | Memory allocation for recursive processing in a ray tracing system |
GB2599183B (en) | 2021-03-23 | 2022-10-12 | Imagination Tech Ltd | Intersection testing in a ray tracing system |
-
2021
- 2021-03-23 GB GB2104066.2A patent/GB2599188B/en active Active
-
2022
- 2022-03-18 CN CN202210268319.7A patent/CN115115761B/zh active Active
- 2022-03-21 EP EP22163192.2A patent/EP4064204A1/en active Pending
- 2022-03-23 US US17/701,922 patent/US11615577B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192309A (zh) * | 2006-11-28 | 2008-06-04 | 国际商业机器公司 | 进行光线跟踪的方法和系统 |
CN101527052A (zh) * | 2008-03-03 | 2009-09-09 | 英特尔公司 | 用于提高光线跟踪性能的技术 |
CN103942825A (zh) * | 2008-09-10 | 2014-07-23 | 柯斯提克绘图公司 | 光线跟踪系统架构和方法 |
CN102947865A (zh) * | 2010-04-29 | 2013-02-27 | 柯斯提克绘图公司 | 用于光线跟踪中的图元相交的系统和方法 |
CN102855655A (zh) * | 2012-08-03 | 2013-01-02 | 吉林禹硕动漫游戏科技股份有限公司 | Gpu并行光线追踪渲染方法 |
CN109643461A (zh) * | 2016-09-29 | 2019-04-16 | 英特尔公司 | 用于在光线追踪架构内对多个连续光线-表面相交点进行正确排序和枚举的方法和设备 |
CN109087384A (zh) * | 2017-06-14 | 2018-12-25 | 想象技术有限公司 | 光线跟踪系统中经压缩的光线方向数据 |
CN109509138A (zh) * | 2017-09-15 | 2019-03-22 | 想象技术有限公司 | 针对射线跟踪系统的减小的加速结构 |
Also Published As
Publication number | Publication date |
---|---|
US11615577B2 (en) | 2023-03-28 |
US20220343578A1 (en) | 2022-10-27 |
GB2599188A (en) | 2022-03-30 |
EP4064204A1 (en) | 2022-09-28 |
CN115115761A (zh) | 2022-09-27 |
GB2599188B (en) | 2022-10-12 |
GB202104066D0 (en) | 2021-05-05 |
GB2599188A9 (en) | 2022-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341283B (zh) | 用于图块的控制流的生成 | |
CN115115764B (zh) | 光线跟踪系统中的相交测试的方法、装置及介质 | |
CN112907717B (zh) | 光线跟踪系统中的多精度水平相交测试 | |
CN115115765B (zh) | 光线跟踪系统中的相交测试 | |
US20230401781A1 (en) | Intersection testing in a ray tracing system using axis-aligned box coordinate components | |
CN115115761B (zh) | 确定光线是否与三维轴对齐框相交的方法、装置和介质 | |
US20220350606A1 (en) | Performing comparison operations using vector floating point values | |
EP3608878A1 (en) | Edge and depth processing hardware | |
CN115115758B (zh) | 在光线跟踪系统中确定相交的方法、相交测试装置和介质 | |
CN115115760A (zh) | 光线跟踪系统中的相交测试 | |
US20220350566A1 (en) | Performing comparison operations using extended exponent range floating point values | |
US20230031189A1 (en) | Transformation of data in a ray tracing system | |
GB2607456A (en) | Intersection testing in a ray tracing system | |
GB2620819A (en) | Performing operations using floating point values |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |