CN105279783B - 在光线跟踪系统中遍历加速结构的设备和方法 - Google Patents
在光线跟踪系统中遍历加速结构的设备和方法 Download PDFInfo
- Publication number
- CN105279783B CN105279783B CN201510279203.3A CN201510279203A CN105279783B CN 105279783 B CN105279783 B CN 105279783B CN 201510279203 A CN201510279203 A CN 201510279203A CN 105279783 B CN105279783 B CN 105279783B
- Authority
- CN
- China
- Prior art keywords
- node
- ray
- child
- target node
- next target
- 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
Images
Classifications
-
- 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
- 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/52—Parallel processing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
提供了一种在光线跟踪系统中遍历加速结构(AS)的设备和方法。所述方法包括:获取与AS中包括的目标节点的多个子节点有关的信息;基于获取的信息确定所述多个子节点中的各个子节点是否与光线相交;从与光线相交的至少一个子节点中确定下一个目标节点;执行与确定的下一个目标节点的类型对应的操作,从而减少遍历AS所花费的时间。
Description
本申请要求于2014年5月27日提交到韩国知识产权局的第10-2014-0063725号韩国专利申请的权益,所述韩国专利申请的公开内容通过引用被全部包含于此。
技术领域
本公开涉及一种在光线跟踪系统中遍历加速结构的设备和方法。
背景技术
通常,三维(3D)渲染指用于将3D对象数据合成为从给定的相机的视点看见的图像的图像处理。
渲染的示例包括光栅化和光线跟踪,所述光栅化涉及通过将3D对象投影到像平面上来产生图像,光线跟踪涉及通过跟踪从相机的视点沿着穿过像平面中的每个像素的光线(ray)入射的光的路径来产生图像。
在它们当中,光线跟踪具有如下优点:由于在渲染的结果上反映了光的物理属性(例如,反射、折射和透射),所以其可产生高质量图像;但是光线跟踪具有如下缺点:由于相对较大量的计算,所以难以以高速执行渲染。
在光线跟踪中需要大量的计算的处理包括:生成并遍历加速结构(AS)的处理以及执行光线与图元(primitive)之间的相交测试(IST)的处理,在所述加速结构中,将要被渲染的场景对象被空间地划分。
发明内容
提供了一种在光线跟踪系统中遍历加速结构(AS)的设备和方法,所述设备和方法可在AS遍历处理期间高效地执行每个子节点与光线之间的相交测试。
其他的方面将部分地在随后的描述中阐述,部分地将通过所述描述而变得明显,或者可通过对本示例性实施例的实施而了解。
根据示例性实施例的一方面,一种在光线跟踪系统中遍历加速结构(AS)的方法,所述方法包括:获取与AS中包括的目标节点的多个子节点有关的信息;基于获取的信息确定所述多个子节点中的各个子节点是否与光线相交;
从与光线相交的至少一个子节点中确定下一个目标节点;执行与确定的下一个目标节点的类型对应的操作。
确定所述多个子节点中的各个子节点是否与光线相交的步骤可包括:同时确定所述多个子节点是否与光线相交。
确定所述多个子节点中的各个子节点是否与光线相交的步骤可包括:基于与第一子节点和第二子节点有关的信息,同时确定第一子节点和第二子节点是否与光线相交。
确定下一个目标节点可包括:如果存在与光线相交的一个子节点,则将所述一个子节点确定为所述下一个目标节点;如果存在与光线相交的两个或更多个子节点,则将所述两个或更多个子节点中具有最短的到光线的相交距离的子节点确定为所述下一个目标节点。
确定下一个目标节点可包括:如果不存在与光线相交的子节点,则从不从属于来自AS的目标节点的多个节点中提取任意一个节点;将提取的节点确定为所述下一个目标节点。
执行与确定的下一个目标节点的类型对应的操作可包括:如果所述下一个目标节点是内节点,则移动到所述下一个目标节点的至少一个子节点;如果所述下一个目标节点是叶节点,则确定所述叶节点中包括的至少一个图元是否与所述光线相交。
执行与确定的下一个目标节点的类型对应的操作还可包括:当确定所述至少一个图元与光线不相交时,则遍历与光线相交的另一子节点。
所述方法还可包括:如果下一个目标节点是叶节点,则确定所述叶节点中包括的至少一个图元的预设边界框是否与光线相交。
如果被包括在根节点中的目标节点是叶节点,则所述方法还可包括:对目标节点中包括的至少一个图元进行划分;基于划分的至少一个图元产生目标节点的子节点。
根据另一示例性实施例,一种用于在光线跟踪系统中遍历加速结构(AS)的设备,所述设备包括:信息获取器,获取与AS中包括的目标节点的多个子节点有关的信息;相交测试器,基于获取的信息确定所述多个子节点中的各个子节点是否与光线相交;控制器,从与光线相交的至少一个子节点中确定下一个目标节点,并执行与确定的下一个目标节点的类型对应的操作。
相交测试器可同时确定所述多个子节点是否与光线相交。
基于与第一子节点和第二子节点有关的信息,相交测试器可同时确定第一子节点和第二子节点是否与光线相交。
当存在与光线相交的一个子节点时,控制器可将所述一个子节点确定为所述下一个目标节点;当存在与光线相交的两个或更多个子节点时,控制器可将所述两个或更多个子节点中具有最短的到光线的相交距离的子节点确定为所述下一个目标节点。
当不存在与光线相交的子节点时,控制器可从不从属于来自AS的目标节点的多个节点中提取任意一个节点,并将提取的节点确定为所述下一个目标节点。
当所述下一个目标节点是内节点时,控制器可移动到所述下一个目标节点的至少一个子节点,而当所述下一个目标节点是叶节点时,控制器可确定所述叶节点中包括的至少一个图元是否与光线相交。
当确定所述至少一个图元与光线不相交时,控制器可遍历与光线相交的另一子节点。
当所述下一个目标节点是叶节点时,相交测试器还可确定所述叶节点中包括的至少一个图元的预设边界框是否与光线相交。
当被包括在根节点中的目标节点是叶节点时,控制器可划分目标节点中包括的至少一个图元,并基于划分的至少一个图元产生目标节点的子节点。
附图说明
通过下面结合附图对示例性实施例进行的描述,这些和/或其他方面将变得明显和更加易于理解,附图中:
图1是用于解释光线跟踪的示图;
图2是示出光线跟踪系统的框图;
图3是示出根据示例性实施例的在光线跟踪系统中用于遍历加速结构(AS)的设备的框图;
图4是用于解释根据示例性实施例的存储与目标节点的子节点有关的信息的数据结构的示图;
图5是根据示例性实施例的在光线跟踪系统中遍历AS的方法的流程图;
图6是用于解释根据示例性实施例的所述设备如何执行与光线相交的子节点的类型所对应的操作的详细流程图;
图7是示出根据示例性实施例的光线跟踪系统的状态的示图;
图8是示出根据示例性实施例的光线跟踪系统中的设备的详细框图。
具体实施方式
如这里所使用的,术语“和/或”包括相关的列出项的一项或更多项的任意和所有的组合。当诸如“中的至少一个”的表述位于元件的列表之后时,所述表述修饰元件的整个列表,而不修饰列表中的单个元件。
现在将参照附图来更加充分地描述发明构思,在附图中示出了示例性实施例。
图1是用于解释光线跟踪的示图。
如图1中所示,三维(3D)模型可包括:光源80、第一对象31、第二对象32和第三对象33。虽然为了便于解释,第一对象31、第二对象32和第三对象33中的每个对象在图1中看起来像二维(2D)对象,但是第一对象31、第二对象32和第三对象33中的每个对象均是3D对象。
在这种情况下,可以假定第一对象31具有大于0的反射比和大于0的折射率,且第二对象32和第三对象33中的每个对象具有等于0的反射比和等于0的折射率。即,可以假定第一对象31反射光且折射光,而第二对象32和第三对象33不反射光也不折射光。
在图1的3D模型中,渲染设备(例如,光线跟踪设备)可确定视点10以产生3D图像,并可根据确定的视点10确定像平面15。
一旦视点10和像平面15被确定,则光线跟踪设备100可产生来自视点10的针对像平面15的每个像素的光线。
例如,如图1中所示,当像平面15具有4*3的分辨率时,光线跟踪设备100可产生针对12个像素中的每个像素的光线。
现在将解释仅仅针对一个像素(例如,像素A)的光线。
参照图1,从视点10针对像素A产生主光线40。主光线40穿过3D空间并到达第一对象31。第一对象31可包括一组预定的单元区域(以下,称为图元(primitive)),图元可以是诸如三角形或四边形的多边形。下面将假设图元是三角形来进行解释。
可以在主光线40与第一对象31之间的击中点产生阴影光线50、反射光线60和折射光线70。在这种情况下,阴影光线50、反射光线60和折射光线70被称为次生光线。
阴影光线50从击中点产生并指向光源80。反射光线60以与主光线40的入射角对应的角度产生并根据第一对象31的反射比被分配权重。以与第一对象31的折射率和主光线40的入射角对应的角度产生折射光线70,并根据第一对象31的折射率分配折射光线70的权重。
光线跟踪设备100确定击中点是否通过阴影光线50暴露于光源80。例如,如图1中所示,当阴影光线50遇见第二对象32时,可在产生阴影光线50的击中点形成阴影。
另外,光线跟踪设备100确定折射光线70和反射光线60是否到达另一对象。例如,如图1中所示,在折射光线70行进的方向上不存在对象,而反射光线60到达第三对象33。因此,光线跟踪设备100检查第三对象33的击中点的坐标信息和颜色信息,并从第三对象33的击中点产生阴影光线90。在这种情况下,光线跟踪设备100确定阴影光线90是否暴露于光源80。
由于第三对象33的反射比和折射率为0,所以不产生第三对象33的反射光线和折射光线。
如上所述,光线跟踪设备100分析像素A的主光线40以及从主光线40衍生出的所有光线,并根据分析的结果确定像素A的颜色值。像素A的颜色值的确定受到主光线40的击中点的颜色、反射光线60的击中点的颜色以及阴影光线50是否到达光源80的影响。
光线跟踪设备100可通过对像平面15的所有像素执行上述处理来构造像平面15。
图2是示出光线跟踪系统20的框图。
参照图2,光线跟踪系统20可包括光线跟踪设备100、外部存储器250和加速结构(AS)产生器200。
另外,光线跟踪设备100可包括光线产生单元110、遍历(TRV)单元120、相交测试(IST)单元130和着色单元(shading unit)140。
光线产生单元110可产生主光线和从主光线衍生的光线。光线产生单元110可产生来自视点10的主光线,并可在主光线与对象之间的击中点产生次生光线,如参照图1所描述的。在这种情况下,次生光线可以是反射光线、折射光线或者在主光线与对象之间的击中点产生的阴影光线。
另外,光线产生单元110可在次生光线与对象之间的击中点产生第三级光线。光线产生单元110可持续地产生光线直到任意光线与对象不相交为止,或可产生预定次数的光线。
TRV单元120可接收由光线产生单元110产生的与光线有关的信息。产生的光线包括主光线和从主光线衍生的光线(例如,次生光线、第三级光线等)。
例如,对于主光线,TRV单元120可接收与主光线的视点和方向有关的信息。另外,对于次生光线,TRV单元120可接收与次生光线的开始点和方向有关的信息。次生光线的开始点指主光线与对象之间的击中点。另外,视点或开始点可被表示为坐标,方向可被表示为向量。
TRV单元120可从外部存储器250读取与AS有关的信息。
在这种情况下,AS由AS产生器200产生,产生的AS被存储在外部存储器250中。
AS产生器200可产生包括对象在3D空间中的位置信息的AS。AS产生器200以分层的树形来划分3D空间。AS产生器200可产生具有多种形状中的任意形状的AS。例如,AS产生器200可通过利用k维(kd)树或者包围体层次(BVH)来产生指示3D空间中的多个对象的关系的AS。
AS可包括根节点、内节点、叶节点和图元。术语“根节点”指不具有父节点且仅具有子节点的最高节点。另外,术语“内节点”指具有父节点和子节点两者的节点。术语“叶节点”指不具有子节点且仅具有父节点的最低节点。在叶节点中可不包括图元。
TRV单元120可通过遍历与AS有关的读出信息来检测与光线相交的叶节点。
IST单元130可从TRV单元120接收与光线相交的叶节点。
IST单元130可从外部存储器250读取与所接收的叶节点中包括的图元有关的信息(几何数据)。
IST单元130可通过使用与关于图元的读出信息有关的信息来执行光线与每个图元之间的相交测试。
例如,IST单元130可确定从TRV单元120接收的叶节点中包括的多个图元中的哪个图元与光线相交。
因此,IST单元130可检测与光线相交的图元,并可计算检测到的图元与光线之间的击中点。
所计算的击中点可作为坐标被输出到着色单元140。
着色单元140可基于与所述击中点有关的信息和所述击中点的材料的特性来确定像素的颜色值。另外,着色单元140可通过考虑击中点的材料的基本颜色以及光源的影响来确定所述像素的颜色值。
例如,在图1中,着色单元140可通过考虑主光线40以及作为次生光线的折射光线70、反射光线60和阴影光线50的影响来确定像素A的颜色值。
光线跟踪设备100可从外部存储器250接收光线跟踪所需要的数据。外部存储器250可存储AS或者几何数据。
AS由AS产生器200产生并被存储在外部存储器250中。
另外,几何数据指与图元有关的信息。图元可以是诸如三角形或四边形的多边形,几何数据可包括与对象中包括的图元的位置和顶点有关的信息。例如,当图元是三角形时,几何数据可包括三角形的顶点坐标、法向向量或纹理坐标。
光线跟踪设备100可通过遍历AS来检测与光线相交的叶节点。光线跟踪设备100可沿着一个路径遍历AS,并且在遍历处理结束时,可遍历另一路径的AS。当另一路径的AS被遍历时,光线跟踪设备100可将与没有被遍历的节点有关的信息存储在堆栈中,以提高遍历效率。堆栈可以是光线跟踪设备100中包括的临时存储装置。然而,本示例性实施例不限于此,所述堆栈可以设置在光线跟踪设备100的外部并且可与光线跟踪设备100中包括的多个模块进行通信。
图3是示出根据示例性实施例的在光线跟踪系统10中用于遍历AS的设备的框图。
参照图3,设备300可包括信息获取器310、相交测试器320和控制器330。
另外,用于遍历AS的图3的信息获取器310、相交测试器320和控制器330可以被包括在图2的TRV单元120中。然而,本示例性实施例不限于此。
信息获取器310获取与AS中包括的目标节点的多个子节点有关的信息。目标节点可以是内节点或根节点。信息获取器310可获取与目标节点的多个子节点有关的信息,以确定下一个将被遍历的节点(以下,被称为下一个目标节点)。
信息获取器310可开始遍历从根节点开始的AS。根据示例性实施例的根节点可具有多个子节点。信息获取器310可获取与根节点的多个子节点有关的信息,以确定根节点的下一个目标节点。
根据另一示例性实施例,当根节点是不具有子节点的叶节点时,信息获取器310可控制AS产生器200,以对叶节点中包括的至少一个图元进行划分并产生子节点。当AS产生器200通过对叶节点中包括的至少一个图元进行划分来产生子节点时,信息获取器310可获取与产生的子节点有关的信息。
与目标节点的子节点有关的信息可包括确定下一个目标节点所需要的信息。根据示例性实施例的与目标节点的子节点有关的信息可包括存储子节点的存储器地址、指示子节点的索引值(indices)、子节点的类型信息以及子节点的边界框(bounding box)信息。术语“边界框”指可包括在3D空间中独立移动的对象的最小六面体空间。
现在将参照图4详细解释与目标节点的子节点有关的信息。
图4是用于解释根据示例性实施例的数据结构400的示图,在数据结构400中存储有与目标节点的子节点有关的信息。
参照图4,与目标节点的子节点有关的信息可被包括在预设的数据结构400中。例如,与目标节点的子节点有关的信息可包括用于识别子节点的标识信息414和416。当子节点是内节点时,标识信息可以是指示子节点的索引信息。当子节点是叶节点时,标识信息414和416用于指示在子节点中包括的图元的起始索引值。
当子节点是叶节点时,为了指示子节点中包括的图元的数量,与目标节点的子节点有关的信息可包括指示子节点的图元的数量的图元数量信息422和424。当子节点是内节点时,图元数量信息422和424可被设置为0。
与目标节点的子节点有关的信息可包括子节点的边界框信息432和434。另外,与目标节点的子节点有关的信息还可包括与目标节点的父节点有关的信息412。然而,本示例性实施例不限于此,与目标节点的子节点有关的信息可包括与上述信息不同的信息。
根据示例性实施例的信息获取器310可同时获取与预设的数据结构400中包括的子节点有关的信息。在这种情况下,信息获取器310不需要重复地遍历目标节点以获取与目标节点的子节点有关的信息。信息获取器310可通过使用存储子节点的存储器地址412和414来遍历子节点,并且可通过使用指示子节点的图元数量信息422和424来识别子节点。当目标节点是内节点时,指示子节点的图元数量信息422和424可各自指示在目标节点中包括的至少一个图元。
另外,信息获取器310可获取子节点的类型信息和子节点的边界框信息432和434,并且可通过使用仅一个遍历处理来提供用于确定下一个将要被遍历的节点的信息以及对下一个将要被遍历的节点将要执行的操作。
为了便于解释,将示例性地解释目标节点具有两个子节点的情况。然而,本示例性实施例不限于此。
相交测试器320基于与所述多个子节点有关的获取的信息来确定多个子节点中的每个子节点是否与光线相交。相交测试器320可基于子节点的边界框信息同时确定所述多个子节点的边界框是否与光线相交。
根据示例性实施例的相交测试器320可同时确定所述多个子节点的边界框是否与光线相交。例如,基于第一子节点的边界框信息和第二子节点的边界框信息,相交测试器320可同时确定第一子节点的边界框和第二子节点的边界框是否与光线相交。
即使在目标节点中包括三个或更多个子节点时,相交测试器320可同时确定所述三个或更多个子节点是否与光线相交。然而,这是示例性的,根据另一示例性实施例,所述多个子节点中的一些子节点可以以预定的顺序被分组,并且可以确定被分组的子节点的边界框是否与光线相交。
控制器330确定与光线相交的至少一个子节点中的下一个目标节点。控制器330可从相交测试器320获取关于与光线相交的所述至少一个子节点的信息。
当两个或更多个子节点与光线相交时,控制器330可基于相交距离确定下一个目标节点。例如,当在第一子节点与所述光线之间的相交距离小于第二子节点与光线之间的相交距离时,控制器330可将第一子节点确定为下一个目标节点。
另外,控制器330可将与光线相交的子节点中的没有被确定为下一个目标节点的子节点存储在堆栈中。例如,控制器330可将作为第一子节点和第二子节点中没有被确定为下一个目标节点的第二子节点存储在堆栈中。
控制器330执行与所确定的下一个目标节点的类型对应的操作。根据示例性实施例的控制器330可确定被确定的下一个目标节点的类型。目标节点的类型的示例可包括内节点和叶节点。当下一个目标节点是内节点时,控制器330可将与下一个目标节点的类型有关的信息发送到信息获取器310,并且可再次执行上述过程。
例如,当下一个目标节点是内节点A时,控制器330可将内节点A确定为目标节点并可将与内节点A有关的信息发送到信息获取器310。信息获取器310可将内节点A确定为目标节点并可获取与内节点A的子节点有关的信息。另外,相交测试器320可基于所获取的与内节点A的子节点有关的信息来对内节点A的每个子节点执行相交测试。控制器330可从内节点A的多个子节点中提取与光线相交的至少一个子节点并可从提取的至少一个子节点中确定下一个目标节点。
当下一个目标节点是叶节点B时,控制器330可将与叶节点B有关的信息发送到IST单元130(参见图2)。IST单元130反复地执行相交测试,以确定在叶节点B中包括的至少一个图元中的每个图元是否与光线相交。可选择地,控制器330可控制外部存储器250将外部存储器250中包括的与叶节点B中包括的所述至少一个图元有关的信息发送到IST单元130。
当不存在下一个目标节点时,控制器330结束一系列的遍历处理并将遍历处理的结果发送给着色单元140。着色单元140可基于光线与每个图元之间的击中点的信息以及击中点的材料的特性来确定与所述光线对应的像素的颜色值。另外,遮蔽单元140可通过考虑击中点的材料的基本的颜色、光源的影响等来确定像素的颜色值。
当多个子节点中不存在与光线相交的子节点时,控制器330可提取在堆栈中存储的另一节点,并可将所述另一节点确定为下一个目标节点。根据示例性实施例的另一个节点可以是不从属于AS中的目标节点的多个节点中的任一个节点。例如,控制器330可将具有与目标节点的父节点相同的父节点的节点确定为AS中的下一个目标节点。
图5是根据示例性实施例的在光线跟踪系统10中遍历AS的方法的流程图。
在操作510中,设备300获取与AS中包括的目标节点的多个子节点有关的信息。目标节点可以是内节点或根节点。设备300可获取与目标节点的多个子节点有关的信息,以确定下一个将要被遍历的节点(以下,称为下一个目标节点)。与子节点有关的信息可包括存储子节点的存储器地址、指示子节点的索引值、子节点的类型信息以及子节点的边界框信息。
在操作520中,设备300确定所述多个子节点中的各个子节点是否与光线相交。根据示例性实施例的设备300可同时确定子节点的边界框与光线是否相交。设备300可通过基于所获取的与所述多个子节点有关的信息使用一个遍历处理来同时确定所述多个子节点是否与光线相交,从而减少执行遍历所花费的时间。
在操作530中,设备300从与光线相交的至少一个子节点中确定下一个目标节点。当两个或更多个子节点与光线相交时,设备300可基于相交距离确定下一个目标节点。例如,设备300可将所述多个子节点中具有最短的到光线的相交距离的子节点确定为下一个目标节点。设备300可将与光线相交的多个子节点中的没有被确定为下一个目标节点的子节点存储在堆栈中。
在操作540中,设备300执行与所确定的下一个目标节点的类型对应的操作。设备300可确定所确定的下一个目标节点的类型。目标节点的类型的示例可包括内节点和叶节点。当下一个目标节点是内节点时,设备300可对下一个目标节点重复地执行操作510到操作540。
当下一个目标节点是叶节点时,设备300可将与下一个目标节点有关的信息发送到IST单元130(参见图2)。IST单元130重复地执行相交测试,以确定下一个目标节点中包括的至少一个图元中的每个图元是否与光线相交。
另外,当不存在下一个目标节点时,设备300结束一系列遍历处理并将遍历处理的结果发送到着色单元140。
图6是根据示例性实施例的用于解释设备300如何执行下述操作的详细的流程图,所述操作对应于与光线相交的子节点的类型。
在操作610中,设备300获取与AS中包括的目标节点的多个子节点有关的信息。目标节点可以是内节点或根节点。操作610可对应于图5的操作510。
在操作615中,设备300确定所述多个子节点中的每个子节点与光线是否相交。设备300可基于所获取的与所述多个子节点有关的信息同时确定所述多个子节点是否与光线相交。
在操作620中,设备300确定两个或更多个子节点是否与光线相交。
在操作625中,设备300将与光线相交的两个或更多个子节点中具有最短的到光线的相交距离的子节点确定为下一个目标节点。设备300可将与光线相交的两个或更多个子节点中的没有被确定为下一个目标节点的子节点存储在堆栈中。
在操作630中,设备300将与光线相交的一个子节点确定为下一个目标节点。如果在操作620中确定一个子节点与光线相交,则设备300可将所述一个子节点确定为下一个目标节点。
在操作635中,设备300确定是否存在存储在堆栈中的节点。当不存在与光线相交的子节点时,设备300可确定另一节点是否在堆栈中存在。所述另一个节点可以是不从属于AS中的目标节点的任何节点。
在操作640中,设备300将从堆栈提取的节点确定为下一个目标节点。当在堆栈中存储的子节点存在时,设备300可从堆栈提取子节点。设备300可将所提取的子节点确定为下一个目标节点。
在操作645中,设备300确定所确定的下一个目标节点的类型是否是内节点。如果所确定的下一个目标节点的类型是内节点,则设备300可将下一个目标节点改变为目标节点,可返回到操作610,并可重复执行上面的处理。例如,如果所确定的下一个目标节点是内节点A,则设备300可将内节点A设置为目标节点并可获取与内节点A的子节点有关的信息。后续的处理与操作615到640相同。
在操作650中,设备300将与光线有关的信息发送到IST单元130。当所确定的下一个目标节点的类型是叶节点(否)时,设备300可将与光线有关的信息发送到IST单元130。IST单元130可确定下一个目标节点中包括的多个图元中的每个图元是否与光线相交。
在操作655中,设备300将与光线有关的信息发送到着色单元140。当在AS中不存在将要被遍历的节点时,设备300可将在遍历之后获取的信息发送到着色单元140。在遍历之后获取的信息可包括光线与3D空间中包括的每个对象或每个对象中包括的每个图元之间的相交信息。着色单元140可基于与光线与每个图元之间的击中点有关的信息以及击中点的材料的特性来确定与光线对应的像素的颜色值。另外,着色单元140可通过考虑击中点的材料的基本颜色、光源的影响等来确定像素的颜色值。
图7是示出根据示例性实施例的光线跟踪系统10的状态的示图。
根据示例性实施例,可存在光线跟踪系统10的第一状态、第二状态和第三状态。第一状态是AS中包括的节点被遍历的状态。第二状态是对AS中包括的多个节点中的叶节点所包括的每个图元执行相交测试的状态。第三状态是这样的状态,在所述状态中,当AS中包括的所有节点被遍历时,基于在遍历处理期间获取的相交信息确定像素的颜色值并且节点的遍历处理结束。
由于根据示例性实施例的光线跟踪系统10对目标节点的多个子节点同时执行相交测试,所以光线跟踪系统10的状态可被简化为如上所述的三个状态。
现在将参照图7来解释根据示例性实施例的光线跟踪系统10中的状态改变。
在操作712中,设备300可获取与根节点的子节点有关的信息。
在操作714中,当基于获取的信息确定下一个目标节点是内节点时,设备300可获取与下一个目标节点的子节点有关的信息。当下一个目标节点是内节点时,操作712到714可被重复地执行。
在操作716中,当下一个目标节点是叶节点时,设备300将与叶节点有关的信息发送到IST单元130。
在操作718中,当不存在目标节点时,设备300结束遍历处理并将遍历处理的结果发送到着色单元140。
可以在光线跟踪系统10的第一状态下执行操作712到718。
在操作722中,IST单元130对叶节点中包括的至少一个图元重复地执行相交测试。IST单元130可确定光线与所述至少一个图元之间的击中点是否存在,可将相交距离与前一个击中点的相交距离进行比较,并且可选择具有比确定的击中点更短的相交距离的击中点。
在操作724中,IST单元130可结束对叶节点执行的相交测试并可返回到第一状态,以遍历下一个目标节点。
在操作726中,IST单元130结束对叶节点执行的相交测试,且当不存在在堆栈中存储的子节点时,将相交测试的结果发送到遮蔽单元140。
在光线跟踪系统10的第二状态下可以执行操作724到726。
在光线跟踪系统10的第三状态下,基于由着色单元140获取的相交信息来确定与光线对应的颜色值。
图8是根据示例性实施例的在光线跟踪系统10中的设备300的详细的框图。
光线跟踪系统10可包括多个FIFO单元(例如,第零FIFO单元到第四FIFO单元121、122、123、132和134)、光线产生单元110、TRV单元120、IST单元130和着色单元140。现在将参照图8来解释根据示例性实施例的设备300包括在TRV单元120中的情况。
光线产生单元110可产生主光线和从主光线衍生出的光线。光线产生单元110可产生主光线,并在在主光线与对象之间的击中点处产生次生光线。在这种情况下,次生光线可以是在主光线与对象之间的击中点处产生的反射光线、折射光线或阴影光线。
另外,光线产生单元110可持续地产生光线,直到光线不再与对象相交为止,或者可产生预定次数的光线。
TRV单元120可接收与由光线产生单元110产生的光线有关的信息。TRV单元120可被连接到用于接收输入的三个FIFO单元。TRV单元120可通过第一FIFO单元121从光线产生单元110接收新的光线。另外,TRV单元120可通过第二FIFO单元122获取用于遍历下一个节点的信息。TRV单元120可在IST单元130的相交结束之后获取用于遍历下一个节点的信息。
由光线产生单元110产生的光线包括主光线和从主光线衍生的光线(例如,次生光线、第三级光线等)。现在将解释在TRV单元120中包括的根据示例性实施例的设备300如何遍历多个节点。
TRV单元120中包括的设备300可包括信息获取器310、相交测试器320和控制器330,控制器330可包括下一个目标节点确定器332和操作确定器334。
信息获取器310获取与AS中包括的目标节点的多个子节点有关的信息。目标节点可以是内节点或根节点。相交测试器320确定所述多个子节点中的每个子节点是否与光线相交。相交测试器320可通过基于所获取的与多个子节点有关的信息使用一个遍历处理来同时确定所述多个子节点是否与光线相交,从而减少执行遍历所花费的时间。
下一个目标节点确定器332从与光线相交的至少一个子节点中确定下一个目标节点。当两个或更多个子节点与光线相交时,下一个目标节点确定器332可基于相交距离确定下一个目标节点。
操作确定器334执行与所确定的下一个目标节点的类型对应的操作。操作确定器334可确定所确定的下一个目标节点的类型。目标节点的类型的示例可包括内节点和叶节点。
当操作确定器334确定出下一个目标节点是内节点时,信息获取器310可通过第零FIFO单元121获取与下一个目标节点有关的信息。
当下一个目标节点是叶节点时,操作确定器334可将与下一个目标节点有关的信息发送到IST单元130(参见图2)。IST单元130重复地执行相交测试,以确定下一个目标节点中包括的至少一个图元中的每个图元是否与光线相交。IST单元130可检测与光线相交的图元并可计算检测到的多个图元中的每个图元与光线之间的击中点。
计算的击中点可作为坐标被输出到着色单元140。
如上所述,根据上面的示例性实施例中的一个或更多个,处理速度增加,因而执行AS遍历处理所花费的时间减少,从而高效地执行光线与每个子节点之间的相交测试。
在根据所述一个或更多个示例性实施例的光线跟踪系统中遍历AS的方法可被实现为计算机可读记录介质中的计算机可读代码。计算机可读记录介质包括可存储可由计算机系统读出的数据的任意存储装置。计算机可读记录介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光学数据存储装置。计算机可读记录介质可以分布在网络连接的计算机系统上,从而以分布式方式存储并执行计算机可读代码。
虽然已经参照附图描述了一个或更多个示例性实施例,但是本领域普通技术人员将理解,在不脱离由权利要求限定的精神和范围的情况下,可以在这里做出形式和细节上的各种改变。
Claims (14)
1.一种在光线跟踪系统中遍历加速结构AS的方法,所述方法包括:
获取与AS中包括的目标节点的多个子节点有关的信息,其中,获取的信息预设在数据结构中,并且所述数据结构包括存储子节点的存储器地址、指示子节点的索引值、子节点的类型信息以及子节点的边界框信息;
通过基于获取的信息使用一个遍历处理来同时确定所述多个子节点中的各个子节点是否与光线相交;
从与光线相交的至少一个子节点中确定下一个目标节点;
执行与确定的下一个目标节点的类型对应的操作。
2.根据权利要求1所述的方法,其中,确定下一个目标节点的步骤包括:
如果存在与光线相交的一个子节点,则将所述一个子节点确定为所述下一个目标节点;
如果存在与光线相交的两个或更多个子节点,则将所述两个或更多个子节点中具有最短的到光线的相交距离的子节点确定为所述下一个目标节点。
3.根据权利要求1所述的方法,其中,确定下一个目标节点的步骤包括:
如果不存在与光线相交的子节点,则从不从属于来自AS的目标节点的节点中提取任意一个节点;
将提取的节点确定为所述下一个目标节点。
4.根据权利要求1所述的方法,其中,执行与确定的下一个目标节点的类型对应的操作的步骤包括:
如果所述下一个目标节点是内节点,则移动到所述下一个目标节点的至少一个子节点;
如果所述下一个目标节点是叶节点,则确定所述叶节点中包括的至少一个图元是否与光线相交。
5.根据权利要求4所述的方法,其中,执行与确定的下一个目标节点的类型对应的操作的步骤还包括:如果确定所述至少一个图元与光线不相交,则遍历与光线相交的另一子节点。
6.根据权利要求4所述的方法,还包括:如果所述下一个目标节点是叶节点,则确定所述叶节点中包括的至少一个图元的预设边界框是否与光线相交。
7.根据权利要求1所述的方法,如果被包括在根节点中的目标节点是叶节点,则所述方法还包括:
对目标节点中包括的至少一个图元进行划分;
基于划分的至少一个图元来产生目标节点的子节点。
8.一种用于在光线跟踪系统中遍历加速结构AS的设备,所述设备包括:
信息获取器,获取与AS中包括的目标节点的多个子节点有关的信息,其中,获取的信息预设在数据结构中,并且所述数据结构包括存储子节点的存储器地址、指示子节点的索引值、子节点的类型信息以及子节点的边界框信息;
相交测试器,通过基于获取的信息使用一个遍历处理来同时确定所述多个子节点中的各个子节点是否与光线相交;
控制器,从与光线相交的至少一个子节点中确定下一个目标节点,并执行与确定的下一个目标节点的类型对应的操作。
9.根据权利要求8所述的设备,其中,
当存在与光线相交的一个子节点时,控制器将所述一个子节点确定为所述下一个目标节点;
当存在与光线相交的两个或更多个子节点时,控制器将所述两个或更多个子节点中具有最短的到光线的相交距离的子节点确定为所述下一个目标节点。
10.根据权利要求8所述的设备,其中,当不存在与光线相交的子节点时,控制器从不从属于来自AS的目标节点的节点中提取任意一个节点,并将提取的节点确定为所述下一个目标节点。
11.根据权利要求8所述的设备,其中,
当所述下一个目标节点是内节点时,控制器移动到所述下一个目标节点的至少一个子节点;
当所述下一个目标节点是叶节点时,控制器确定所述叶节点中包括的至少一个图元是否与光线相交。
12.根据权利要求11所述的设备,其中,当确定所述至少一个图元与光线不相交时,控制器遍历与光线相交的另一子节点。
13.根据权利要求11所述的设备,其中,当所述下一个目标节点是叶节点时,相交测试器还确定所述叶节点中包括的至少一个图元的预设边界框是否与光线相交。
14.根据权利要求8所述的设备,其中,当被包括在根节点中的目标节点是叶节点时,控制器对目标节点中包括的至少一个图元进行划分,并基于划分的至少一个图元来产生目标节点的子节点。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2014-0063725 | 2014-05-27 | ||
KR1020140063725A KR102219289B1 (ko) | 2014-05-27 | 2014-05-27 | 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105279783A CN105279783A (zh) | 2016-01-27 |
CN105279783B true CN105279783B (zh) | 2020-04-07 |
Family
ID=53284038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510279203.3A Active CN105279783B (zh) | 2014-05-27 | 2015-05-27 | 在光线跟踪系统中遍历加速结构的设备和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10049488B2 (zh) |
EP (1) | EP2950275B1 (zh) |
JP (1) | JP6460914B2 (zh) |
KR (1) | KR102219289B1 (zh) |
CN (1) | CN105279783B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9697640B2 (en) | 2014-04-21 | 2017-07-04 | Qualcomm Incorporated | Start node determination for tree traversal in ray tracing applications |
US9818221B2 (en) | 2016-02-25 | 2017-11-14 | Qualcomm Incorporated | Start node determination for tree traversal for shadow rays in graphics processing |
KR101795690B1 (ko) | 2016-09-29 | 2017-11-08 | 이화여자대학교 산학협력단 | 프로젝션 영상의 고속 생성 방법 |
KR102712155B1 (ko) | 2016-12-15 | 2024-09-30 | 삼성전자주식회사 | 가속 구조를 생성하는 방법 및 장치 |
US10984049B2 (en) * | 2017-06-27 | 2021-04-20 | Nvidia Corporation | Performing traversal stack compression |
US11380042B2 (en) * | 2020-06-26 | 2022-07-05 | Imagination Technologies Limited | Intersection testing in ray tracing systems using hierarchical acceleration structures with implicitly represented nodes |
US11373360B2 (en) * | 2020-07-30 | 2022-06-28 | Apple Inc. | Grouping techniques for ray intersection traversal |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1899896A2 (en) | 2005-06-23 | 2008-03-19 | Mental Images GmbH | Real-time precision ray tracing |
US8259105B2 (en) | 2006-07-21 | 2012-09-04 | The University Of Utah Research Foundation | Ray tracing a three-dimensional scene using a hierarchical data structure |
US20080024489A1 (en) | 2006-07-28 | 2008-01-31 | Robert Allen Shearer | Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements |
US8018457B2 (en) | 2006-09-19 | 2011-09-13 | Caustic Graphics, Inc. | Ray tracing system architectures and methods |
US7737974B2 (en) | 2006-09-27 | 2010-06-15 | International Business Machines Corporation | Reallocation of spatial index traversal between processing elements in response to changes in ray tracing graphics workload |
US20080088619A1 (en) * | 2006-10-17 | 2008-04-17 | Robert Allen Shearer | Branch Prediction for Acceleration Data Structure Traversal |
US7852336B2 (en) * | 2006-11-28 | 2010-12-14 | International Business Machines Corporation | Dynamic determination of optimal spatial index mapping to processor thread resources |
US7755628B2 (en) * | 2006-12-29 | 2010-07-13 | Intel Corporation | Method and apparatus for multi-level 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 |
US8289324B1 (en) * | 2007-12-17 | 2012-10-16 | Nvidia Corporation | System, method, and computer program product for spatial hierarchy traversal |
KR101550477B1 (ko) * | 2008-03-21 | 2015-09-04 | 이메지네이션 테크놀로지스 리미티드 | 광선 추적 렌더링을 위한 병렬화 교차 테스트 및 세이딩의 아키텍처 |
KR101004110B1 (ko) | 2009-05-28 | 2010-12-27 | 주식회사 실리콘아츠 | 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩 |
US8797322B2 (en) * | 2009-06-24 | 2014-08-05 | Imagination Technologies, Limited | Systems and methods of defining rays for ray tracing rendering |
KR101089638B1 (ko) | 2009-10-09 | 2011-12-06 | 양성봉 | 교차 검사 가속을 위한 광선 추적 장치 및 방법 및 이를 이용한 렌더링 장치 및 방법 |
US8836704B2 (en) * | 2009-12-18 | 2014-09-16 | Business Objects Software Ltd. | Automatic tree restriction |
WO2012174334A1 (en) | 2011-06-16 | 2012-12-20 | Caustic Graphics, Inc. | Graphics processor with non-blocking concurrent architecture |
KR102042539B1 (ko) | 2012-07-24 | 2019-11-08 | 삼성전자주식회사 | 레이 트레이싱 방법 및 장치 |
US9305392B2 (en) * | 2012-12-13 | 2016-04-05 | Nvidia Corporation | Fine-grained parallel traversal for ray tracing |
GB2541084B (en) * | 2013-03-15 | 2017-05-17 | Imagination Tech Ltd | Rendering with point sampling and pre-computed light transport information |
US9547932B2 (en) * | 2013-06-10 | 2017-01-17 | Nvidia Corporation | Splitting bounding volumes of primitives |
-
2014
- 2014-05-27 KR KR1020140063725A patent/KR102219289B1/ko active IP Right Grant
-
2015
- 2015-05-27 CN CN201510279203.3A patent/CN105279783B/zh active Active
- 2015-05-27 EP EP15169467.6A patent/EP2950275B1/en active Active
- 2015-05-27 US US14/722,887 patent/US10049488B2/en active Active
- 2015-05-27 JP JP2015107282A patent/JP6460914B2/ja active Active
Non-Patent Citations (3)
Title |
---|
M.Hapala等.Review: Kd-tree Traversal Algorithms for Ray Tracing.《Computer Graphics Forum》.2011,第30卷(第1期), * |
Review: Kd-tree Traversal Algorithms for Ray Tracing;M.Hapala等;《Computer Graphics Forum》;20110124;第30卷(第1期);第199-210页 * |
SGRT: A Mobile GPU Architecture for Real-Time Ray Tracing;Won-Jong Lee等;《HPG 2013》;20130719;第120卷;第109页 * |
Also Published As
Publication number | Publication date |
---|---|
JP2015225673A (ja) | 2015-12-14 |
KR102219289B1 (ko) | 2021-02-23 |
US10049488B2 (en) | 2018-08-14 |
US20150348308A1 (en) | 2015-12-03 |
JP6460914B2 (ja) | 2019-01-30 |
EP2950275B1 (en) | 2019-07-03 |
EP2950275A1 (en) | 2015-12-02 |
CN105279783A (zh) | 2016-01-27 |
KR20150136347A (ko) | 2015-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105279783B (zh) | 在光线跟踪系统中遍历加速结构的设备和方法 | |
KR102193684B1 (ko) | 레이 트레이싱 처리 장치 및 방법 | |
US9576389B2 (en) | Method and apparatus for generating acceleration structure in ray tracing system | |
JP6476090B2 (ja) | 加速構造の生成及び探索を行う方法並びに装置 | |
KR102493461B1 (ko) | 렌더링 시스템 및 방법 | |
KR102161749B1 (ko) | 화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치. | |
US20150091904A1 (en) | Ray tracing processing apparatus and method | |
KR102242566B1 (ko) | 레이 트레이싱 처리 장치 및 방법 | |
CN107248142B (zh) | 一种文物碎片自动拼接方法 | |
US20150348307A1 (en) | Apparatus and method of traversing acceleration structure in ray tracing | |
KR20160125172A (ko) | 레이 트레이싱 장치 및 방법 | |
US20150091894A1 (en) | Method and apparatus for tracing ray using result of previous rendering | |
US10460506B2 (en) | Method and apparatus for generating acceleration structure | |
US9728000B2 (en) | Apparatus and method of using acceleration structure in ray tracing | |
KR102537529B1 (ko) | 레이 트레이싱 장치 및 방법 | |
US8948498B1 (en) | Systems and methods to transform a colored point cloud to a 3D textured mesh | |
KR102467031B1 (ko) | 가속 구조를 생성 및 탐색하는 방법 | |
KR20110099412A (ko) | 반사맵 및 굴절맵을 이용한 레이 트레이싱 기법에 따른 랜더링 장치 및 방법 | |
KR102365112B1 (ko) | 레이 트레이싱 장치 및 방법 | |
US20150186288A1 (en) | Apparatus and method of operating cache memory | |
Pak | Towards Efficient Deflectometry in Motion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |