CN103578130A - 用于光线跟踪的方法和设备 - Google Patents
用于光线跟踪的方法和设备 Download PDFInfo
- Publication number
- CN103578130A CN103578130A CN201310312590.7A CN201310312590A CN103578130A CN 103578130 A CN103578130 A CN 103578130A CN 201310312590 A CN201310312590 A CN 201310312590A CN 103578130 A CN103578130 A CN 103578130A
- Authority
- CN
- China
- Prior art keywords
- unit
- light
- traversal
- traversals
- life
- 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.)
- Granted
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Analysing Materials By The Use Of Radiation (AREA)
Abstract
提供了一种用于光线跟踪的方法和设备。可基于多个遍历单元中的每个遍历单元的寿命来从所述多个遍历单元中确定将对将被输入的输入光线进行处理的遍历单元。可基于由遍历单元处理的每条光线的寿命确定被确定的遍历单元的寿命。
Description
本申请要求于2012年7月24日在韩国知识产权局提交的第10-2012-0080547号韩国专利申请的优先权利益,该申请的公开通过引用包含于此。
技术领域
以下描述的一个或多个实施例涉及一种用于光线跟踪的方法和设备,更具体地说,涉及一种用于执行光线的遍历和相交测试的方法和设备。
背景技术
三维(3D)渲染可以是将3D对象的数据合成为在相机的给定视点观察到的图像的图像处理过程。
作为渲染方法的一个示例,可采用在将3D对象投影到屏幕上的同时产生图像的光栅化方法。作为渲染方法的另一示例,可采用通过跟踪沿从相机的视点朝着图像的每个像素发射的光线入射的光的路径来产生图像的光线跟踪方法。
在以上渲染方法中,光线跟踪方法可使用光的物理属性(例如,反射、折射、透射等)产生高质量图像。然而,光线跟踪会需要非常大量的计算,因而使得光线跟踪方法可能不能以高速率执行渲染。
加速结构的遍历和光线图元(ray primitive)之间的相交测试中的每个可以是用于确定光线跟踪性能的最重要因素之一。可针对每条光线执行加速结构的遍历和光线图元之间的相交测试达几次至几十次。
加速结构可以是空间划分加速结构。加速结构可以是通过空间地划分将被渲染的场景对象而表现的数据结构。数据结构(例如,网格、Kd-树、包围体层次(BVH)等)可被用作加速结构。
以上的遍历和相交测试可以是在光线跟踪中使用至少70%的计算量并且占用至少90%的存储器带宽的处理。可采用专用硬件用于遍历和相交测试的实时处理。
发明内容
通过提供一种光线处理方法来实现以上和/或其他方面,所述方法包括:基于多个遍历单元中的每个遍历单元的寿命从所述多个遍历单元中选择遍历单元对输入光线进行遍历处理;使用选择的遍历单元对输入单元进行遍历处理。所述多个遍历单元中的每个遍历单元的寿命可基于由所述多个遍历单元中的每个遍历单元处理的一条或多条光线中的每条光线的状态被确定。
可基于所述多个遍历单元中的每个遍历单元的状态从所述多个遍历单元中选择遍历单元。
所述多个遍历单元中的每个遍历单元的寿命可基于由所述多个遍历单元中的每个遍历单元处理的一条或多条光线中的每条光线的寿命被确定。
所述一条或多条光线中的每条光线的寿命可基于由所述多个遍历单元重复对所述一条或多条光线中的每条光线进行遍历处理的次数被确定。
所述多个遍历单元中的每个遍历单元的寿命可以是由所述多个遍历单元中的每个遍历单元处理的一条或多条光线的寿命的和。
所述多个遍历单元中的每个遍历单元的寿命可以是由所述多个遍历单元中的每个遍历单元处理的一条或多条光线的平均寿命。
选择的遍历单元可以是所述多个遍历单元中的在输入缓冲器内具有最少数量的光线的遍历单元中的具有最长寿命的遍历单元。
可重复执行所述遍历处理。当重复执行所述遍历处理时,输入光线的寿命可增加“1”。
所述光线处理方法还可包括:从多个相交测试单元中选择相交测试单元对输入光线进行相交测试处理;使用选择的相交测试单元对输入单元进行相交测试处理。
通过提供一种光线跟踪设备来实现上述和/或其他方面,所述设备包括:多个遍历单元,对光线进行遍历处理;光线分派单元,基于所述多个遍历单元中的每个遍历单元的寿命从所述多个遍历单元中选择遍历单元对输入光线进行遍历处理。选择的遍历单元可以对输入光线进行遍历处理,所述多个遍历单元中的每个遍历单元的寿命可基于由所述多个遍历单元中的每个遍历单元处理的一条或多条光线中的每条光线的状态被确定。
光线分派单元可基于所述多个遍历单元中的每个遍历单元的状态从所述多个遍历单元中选择遍历单元。
光线分派单元可从所述多个遍历单元中选择在输入缓冲器内具有最少数量的光线的遍历单元中的具有最长寿命的遍历单元,作为将对输入光线进行遍历处理的遍历单元。
所述多个遍历单元可以重复对输入光线进行遍历处理。当重复对输入光线进行遍历处理时,输入光线的寿命可增加“1”。
所述光线跟踪设备还可包括:多个相交测试单元,对光线进行相交测试处理;光线仲裁单元,从所述多个相交测试单元中选择相交测试单元对输入光线进行相交测试处理。选择的相交测试单元可对输入单元进行相交测试处理。
通过提供一种光线处理设备来实现上述和/或其他方法,所述设备包括:处理器,控制一个或多个处理器可执行单元;光线跟踪单元,基于已经被输入到多个遍历单元中的各个遍历单元的每条光线的寿命将寿命分配到所述各个遍历单元;光线分派单元,基于由光线跟踪单元分配到所述多个遍历单元中的遍历单元的寿命从所述多个遍历单元中选择一个遍历单元,并将光线输入到所述选择的遍历单元。
在以下的描述中,将部分阐述实施例的附加方面,并且从说明书中这部分将是清楚的,或者可通过本公开的实践被了解。
附图说明
从以下结合附图对实施例的下列描述,这些和/或其他方面将变得明显和更易于理解,附图中:
图1示出根据实施例的遍历(TRV)单元的构造;
图2示出根据实施例的相交测试(IST)单元的构造;
图3示出根据实施例的光线跟踪单元和与光线跟踪单元相关联的实体的构造;
图4示出根据实施例的图形处理单元(GPU)的组成部件的操作;
图5示出根据实施例的光线跟踪方法;
图6示出根据实施例的管理TRV单元的寿命的方法;
图7示出根据实施例的光线分派单元的操作方法;
图8示出根据实施例的光线仲裁(arbitration)单元的操作方法。
具体实施方式
现在将对实施例进行详细描述,在附图中示出实施例的示例,附图中的相同标号始终表示相同元件。以下参照附图描述实施例以解释本公开。
下面,术语“光线”可指示作为光线跟踪的目标的“光线对象”、指示光线的“数据结构”、“光线的信息”或“与光线相关联的数据”。因此,术语“光线”、“光线对象”、“光线结构”、“光线的信息”和“与光线相关联的数据”可与彼此替换以被使用。
在说明书、附图以及权利要求书中,术语“寿命”可由术语“年龄”替换。
图1示出根据实施例的遍历(TRV)单元100的构造。
TRV单元100是用于光线遍历的单元,并可以对光线进行遍历处理。TRV单元100可遍历光线的加速结构。
TRV单元100可包括输入缓冲器110、管道120、高速缓存器130、第一输出缓冲器140、第二输出缓冲器150和第三输出缓冲器160。
输入缓冲器110可存储将在管道120中处理的一条或多条光线。例如,输入到TRV单元100的光线可在输入缓冲器110内等待遍历的处理。当输入缓冲器110不可进一步存储光线时,输入缓冲器110可能是不可用的。当输入缓冲器还可存储光线时,输入缓冲器110可仍然可用。
管道120可对光线进行遍历处理。管道120可同时对最多n1条光线进行遍历处理。当管道120正在处理k1条光线时,TRV单元100的管道使用可以是k1/n1。这里,n1可以表示大于或等于“1”的整数,k1可表示在“1”和n1之间的整数。
高速缓存器130可高速缓存与光线的遍历相关联的数据。高速缓存器130可将与光线的遍历相关联的数据提供给管道120。
第一输出缓冲器140、第二输出缓冲器150和第三输出缓冲器160中的每个可存储由管道120处理的一条或多条光线。可基于由管道120进行了遍历处理的光线的状态将该光线提供给实体之一。将从TRV单元100输出的光线可在第一输出缓冲器140、第二输出缓冲器150和第三输出缓冲器160中的一个中等待被输出。
例如,第一输出缓冲器140可存储将被TRV单元100反复地处理的光线。第二输出缓冲器150可存储将进行相交测试处理的光线,第三输出缓冲器160可存储完成了光线跟踪并且将进行阴影处理的光线。
TRV单元100可包括寿命存储单元190。寿命存储单元190可存储TRV单元100的寿命。将参照图5进一步描述TRV单元100的寿命。寿命存储单元190可以是用于存储信息的实体(诸如寄存器等),并可以是指示寿命的标签。
图2示出根据实施例的相交测试(IST)单元200的构造。
IST单元200是用于光线的相交测试的单元,并可对光线进行相交测试处理。
IST单元200可包括输入缓冲器210、管道220、高速缓存器230和输出缓冲器240。
输入缓冲器210可存储将在管道220中处理的一条或多条光线。例如,输入到IST单元200的光线可在输入缓冲器210内等待相交测试的处理。当输入缓冲器210不可进一步存储光线时,输入缓冲器210可能不可用。当输入缓冲器还可存储光线时,输入缓冲器210可仍然可用。
管道220可对光线进行相交测试处理。管道220可同时对最多n2条光线进行相交测试处理。当管道220正在处理k2条光线时,IST单元200的管道使用可以是k2/n2。这里,n2可以表示大于或等于“1”的整数,k2可表示在“1”和n2之间的整数。
高速缓存器230可高速缓存与光线的相交测试相关联的数据。高速缓存器230可将与光线的相交测试相关联的数据提供给管道220。
输出缓冲器240可存储由管道220处理的一条或多条光线中的每条光线的信息。由管道220进行了相交测试处理的光线可被反复输入到图1的TRV单元100。将被输入到TRV单元100的光线可在被TST单元200输出之前临时存储在输出缓冲器240中。
图3示出根据实施例的光线跟踪单元和与光线跟踪单元相关联的实体的构造。
图3示出基于光线跟踪的图形处理单元(GPU)或渲染硬件的结构。
图3的构造可包括光线产生单元310、光线跟踪单元320、第一高速缓存器382、第二高速缓存器384、总线386、外部存储器388和阴影单元390。光线产生单元310、第一高速缓存器382、第二高速缓存器384和阴影单元390可以是GPU的组成部件。也就是说,GPU可包括光线产生单元310、第一高速缓存器382、第二高速缓存器384和阴影单元390。
光线产生单元310可产生光线。光线产生单元310可将产生的光线提供给光线跟踪单元320。光线产生单元310可指示将光线的信息提供给光线跟踪单元320的操作或实体。
光线跟踪单元320可对光线进行跟踪处理。光线跟踪单元320可将要进行跟踪处理的光线提供给阴影单元390。
阴影单元390可基于进行了跟踪处理的光线的信息来进行阴影处理。阴影单元390可指示在对光线进行了跟踪处理之后进行阴影处理的操作或实体。阴影处理可指示通过叠加针对图像的像素累积的光线的结果而最终确定图像的像素的颜色的处理。这里,光线的结果可指示针对光线的光线跟踪的结果。
第一高速缓存器382和第二高速缓存器384可高速缓存对光线进行跟踪处理所需的数据。对光线进行跟踪处理所需的数据可被存储在外部存储器388中。第一高速缓存器382和第二高速缓存器384可高速缓存存储在外部存储器388中的数据的部分。可通过总线386在第一高速缓存器382和外部存储器388之间或在第二高速缓存器384和外部存储器388之间传输与光线的跟踪相关的数据。
第一高速缓存器382可将对光线进行遍历处理所需的数据提供给以上参照图1描述的TRV单元100的高速缓存器130。第二高速缓存器384可将对光线进行相交测试处理所需的数据提供给以上参照图2描述的IST单元200的高速缓存器230。因此,TRV单元100的高速缓存器130和IST单元200的高速缓存器230中的每个可以是1级高速缓存器,第一缓存器382和第二缓存器384均可以是2级缓存器。
以下,将描述光线跟踪单元320的组成部件。
当使用树作为空间划分加速结构并且使用三角形作为图元时,光线跟踪单元320可通过从加速结构树的根节点到更低的节点的层次遍历来搜索光线初始访问的叶节点。当通过以上搜索访问叶节点时,光线跟踪单元320可在光线和存在于叶节点内的每个三角形之间执行相交测试。当在叶节点内没有发现与光线相交的三角形时,光线跟踪单元320可通过继续树的遍历来搜索与光线相交的图元。可分别通过图1的TRV单元100和图2的IST单元200来执行以上遍历和相交测试。
如上所述,由于光线跟踪特征,光线跟踪可同时需要大量的操作和宽的存储器带宽。也就是说,每次访问节点或者每次在光线和图元之间执行相交测试时,从外部存储器388获取节点的数据或图元的数据,随后需要执行以上操作。因此,用于遍历的TRV单元100可包括高速缓存器130,用于相交测试的IST单元200可包括高速缓存器230。当在高速缓存器130或高速缓存器230中缺少节点的数据或图元的数据时,在从外部存储器388获取数据的处理中会出现延迟。光线跟踪性能也会劣化。
光线跟踪单元320可包括光线分派单元330、多个TRV单元、光线仲裁单元350、多个IST单元和缓冲器370。
多个TRV单元中的每个TRV单元可以是以上参照图1描述的TRV单元100。参照图3,多个TRV单元可包括第一TRV单元340-1、第二TRV单元340-2、第三TRV单元340-3、第四TRV单元340-4和第N TRV单元340-5。这里,N可以表示大于或等于“2”的整数。
光线分派单元330可控制光线产生单元310和多个TRV单元之间的光的传输。光线分派单元330可将输入到光线跟踪单元320的输入光线分配到多个TRV单元中的一个。
当仅基于多个TRV单元的输入缓冲器是否可用来分配输入光线时,在多个TRV单元的管道使用中会发生负载不平衡。例如,当光线分派单元330仅通过验证在多个TRV单元的每个输入缓冲器中是否存在任何空余空间,来从多个TRV单元中选择TRV单元来对输入光线进行遍历处理时,对光线的遍历处理可集中在特定TRV单元上。
输入到多个TRV单元之一的光线可以是由光线产生单元310产生的光线,可以是通过多个TRV单元之一进行了遍历处理的光线,并且可以是通过多个IST单元之一(例如,IST单元200)进行了相交测试处理的光线。由多个TRV单元之一输出的光线可以被再次输入到以上的单个TRV单元,还可被输入到由光线仲裁单元350从多个IST单元中选择的IST单元,并且还可被输入到阴影单元390。
缓冲器370可存储将被输出到阴影单元390的一条或多条光线。将被输出到阴影单元390的光线可在被输出到阴影单元390之前临时存储在缓冲器370中。
光线仲裁单元350可仲裁在多个TRV单元和多个IST单元之间的光线的传输。也就是说,光线仲裁单元350可控制在多个TRV单元和多个IST单元之间的光线的数据流。
多个IST单元中的每个IST单元可以是以上参照图2描述的IST单元200。参照图3,多个IST单元可包括第一IST单元360-1、第二IST单元360-2和第M IST单元360-3。这里,M可表示大于或等于“2”的整数。
将被多个IST单元之一输出的光线可被输入到多个TRV单元之一。这里,输入了光线的TRV单元可以是已经对所述光线进行了遍历处理的TRV单元。
在多个TRV单元中的每个TRV单元中,符号“PIPE”可表示管道120,符号“$”可表示高速缓存器130。在多个IST单元中的每个IST单元中,符号“PIPE”可表示管道220,符号“$”可表示高速缓存器230。
可通过光线分派单元330和光线仲裁单元350来平衡多个TRV单元和多个IST单元的管道使用。
图4示出根据实施例的GPU的组成部件的操作。
在操作410,光线产生单元310可产生光线。
在操作415,光线产生单元310可将产生的光线提供给光线跟踪单元320。光线产生单元310可将产生的光线输出到光线跟踪单元320。
在操作420,光线跟踪单元320可对光线进行跟踪处理。
在操作425,光线跟踪单元320可将进行了跟踪处理的光线提供给阴影单元390。光线跟踪单元320可将进行了跟踪处理的光线输出到阴影单元390。
在操作430,阴影单元390可基于进行了跟踪处理的光线进行阴影处理。
如上所述,通过各种路径的光线输入和光线输出可在TRV单元100中发生。因此,处理输入光线的目的可能需要基于多个TRV单元中的每个TRV单元的管道的状态以及多个TRV单元中的每个TRV单元的输入缓冲器内的光线的数量来确定。这里,管道的状态可指示在管道内处理的光线的状态。
图5示出根据实施例的光线跟踪方法。
下面的操作510至操作570可对应于上述的图4的操作420。
输入光线可以是由光线产生单元310在操作415提供的光线。
在操作510,光线分派单元330可基于多个遍历单元中的每个遍历单元的寿命来从多个TRV单元中选择TRV单元对输入光线进行遍历处理。
光线分配单元330可基于多个TRV单元中的每个TRV单元的状态来从多个TRV单元中选择TRV单元对输入光线进行遍历处理。在该示例中,TRV单元100的状态可指示TRV单元100的输入缓冲器110是否可用或者指示TRV单元100的输入缓冲器110内的光线的数量。
例如,光线分派单元330可从多个TRV单元中选择对输入光线进行遍历处理的一个TRV单元。更具体地说,光线分派单元330可从在输入缓冲器内具有最少数量的光线的TRV单元中选择具有最大年龄的TRV单元。可选择地,光线分派单元330可从多个TRV单元中选择输入缓冲器可用的TRV单元中的具有最长年龄的TRV单元。
多个TRV单元中的每个TRV单元的寿命可基于由多个TRV单元中的每个TRV单元处理的一条或多条光线中的每条光线的状态来确定。
多个TRV单元中的每个TRV单元的寿命可由每个TRV单元、光线分派单元330或光线跟踪单元320来计算或管理。例如,TRV单元100可计算TRV单元100的寿命,可将计算的寿命存储在寿命存储单元190中,可将存储的寿命提供给光线分派单元330。可选择地,光线分派单元330可计算并从而存储多个TRV单元中的每个TRV单元的寿命。
多个TRV单元中的每个TRV单元的寿命可基于由多个TRV单元中的每个TRV单元处理的一条或多条光线中的每条光线的状态来确定。由TRV单元100处理的一条或多条光线中的每条光线可以是TRV单元100的管道120中处理的光线和/或在TRV单元100的输入缓冲器130中存储的光线。
光线的状态可以是光线的寿命。也就是说,由TRV单元100处理的一条或多条光线中的每条光线可具有寿命。
光线的年龄可以是指示光线已经被输入到TRV单元100或光线分派单元330并保留在TRV单元100或光线分派单元330中的时间段的信息。
多个TRV单元中的每个TRV单元的寿命可基于由多个TRV单元中的每个TRV单元处理的一条或多条光线中的每条光线的寿命来确定。也就是说,TRV单元100的寿命可以是表示输入到TRV单元100的一条或多条光线中的每条光线的状态或寿命的信息。例如,多个TRV单元中的每个TRV单元的寿命可以是由多个TRV单元中的每个TRV单元处理的一条或多条光线的寿命的和。也就是说,TRV单元100的寿命可以是由TRV单元100处理的一条或多条光线的寿命的和。作为另一示例,多个TRV单元中的每个TRV单元的寿命可以是由多个TRV单元中的每个TRV单元处理的一条或多条光线的平均寿命。也就是说,TRV单元100的寿命可以是由TRV单元100处理的一条或多条光线的平均寿命。作为另一示例,可通过直接考虑将被处理的光线的年龄来将要处理的光线输入到多个TRV单元中的特定TRV单元,而不是通过考虑针对多个TRV单元的特定TRV单元的相对年龄来将要处理的光线输入到多个TRV单元中的特定TRV单元,或者,光线分派单元330可通过直接考虑将被处理的光线的年龄以及针对多个TRV单元的特定TRV单元的相对年龄来将要处理的光线输入到多个TRV单元中的特定TRV单元。
一条或多条光线的寿命可以基于由多个TRV单元反复对一条或多条光线中的每条光线进行遍历处理的次数来确定。在反复遍历的情况下,一次遍历可对应于访问加速结构树的单个节点。
光线的寿命可以是由多个TRV单元反复对光线进行遍历处理的次数。例如,当具有寿命“1”的新的光线被输入到TRV单元100的输入缓冲器时,TRV单元100的寿命可增加“1”。可选择地,当反复对输入光线进行遍历处理的操作520时,每对所述遍历处理执行一次,输入光线的寿命可增加“1”。在输出完成了跟踪的输入光线的操作570中,TRV单元100的寿命可减去将被输出的输入光线的寿命。
也就是说,TRV单元100的大龄或高龄可指示相对大数量的光线可能从TRV单元100的管道120中相对快地离开。因此,具有长寿命的TRV单元100的管道120内的光线可被进一步相对快地消耗。当将输入光线分配到多个TRV单元时,可通过优选地将输入光线分配到多个TRV单元中的具有最长寿命的TRV单元来维持多个TRV单元之间的平衡。
在操作520,可使用选择的TRV单元来对输入光线进行遍历处理。也就是说,选择的TRV单元可对输入光线进行遍历处理。
在操作530,选择的TRV单元或光线分派单元330可确定是否执行相交测试。当需要相交测试时,可执行操作550。相反,当不需要相交测试时,可执行操作540。
在操作540,选择的TRV单元或者光线分配单元330可确定是否重复遍历。当确定重复遍历时,可重复执行操作520以继续树的遍历。相反,当确定不重复遍历时,可执行操作570。
多个TRV单元可反复对输入光线进行遍历处理。当输入光线的遍历重复时,每对所述遍历执行一次,输入光线的寿命可增加“1”。可基于相交测试的结果确定是否重复以上遍历。
操作530和540是示例性的,因此,可采用预定顺序或方法来确定是否执行相交测试并确定是否反复遍历。
在操作550,光线仲裁单元350可从多个IST单元中选择IST单元对输入光线进行相交测试处理。
多个TRV单元中的一个或多个可同时或基本同时地将光线输出到部分可将光线同时输出到光线仲裁单元350。
光线仲裁单元350可基于同时输出的光线中的每条光线的状态选择光线来优选处理。例如,光线仲裁单元350可从同时输出的光线中选择具有最长寿命的光线作为将被优选处理的光线。
可选择地,光线仲裁单元350可基于已经同时输出了光线的多个TRV单元中的每个TRV单元的状态从被同时输出的光线中选择光线来优选处理。例如,光线仲裁单元350可选择从已经同时输出了光线的多个TRV单元中的具有最长寿命的TRV单元输出的光线作为将被优选处理的光线。在实施例中,如果或当多条光线可从单个特定TRV单元输出时,光线仲裁单元350可从特定TRV单元的多条光线中选择具有最大年龄的光线作为到IST单元的输入。
在操作560,选择的IST单元可对输入光线进行相交测试处理。当进行相交测试处理时,可反复进行光线的遍历。因此,可在执行了操作560之后反复执行操作520。
在操作570,选择的TRV单元可将进行了跟踪处理的输入光线输出到阴影单元390。可通过缓冲器370将进行了跟踪处理的输入光线输出到阴影单元390。
图6示出根据实施例的管理TRV单元100的寿命的方法。
在操作610,TRV单元100可确定是否存在输入光线。当存在输入光线时,可执行操作620。相反,当不存在输入光线时,可执行操作640。
在操作620,TRV单元100可将输入光线添加到输入缓冲器110。
在操作630,TRV单元100可更新TRV单元100的寿命。例如,TRV单元100可将输入光线的寿命设置为“1”。TRV单元100可将“1”添加到TRV单元100的寿命,或者可将输入光线的寿命添加到TRV单元100的寿命,或者可基于输入光线的年龄(诸如通过使用所有输入光线的平均年龄)更新TRV单元100的年龄。
TRV单元100可将TRV单元100的更新了的寿命存储在寿命存储单元190中。
在操作640,管道120可对在管道120内的光线进行遍历处理。当在管道120内存在空余空间时,可在操作640将输入缓冲器110内的光线发送到管道120。可根据先入先出(FIFO)机制将输入缓冲器110内的光线发送到管道120。
在操作650,TRV单元100可确定是否存在完成了遍历的光线。当存在完成了遍历的光线时,可执行操作660。相反,当不存在完成了遍历的光线时,可反复执行操作610。
未完成遍历的光线的寿命可增加“1”。
在操作660,TRV单元100可更新TRV单元100的寿命。
TRV单元100可将完成了遍历的光线的寿命应用于更新TRV单元100的寿命的操作。TRV单元100可以使TRV单元100的寿命减去完成了遍历的光线的寿命。
在操作670,TRV单元100可确定所有的光线是否完成了遍历。当所有的光线都完成了遍历时,可终止流程。当仍然存在未完成遍历的光线时,可反复执行操作610。
以上参照图1至图5描述的技术描述可以如上应用,因此这里将省略进一步的详细描述。
图7示出根据实施例的光线分派单元330的操作方法。
下面的操作710至730可对应于前述的图5的操作510。
在操作710中,分派单元330可确定是否存在从光线产生单元310输入的光线。当不存在输入光线时,可反复执行操作710。相反,当存在输入光线时,可执行操作720。
在操作720,光线分派单元330可从多个TRV单元中选择TRV单元对输入光线进行遍历处理。以上参照图5描述的方法可应用于操作720。
在操作730,光线分派单元330可将输入光线发送到选择的TRV单元。
以上参照图1至图6描述的技术描述可以如上应用,因此这里将省略进一步的详细描述。
图8示出根据实施例的光线仲裁单元350的操作方法。
下面的操作810至850可对应于前述的图5的操作550。
在操作810,光线仲裁单元350可确定是否存在从多个TRV单元输入的光线。当不存在输入光线时,可重复执行操作810。相反,当存在输入光线时,可执行操作820。
在操作820,光线仲裁单元350可确定是否输入了多条光线。当输入了多条光线时,可执行操作830。相反,当没有输入多条光线时,可执行操作840。
在操作830,光线仲裁单元350可从多条输入光线中选择将被优选处理的光线。这里,以上参照图5描述的方法可应用于操作830。选择的光线可被处理为操作850的输入光线。
在操作840,光线仲裁单元350可从多个IST单元中选择IST单元对输入光线进行相交测试处理。这里,以上参照图5描述的方法可被应用于操作840。
在操作850,光线仲裁单元350可将输入光线发送到选择的IST单元。
以上参照图1至图7描述的技术描述可以如上应用,因此这里将省略进一步的详细描述。
根据上述方法,可在包括多个TRV单元和多个IST单元的光线跟踪硬件中增强管道之间的操作负载平衡。
根据上述实施例的光线处理方法可被记录在包括用于执行由计算机实施的各种操作的程序指令的非暂时性计算机可读介质中。上述介质还可单独或组合地包括程序指令、数据文件、数据结构等。非暂时性计算机可读介质的示例包括:磁介质,诸如硬盘、软盘和磁带;光介质,诸如CD ROM盘和DVD;磁光介质,诸如光盘;被专门配置为存储和执行程序指令的硬件装置,诸如只读存储器(ROM)、随机存取存储器(RAM)、闪存等。程序指令的示例包括诸如由编译器产生的机器代码和包含可由计算机使用解释器执行的更高级的代码的文件两者。上述硬件装置可被配置为作为一个或多个软件模块以执行上述实施例的操作,反之亦然。在此描述的一个或多个软件模块可由单元唯一的专用处理器执行,或者可由一个或多个模块通用的处理器执行。可在通用计算机或处理器上执行描述的方法,或者可在诸如在此描述的设备的特定机器上执行描述的方法。
虽然已经示出和描述了实施例,但是本领域技术人员应理解,在不脱离本公开的原理和精神的情况下,可对这些实施例进行改变,本公开的范围由权利要求及其等同物限定。
Claims (19)
1.一种光线处理方法,包括:
基于多个遍历单元中的每个遍历单元的状态从所述多个遍历单元中选择遍历单元对输入光线的遍历进行处理;
使用选择的遍历单元对输入光线的遍历进行处理,
其中,所述多个遍历单元中的每个遍历单元的寿命基于由所述多个遍历单元中的每个遍历单元处理的一条或多条光线中的每条光线的状态被确定。
2.如权利要求1所述的方法,其中,基于所述多个遍历单元中的每个遍历单元的寿命从所述多个遍历单元中选择遍历单元。
3.如权利要求2所述的方法,其中:
基于由所述多个遍历单元中的每个遍历单元处理的一条或多条光线中的每条光线的寿命确定所述多个遍历单元中的每个遍历单元的寿命,
基于所述多个遍历单元对所述一条或多条光线中的每条光线的遍历进行反复处理的次数确定所述一条或多条光线中的每条光线的寿命。
4.如权利要求2所述的方法,其中,所述多个遍历单元中的每个遍历单元的寿命是由所述多个遍历单元中的每个遍历单元处理的所述一条或多条光线的寿命的和。
5.如权利要求2所述的方法,其中,所述多个遍历单元中的每个遍历单元的寿命是由所述多个遍历单元中的每个遍历单元处理的一条或多条光线的平均寿命。
6.如权利要求1所述的方法,其中,选择的遍历单元是所述多个遍历单元中的在输入缓冲器内具有最少数量的光线的遍历单元中的具有最长寿命的遍历单元。
7.如权利要求1所述的方法,其中:
反复执行所述对遍历的处理,
当每执行所述对遍历的处理一次时,输入光线的寿命增加“预定值”。
8.如权利要求1所述的方法,还包括:
从多个相交测试单元中选择相交测试单元对输入光线的相交测试进行处理;
使用选择的相交测试单元对输入光线的相交测试进行处理。
9.一种光线跟踪设备,包括:
多个遍历单元,对光线的遍历进行处理;
光线分派单元,基于所述多个遍历单元中的每个遍历单元的状态从所述多个遍历单元中选择遍历单元对输入光线的遍历进行处理;
其中,选择的遍历单元对输入光线的遍历进行处理,基于由所述多个遍历单元中的每个遍历单元处理的一条或多条光线中的每条光线的状态来确定所述多个遍历单元中的每个遍历单元的状态。
10.如权利要求9所述的光线跟踪设备,其中,光线分派单元基于所述多个遍历单元中的每个遍历单元的寿命从所述多个遍历单元中选择遍历单元。
11.如权利要求10所述的光线跟踪设备,其中:
基于由所述多个遍历单元中的每个遍历单元处理的一条或多条光线中的每条光线的寿命来确定所述多个遍历单元中的每个遍历单元的寿命,
基于由所述多个遍历单元对所述一条或多条光线中的每条光线的遍历进行反复处理的次数来确定所述一条或多条光线中的每条光线的寿命。
12.如权利要求10所述的光线跟踪设备,其中,所述多个遍历单元中的每个遍历单元的寿命是由所述多个遍历单元中的每个遍历单元处理的所述一条或多条光线的寿命的和。
13.如权利要求10所述的光线跟踪设备,其中,所述多个遍历单元中的每个遍历单元的寿命是由所述多个遍历单元中的每个遍历单元处理的一条或多条光线的平均寿命。
14.如权利要求9所述的光线跟踪设备,其中,光线分派单元从所述多个遍历单元中的在输入缓冲器内具有最少数量的光线的遍历单元中选择具有最长寿命的遍历单元,作为将对输入光线的遍历进行处理的遍历单元。
15.如权利要求9所述的光线跟踪设备,其中:
所述多个遍历单元反复对输入光线的遍历进行处理,
当每对输入光线的遍历进行处理一次时,输入光线的寿命增加“预定值”。
16.如权利要求9所述的光线跟踪设备,还包括:
多个相交测试单元,对光线的相交测试进行处理;
光线仲裁单元,从所述多个相交测试单元中选择相交测试单元对输入光线的相交测试进行处理,
其中,被选择的相交测试单元对输入光线的相交测试进行处理。
17.一种光线处理设备,包括:
处理器,控制一个或多个处理器可执行单元;
光线跟踪单元,基于已经被输入到多个遍历单元中的各个遍历单元的每条光线的寿命将寿命分配到所述各个遍历单元;
光线分派单元,基于由光线跟踪单元分配到所述多个遍历单元中的遍历单元的寿命从所述多个遍历单元中选择一个遍历单元,并将光线输入到所述选择的遍历单元。
18.如权利要求17所述的设备,其中,光线跟踪单元基于已经被输入到遍历单元的所有光线的累积年龄将所述状态分配到遍历单元。
19.如权利要求17所述的设备,其中,光线跟踪单元基于已经被输入到遍历单元的所有光线的平均年龄将所述状态分配到遍历单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2012-0080547 | 2012-07-24 | ||
KR1020120080547A KR102042539B1 (ko) | 2012-07-24 | 2012-07-24 | 레이 트레이싱 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103578130A true CN103578130A (zh) | 2014-02-12 |
CN103578130B CN103578130B (zh) | 2018-03-09 |
Family
ID=48832821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310312590.7A Active CN103578130B (zh) | 2012-07-24 | 2013-07-24 | 用于光线跟踪的方法和设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9779537B2 (zh) |
EP (1) | EP2690599B1 (zh) |
JP (1) | JP6246515B2 (zh) |
KR (1) | KR102042539B1 (zh) |
CN (1) | CN103578130B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109255829A (zh) * | 2017-07-13 | 2019-01-22 | 想象技术有限公司 | 用于光线跟踪的混合层级 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102219289B1 (ko) | 2014-05-27 | 2021-02-23 | 삼성전자 주식회사 | 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 |
US10043303B2 (en) * | 2016-03-30 | 2018-08-07 | Intel IP Corporation | Methods and apparatus for more efficient ray tracing of instanced geometry |
US10332303B2 (en) * | 2016-04-26 | 2019-06-25 | Imagination Technologies Limited | Dedicated ray memory for ray tracing in graphics systems |
CN113034338B (zh) * | 2019-12-24 | 2023-03-17 | 深圳市海思半导体有限公司 | 一种用于gpu的bvh构造方法、装置及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090049452A1 (en) * | 2007-08-13 | 2009-02-19 | Kriegel Jon K | Spawned Message State Determination |
CN101826215A (zh) * | 2010-04-19 | 2010-09-08 | 浙江大学 | 实时二级光线跟踪的并行渲染方法 |
CN102053258A (zh) * | 2010-12-15 | 2011-05-11 | 中国石油集团川庆钻探工程有限公司 | 基于复杂地质构造的自适应三维射线追踪方法 |
US20110170557A1 (en) * | 2010-01-08 | 2011-07-14 | Nvidia Corporation | System and Method for Traversing a Treelet-Composed Hierarchical Structure |
CN102243768A (zh) * | 2011-06-17 | 2011-11-16 | 长春理工大学 | 一种三维虚拟场景立体画面的绘制方法 |
CN102495427A (zh) * | 2011-12-10 | 2012-06-13 | 北京航空航天大学 | 一种基于隐式模型表达的界面感知射线追踪方法 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11353496A (ja) | 1998-06-10 | 1999-12-24 | Ken Nishimura | 光線追跡のための交点探索装置 |
JP2001034783A (ja) | 1999-07-16 | 2001-02-09 | Victor Co Of Japan Ltd | 画像データ処理装置 |
US6466227B1 (en) | 1999-09-01 | 2002-10-15 | Mitsubishi Electric Research Laboratories, Inc. | Programmable architecture for visualizing sampled and geometry data |
US6556200B1 (en) | 1999-09-01 | 2003-04-29 | Mitsubishi Electric Research Laboratories, Inc. | Temporal and spatial coherent ray tracing for rendering scenes with sampled and geometry data |
JP4352990B2 (ja) | 2004-05-17 | 2009-10-28 | 日本ビクター株式会社 | 3次元画像生成システム |
US7830379B2 (en) * | 2006-09-19 | 2010-11-09 | Caustic Graphics, Inc. | Architectures for parallelized intersection testing and shading for ray-tracing rendering |
KR100889602B1 (ko) | 2006-12-05 | 2009-03-20 | 한국전자통신연구원 | 광선 추적을 위한 광선-삼각형 충돌 처리 방법 및 장치 |
US8237711B2 (en) | 2007-11-19 | 2012-08-07 | Caustic Graphics, Inc. | Tracing of shader-generated ray groups using coupled intersection testing |
US7999808B1 (en) * | 2007-12-13 | 2011-08-16 | Nvidia Corporation | Parallel processing system, method, and computer program product for executing node traversal or primitive intersection |
KR100939212B1 (ko) | 2007-12-15 | 2010-01-28 | 한국전자통신연구원 | 광선 집합을 이용한 병렬 광선 추적 방법 및 시스템 |
KR100924122B1 (ko) | 2007-12-17 | 2009-10-29 | 한국전자통신연구원 | 픽셀 단위 처리 요소 기반의 광선 추적 장치 및 방법 |
CN104112291B (zh) * | 2008-03-21 | 2017-03-29 | 想象技术有限公司 | 用于光线追踪渲染的并行相交测试及着色的架构 |
US8217935B2 (en) | 2008-03-31 | 2012-07-10 | Caustic Graphics, Inc. | Apparatus and method for ray tracing with block floating point data |
US9269182B2 (en) * | 2008-09-05 | 2016-02-23 | Nvidia Corporation | System and method for identifying entry points of a hierarchical structure |
US8963918B2 (en) | 2008-09-30 | 2015-02-24 | Microsoft Corporation | Ray tracing on graphics hardware using kd-trees |
US8350846B2 (en) | 2009-01-28 | 2013-01-08 | International Business Machines Corporation | Updating ray traced acceleration data structures between frames based on changing perspective |
KR101004110B1 (ko) * | 2009-05-28 | 2010-12-27 | 주식회사 실리콘아츠 | 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩 |
KR20110059037A (ko) | 2009-11-27 | 2011-06-02 | 삼성전자주식회사 | 멀티 레벨 커널을 사용하는 레이 트레이싱 장치 및 방법 |
US8189001B2 (en) | 2010-01-04 | 2012-05-29 | Adshir Ltd. | Method and apparatus for parallel ray-tracing employing modular space division |
US8619078B2 (en) | 2010-05-21 | 2013-12-31 | International Business Machines Corporation | Parallelized ray tracing |
US8692825B2 (en) * | 2010-06-24 | 2014-04-08 | International Business Machines Corporation | Parallelized streaming accelerated data structure generation |
KR101705581B1 (ko) * | 2010-09-30 | 2017-02-22 | 삼성전자주식회사 | 데이터 처리 장치 및 방법 |
-
2012
- 2012-07-24 KR KR1020120080547A patent/KR102042539B1/ko active IP Right Grant
-
2013
- 2013-07-23 JP JP2013152912A patent/JP6246515B2/ja active Active
- 2013-07-24 CN CN201310312590.7A patent/CN103578130B/zh active Active
- 2013-07-24 US US13/949,818 patent/US9779537B2/en active Active
- 2013-07-24 EP EP13177787.2A patent/EP2690599B1/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090049452A1 (en) * | 2007-08-13 | 2009-02-19 | Kriegel Jon K | Spawned Message State Determination |
US20110170557A1 (en) * | 2010-01-08 | 2011-07-14 | Nvidia Corporation | System and Method for Traversing a Treelet-Composed Hierarchical Structure |
CN101826215A (zh) * | 2010-04-19 | 2010-09-08 | 浙江大学 | 实时二级光线跟踪的并行渲染方法 |
CN102053258A (zh) * | 2010-12-15 | 2011-05-11 | 中国石油集团川庆钻探工程有限公司 | 基于复杂地质构造的自适应三维射线追踪方法 |
CN102243768A (zh) * | 2011-06-17 | 2011-11-16 | 长春理工大学 | 一种三维虚拟场景立体画面的绘制方法 |
CN102495427A (zh) * | 2011-12-10 | 2012-06-13 | 北京航空航天大学 | 一种基于隐式模型表达的界面感知射线追踪方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109255829A (zh) * | 2017-07-13 | 2019-01-22 | 想象技术有限公司 | 用于光线跟踪的混合层级 |
CN109255829B (zh) * | 2017-07-13 | 2023-09-12 | 想象技术有限公司 | 生成分层加速结构并进行相交测试的方法、光线跟踪系统 |
Also Published As
Publication number | Publication date |
---|---|
US20140028666A1 (en) | 2014-01-30 |
CN103578130B (zh) | 2018-03-09 |
JP6246515B2 (ja) | 2017-12-13 |
JP2014026652A (ja) | 2014-02-06 |
US9779537B2 (en) | 2017-10-03 |
KR102042539B1 (ko) | 2019-11-08 |
EP2690599A3 (en) | 2017-07-12 |
EP2690599B1 (en) | 2021-10-06 |
KR20140014487A (ko) | 2014-02-06 |
EP2690599A2 (en) | 2014-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103106120B (zh) | 具有冲量传播的多线程物理引擎的电路装置、系统及其方法 | |
JP5740704B2 (ja) | レイトレース・レンダリングのための並列化された交差テストおよびシェーディングのアーキテクチャ | |
EP2698768B1 (en) | Method and apparatus for graphic processing using parallel pipeline | |
JP5756940B2 (ja) | レイトレーシングによるレンダリングシステムおよび方法 | |
CN110008009B (zh) | 在运行时绑定常量以提高资源利用率 | |
CN101506847B (zh) | 用于划分空间索引的方法和系统 | |
KR20140036519A (ko) | 레이 추적의 스케쥴링을 위한 장치 및 방법 | |
CN101165721B (zh) | 光线跟踪的方法和系统 | |
US20080192044A1 (en) | Deferred Acceleration Data Structure Optimization for Improved Performance | |
CN103578130A (zh) | 用于光线跟踪的方法和设备 | |
CN101490715A (zh) | 具有最小存储器带宽要求的优化的光线编历算法的高速缓存利用 | |
CN108205819A (zh) | 用于通过复杂照明下路径追踪进行场景渲染的设备及方法 | |
JP2012089121A (ja) | 仮想環境のポイントにおいて受光された光の量の推定方法 | |
CN103871019A (zh) | 优化三角形拓扑用于路径渲染 | |
CN103870213A (zh) | 经由管线化的状态包触发性能事件捕获 | |
US11908064B2 (en) | Accelerated processing via a physically based rendering engine | |
US9805497B2 (en) | Collision-culling of lines over polygons | |
JP2019046080A (ja) | 情報処理装置、方法及びプログラム | |
US20230118972A1 (en) | Scalable parallel construction of bounding volume hierarchies | |
US11830123B2 (en) | Accelerated processing via a physically based rendering engine | |
US20230334762A1 (en) | Accelerated processing via a physically based rendering engine | |
GB2607993A (en) | Accelerated processing via a physically based rendering engine | |
CN115345770A (zh) | 经由基于物理的渲染引擎的加速处理 | |
KR20070061248A (ko) | 그래픽 시스템에서의 충돌정보 처리 장치 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |