CN101490715A - 具有最小存储器带宽要求的优化的光线编历算法的高速缓存利用 - Google Patents
具有最小存储器带宽要求的优化的光线编历算法的高速缓存利用 Download PDFInfo
- Publication number
- CN101490715A CN101490715A CNA200780027168XA CN200780027168A CN101490715A CN 101490715 A CN101490715 A CN 101490715A CN A200780027168X A CNA200780027168X A CN A200780027168XA CN 200780027168 A CN200780027168 A CN 200780027168A CN 101490715 A CN101490715 A CN 101490715A
- Authority
- CN
- China
- Prior art keywords
- node
- light
- spatial index
- bounded volume
- traversal
- 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
- 238000000034 method Methods 0.000 claims abstract description 41
- 238000003860 storage Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims 1
- 238000013507 mapping Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 106
- 238000012360 testing method Methods 0.000 description 35
- 230000011218 segmentation Effects 0.000 description 16
- 238000010276 construction Methods 0.000 description 11
- 230000014509 gene expression Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000005520 cutting process Methods 0.000 description 4
- 230000002950 deficient Effects 0.000 description 4
- 238000005304 joining Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 239000003086 colorant Substances 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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/50—Lighting effects
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施例提供用于记录光线通过空间索引结构的遍历历史并利用记录的遍历历史的方法和设备。图像处理系统可以首先确定当光线遍历通过空间索引时其与哪些节点相交。当光线遍历空间索引时,可以记录节点相交确定的结果,并且记录的确定可以与光线相关联。此外,图像处理系统可以基于射中对应于构成空间索引的节点的基元的某一概率,来确定遍历路径。该遍历路径还可以被记录并与光线相关联。如果图像处理系统需要在以后重新遍历空间索引,那么记录的遍历历史可以用于免除重新计算光线-节点相交的需要,并消除不正确的遍历路径确定。
Description
技术领域
本发明的实施例总体涉及图像处理领域。
背景技术
从三维场景再现二维图像的处理通常被称为图像处理。随着现代计算机行业的发展,图像处理也向前发展。在图像处理发展中的一个具体的目标是使三维场景的二维模拟或再现尽可能真实。再现真实的图像的一个限制在于现代监视器通过使用像素来显示图像。
像素是能够在监视器上被照亮的最小的空间区域。大多数现代计算机监视器会使用数十万或数百万的像素的组合来组成整个显示器或再现的场景。各个像素排列在网格图形中并共同覆盖监视器的整个观看区域。各个像素中的每一个都可以被照亮以再现用于观看的最终图片。
用于利用像素将真实世界的三维场景再现到二维监视器上的一种技术被称为栅格化。栅格化是将二维图像以矢量格式(场景内的几何物体的数学表示)表示,并将图像转换为用于在监视器上显示的各个像素的处理。栅格化在快速再现图形以及利用相对较少量的计算能力方面是有效的;但是,栅格化也存在一些缺陷。例如,栅格化通常有着缺乏真实性的缺陷,因为栅格化没有基于光的物理属性,而是基于投射到二维平面上的场景中的三维几何物体的形状。此外,利用栅格化再现场景要求的计算能力直接与要再现的场景的复杂度的增加成比例。随着图像处理变得越真实,再现的场景也变得越复杂。因而,栅格化随着图像处理的发展而遭受着缺陷,因为栅格化与复杂度直接成比例。
用于利用像素将真实世界的三维场景再现到二维监视器上的另一种技术被称为光线追踪。光线追踪技术追踪进入到要在计算机屏幕上再现的三维场景中的虚构的光线的传播,所述光线的行为类似于光的光线。光线从坐在计算机屏幕后面的观看者的眼睛发出,并穿过构成计算机屏幕的像素,通向三维场景。每个被追踪的光线进入到场景中并且可以与场景中的物体相交。如果光线与场景中的物体相交,那么物体的属性和几个其他的影响因素用于计算颜色和光的数量,或者如果缺乏物体,则暴露光线。这些计算然后被用于确定被追踪的光线从其穿过的像素的最终颜色。
对单个场景执行多次追踪光线处理。例如,可以对显示器中的每个像素追踪单个光线。一旦已经追踪到足够数量的光线用以确定构成计算机屏幕的二维显示器的所有像素的颜色,那么三维场景的二维合成就能够显示在观看者的计算机屏幕上。
光线追踪通常比栅格化更真实地再现真实世界的三维场景。这部分由于光线追踪模拟光如何在真实世界环境中传播和行为,而不是如栅格化所做的那样简单地将三维形状投射到二维平面上的事实。因而,利用光线追踪再现的图形更精确地在显示器上描述我们的眼睛在真实世界中习惯看到的情景。
此外,当场景变得更加复杂时,相比于栅格化光线追踪也能够更好地处理场景复杂度增加的问题。光线追踪与场景复杂度成对数关系。这是因为既便场景变得更加复杂,也还是相同数量的光线被投射到场景中的事实。因而,光线追踪不会像栅格化所做的那样当场景变得更加复杂时,遭受计算能力要求方面的缺陷。
光线追踪的一个主要缺点在于大量的计算,以及因此产生的再现场景所需要的处理能力。这在需要快速再现时导致一些问题。例如,当在诸如游戏机中为动画的目的,图像处理系统要再现图形时。由于光线追踪的增加的计算要求,难以足够快地再现动画,使得看起来真实(真实的动画每秒接近二十到二十四帧)。
因此,需要更有效的技术和装置来执行光线追踪。
发明内容
本发明的实施例总体提供用于执行光线追踪的方法和设备。
根据本发明的第一方面,提供一种利用具有定义三维场景的有界体积(bounded volume)的节点的空间索引的光线追踪的方法。所述方法通常包括:生成进入场景中的光线;通过采取来自内部节点的分支直到到达叶节点来遍历空间索引,其中,基于光线是否与由节点定义的有界体积相交来采取分支;记录指示一个或多个定义光线与之相交的有界体积的节点和当对空间索引进行遍历时采取的分支的遍历历史;确定光线是否命中由叶节点定义的有界体积内包含的基元(primitive);以及如果光线没有命中由叶节点定义的有界体积内包含的基元,那么利用记录的遍历历史重新遍历空间索引。
根据本发明的第二方面,提供包括程序的计算机可读介质,当所述程序运行时,执行用于利用具有定义三维场景的有界体积的节点的空间索引进行光线追踪的操作。操作通常包括:生成进入场景中的光线;通过采取来自内部节点的分支直到到达叶节点来遍历空间索引,其中,基于光线是否与由节点定义的有界体积相交来采取分支;记录指示一个或多个定义光线与之相交的有界体积的节点和当对空间索引进行遍历时采取的分支的遍历历史;确定光线是否命中由叶节点定义的有界体积内包含的基元;以及如果光线没有命中由叶节点定义的有界体积内包含的基元,那么利用记录的遍历历史重新遍历空间索引。
根据本发明的第三方面,提供一种系统。所述系统通常包括具有定义三维场景的有界体积的节点的空间索引;以及第一处理元件,其中,第一处理元件通常被配置为:生成进入场景中的光线;通过采取来自内部节点的分支直到到达叶节点来遍历空间索引,其中,基于光线是否与由节点定义的有界体积相交来采取分支;记录指示一个或多个定义光线与之相交的有界体积的节点和当对空间索引进行遍历时采取的分支的遍历历史;确定光线是否命中由叶节点定义的有界体积内包含的基元;以及如果光线没有命中由叶节点定义的有界体积内包含的基元,那么利用记录的遍历历史重新遍历空间索引。
附图说明
现在将参考下文中的附图,仅以示例的形式,描述本发明的优选实施例。
图1示出根据本发明的一个实施例的多核心处理元件。
图2示出根据本发明的一个实施例的多核心处理元件网络。
图3是根据本发明的一个实施例的要由图像处理系统再现的示例性三维场景。
图4A-4C根据本发明的一个实施例,示出要由图像处理系统再现的二维空间以及由图像处理系统创建的对应的空间索引。
图5根据本发明的一个实施例,示出空间索引和用于存储光线通过空间索引的遍历历史的对应的数据结构。
图6和图7是根据本发明的一个实施例,示出用于遍历空间索引的方法的流程图。
图8是根据本发明的一个实施例的要由图像处理系统再现的示例性二维空间。
图9A-9G根据本发明的一个实施例,示出光线通过空间索引的遍历。
具体实施方式
本发明的实施例提供用于记录光线通过空间索引结构的遍历历史以及利用记录的光线通过空间索引的遍历历史的技术和系统。图像处理系统可以首先确定当光线遍历通过空间索引时,光线与哪些节点相交。当光线遍历空间索引时,可以记录节点相交确定的结果,并且该记录的确定可以与光线相关联。此外,图像处理系统可以基于射中对应于构成空间索引的节点的基元的某一概率,确定遍历路径。这个遍历路径也可以被记录并与光线相关联。如果图像处理系统需要在以后重新遍历空间索引,那么记录的遍历历史可用于消除重新计算光线-节点相交的需要,并消除不正确的遍历路径确定。
在下文中,将参考本发明的一些实施例。但是应当理解,本发明不限于特定描述的实施例。相反,下文中的特征和要素的任何组合,无论是否涉及到不同的实施例,都构思用于实现和实施本发明。此外,在各种实施例中,本发明提供相对于现有技术的多种优点。但是,尽管本发明的实施例可以实现相对于其他可能的技术方案和/或相对于现有技术的优点,无论特定的优点是否通过给定的实施例来实现,都不能构成对本发明的限制。因而,除了在权利要求中明确表述以外,下文中的多个方面、特征、实施例以及优点都仅仅是示意性的,并且不能认为是附属权利要求的要素或限制。同样,除了在权利要求中明确表述以外,对“本发明”的引用不应当被解释为对本文公开的任何发明性主题的概括,并且不应当被认为是附属权利要求的要素或限制。
示例性处理器布局和通信网络
图1根据本发明的一个实施例,示出多核心处理元件100。多核心处理元件100包括多个基本吞吐量引擎105(BTE)。BTE105可以包括多个处理线程和核心高速缓存(例如,L1高速缓存)。位于每个BTE中的处理线程可以访问共享的多核心处理元件高速缓存110(例如,L2高速缓存)。
BTE105还可以访问多个接收箱115。接收箱115可以是存储器映射的地址空间。接收箱115可以被映射到位于每个BTE105中的处理线程。位于BTE中的每个线程可以具有存储器映射的接收箱并可以访问所有其他的存储器映射的接收箱115。接收箱115构成由BTE105使用的低等待时间和高带宽的通信网络。
BTE可以使用接收箱115作为网络以进行相互通信并在BTE之间重新分配数据处理工作。在一些实施例中,可以在通信网络中使用独立的待发箱,例如,用于接收BTE105处理的结果。在其他实施例中,接收箱115还可以用作待发箱,例如,一个BTE105将处理功能的结果直接写入将使用该结果的另一个BTE105的接收箱中。
图像处理系统的总体性能依赖于BTE能够多好地分割并重新分配工作。接收箱115的网络可用于收集工作并向其他BTE分配工作,而不会用不具有帧对帧一致性的BTE通信数据分组来破坏共享的多核心处理元件高速缓存110。能够每帧再现数百万个三角形的图像处理系统可以包括以这种方式连接的BTE105。
在本发明的一个实施例中,可以向工作负荷管理器分配一个BTE105的线程。图像处理系统可以使用各种软件和硬件组件来从三维场景再现二维图像。根据本发明的一个实施例,图像处理系统可以使用工作负荷管理器用于以图像处理系统发出的光线遍历空间索引。如参考附图4在下文中进一步描述的,空间索引可以实现为用于将相对较大的三维场景划分为较小的有界体积的树类型数据结构。使用用于图像处理的光线追踪方法的图像处理系统可以使用空间索引以快速确定光线-有界体积相交。在本发明的一个实施例中,工作负荷管理器可以利用空间索引执行光线-有界体积相交测试。
在本发明的一个实施例中,多核心处理元件100上的多核心处理元件的BTE105的其他线程可以是矢量吞吐量引擎。在工作负荷管理器确定光线-有界体积相交以后,工作负荷管理器可以通过接收箱115发出(发送)光线到多个矢量吞吐量引擎中的其中一个。然后,矢量吞吐量引擎可以确定光线是否与包含在有界体积中的基元相交。矢量吞吐量引擎还可以执行与确定光线从其穿过的像素的颜色相关的操作。
图2根据本发明的一个实施例,示出多核心处理元件200的网络。图2还示出本发明的一个实施例,其中,多核心处理元件100的其中一个BTE的线程是工作负荷管理器205。根据本发明的一个实施例,多核心处理元件200的网络中的每个多核心处理元件2201-N可以包括一个工作负荷管理器2051-N。根据本发明的一个实施例,多核心处理元件200的网络中的每个处理器220还可以包括多个矢量吞吐量引擎210。
根据本发明的一个实施例,工作负荷管理器2201-N可以使用高速总线225与其他工作负荷管理器2201-N和/或其他多核心处理元件220的矢量吞吐量引擎210进行通信。每个矢量吞吐量引擎210可以使用高速总线225与其他矢量吞吐量引擎210或工作负荷管理器205进行通信。工作负荷管理器处理器205可以使用高速总线225来收集图像处理相关的任务并将该任务分配给其他工作负荷管理器处理器205,和/或将该任务分配给其他矢量吞吐量引擎210。高速总线225的使用可以允许工作负荷管理器2051-N进行通信,而不会用与工作负荷管理器205的通信相关的数据分组影响高速缓存230。
示例性三维场景
图3是由图像处理系统再现的示例性三维场景305。在三维场景305中可以有物体320。图3中的物体320具有不同的几何形状。尽管在图3中只示出四个物体320,但在典型的三维场景中的物体数量可以更多或更少。通常,三维场景会具有比图3中示出的物体多许多的物体。
如图3所示,物体具有不同的几何形状和大小。例如,图3中的一个物体是棱锥体320A。图3中的其他物体是盒形体320B-D。在许多现代图像处理系统中,物体经常被分解成较小的几何形状(例如,方形、圆形、三角形等)。较大的物体然后由多个较小的简单几何形状来表示。这些较小的几何形状通常被称为基元。
在场景305中还示出光源325A-B。光源可以照亮位于场景305中的物体320。此外,根据光源325和物体320在场景305中的位置,光源可以将阴影投射到场景305中的物体上。
三维场景305可以由图像处理系统再现在二维图片中。图像处理系统还可以使二维图片显示在监视器310上。监视器310可以使用不同颜色的多个像素330来再现最终的二维图片。
图像处理系统用于将三维场景320再现成二维图片的一种方法被称为光线追踪。光线追踪通过由图像处理系统从观看者315的角度“发出”或“发射”光线进入三维场景320中来实现。光线具有类似于光的光线的属性和行为。
在观看者315的位置发出并穿过三维场景305的一个光线340能够在图3中被看到。当光线340从观看者315穿过三维场景305时,光线340穿过其中将由图像处理系统再现最终二维图片的平面。在图3中,该平面由监视器310表示。光线340穿过平面或者监视器310的点由像素335表示。
如前简述,大多数图像处理系统使用数以千计(如果不是数以百万计)的像素的网格330来在监视器310上再现最终场景。各个像素中的每一个可以显示不同的颜色以在监视器310上再现最终合成的二维图片。利用光线追踪图像处理方法从三维场景再现二维图片的图像处理系统将计算发出的光线在三维场景中遇到的颜色。然后,图像处理场景将光线遇到的颜色分配给光线从观看者到三维场景途经的路径上从其中穿过的像素。
每个像素的发出光线的数量可以变化。一些像素可以具有对于要再现的特定场景的多个发出的光线。在这种情况下,像素的最终颜色由从为该像素发出的所有光线的每个颜色的影响来确定。其他像素可以只具有单个发出光线来确定在二维图片中的像素的结果颜色。一些像素可以不具有由图像处理系统发出的任何光线,在这种情况下,它们的颜色可以由图像处理系统中的算法来确定、估计或分配。
为了确定二维图片中像素335的最终颜色,图像处理系统必须确定光线340是否与场景中的物体相交。如果光线没有与场景中的物体相交,那么它可以被分配默认的背景颜色(例如,蓝色或黑色,表示白天或晚上的天空)。相反,当光线340穿过三维场景时,光线340可能射中物体。当光线射中场景中的物体时,物体的颜色可以被分配给光线从其穿过的像素。但是,物体的颜色必须在其分配给像素之前被确定。
许多因素可以影响原始光线340射中的物体的颜色。例如,三维场景中的光源可以照亮物体。此外,物体的物理属性可以影响物体的颜色。例如,如果物体是反射光的或者是透明的,那么其他非光源物体也可以影响该物体的颜色。
为了确定来自三维场景中的其他物体的影响,可以从原始光线340与物体的相交点发出第二光线。例如,第二光线的一种类型可以是阴影光线。阴影光线可用于确定光对原始光线340与物体相交的点的影响。第二光线的另一种类型可以是透射光线。透射光线可用于确定什么颜色或者光可以透射通过物体的实体。此外,第二光线的第三种类型可以是反射光线。反射光线可用于确定将什么颜色或光反射到物体上。
如上所述,第二光线的一种类型可以是阴影光线。可以从原始光线与物体的相交点到三维场景305中的光源对每一个阴影光线进行追踪。如果光线到达光源而没有在光线到达光源之前与另一个物体相遇,那么光源将在原始光线射中物体的点照亮原始光线射中的物体。
例如,阴影光线341A可以从原始光线340与物体320A相交的点发出,并向着光源325A的方向穿过。阴影光线341A到达光源325A,而不与场景305中的任何其他物体320相遇。因而,光源325A将在原始光线340与物体320A相交的点上照亮物体320A。
其他阴影光线可以在原始光线射中物体的点与被三维场景中的另一个物体阻挡的光源之间具有其路径。如果阻隔原始光线射中的物体上的点与光源之间的路径的物体是不透明的,那么光源将不会在原始光线射中物体的点上照亮物体。因而,光源不会影响原始光线的颜色,并且因此也不会影响在二维图片中再现的像素的颜色。但是,如果物体是半透明的或者透明的,那么光源可以在原始光线射中物体的点上照亮物体。
例如,阴影光线341B可以从原始光线340与物体320A相交的点发出,并可以向光源325B方向穿过。在该例中,物体320D阻挡阴影光线341B的路径。如果物体320D不透明,那么光源325B将不会在原始光线340与物体320A的相交点上照亮物体320A。但是,如果物体320D半透明或透明,那么光源325B可以在原始光线340与物体320A的相交点上照亮物体320A。
第二光线的另一个类型是透射光线。如果与原始光线相交的物体具有透明或者半透明的属性(例如,玻璃),那么透射光线可以由图像处理系统发出。透射光线以相对于原始光线射中物体的角度的角度穿过物体。例如,透射光线344被观察到穿过与原始光线340相交的物体320A。
第二光线的另一个类型是反射光线。如果与原始光线相交的物体具有反射属性(例如,金属饰面),那么,反射光线将由图像处理系统发出以确定什么颜色或光可以被物体反射。反射的光线以相对于原始光线与物体相交的角度的角度从物体穿离。例如,反射的光线343可以由图像处理系统发出以确定什么颜色或光可以被与原始光线340相交的物体320A反射。
所有的第二光线(例如,阴影光线、透射光线、反射光线等)的颜色和光的总的影响将产生原始光线从其穿过的像素的最终颜色。
示例性kd-树
执行光线追踪时遇到的一个问题是快速和有效地确定发出的光线是否与要再现的场景内的任何物体相交。本领域技术人员公知的一种使光线相交确定更加高效的方法是使用空间索引。空间索引将三维场景或三维世界划分成可能包括或不包括基元的较小的体积(相对于整个三维场景较小)。图像处理系统然后能够使用这些较小的体积的已知边界来确定光线是否可以与包含在较小的体积内的基元相交。如果光线确实与包括基元的体积相交,那么能够使用光线对包含在该体积内的基元的已知位置和维度的轨迹来进行光线相交测试。如果光线没有与特定体积相交,那么不需要对包含在该体积内的基元进行光线-基元相交测试。此外,如果光线与没有包括基元的有界体积相交,那么不需要对该有界体积进行光线-基元相交测试。因而,通过降低可能必要的光线-基元相交测试的次数,空间索引的使用大大提高光线追踪图像处理系统的性能。不同的空间索引加速数据结构的一些例子是八叉树、k维树(kd-树)以及二叉空间分割树(BSP树)。当几个不同的空间索引结构存在时,为了便于描述本发明的实施例,在下文的实施例中将使用kd-树。但是本领域技术人员将容易地认识到,本发明的实施例可以应用于任何不同类型的空间索引。
Kd-树使用与有界体积对齐的轴来将整个场景或空间分割为较小的体积。即,kd-树可以通过利用与已知轴平行的分割平面对场景包括的三维空间进行划分。分割平面将较大的空间分割成较小的有界体积。较小的有界体积合起来构成场景中的整个空间。确定将较大的有界体积分割(划分)成两个更小的有界体积可以由图像处理系统通过使用kd-树构造算法进行。
用于确定何时将有界体积分割成较小的体积的一个标准可以是包含在有界体积内的基元的数量。也就是,只要有界体积包含比预定阈值更多的基元,那么树构造算法可以通过绘制更多的分割平面来继续划分体积。用于确定何时将有界体积分割成较小的体积的另一个标准可以是包含在有界体积内的空间的数量。此外,还可以基于有多少基元可以与创建有界体积的平面相交来决定继续分割有界体积。
对场景的分割可以用由节点、分支和叶子组成的二叉树结构来表示。树中的每个内部节点可以表示相对大的有界体积,而节点可以包括到子节点的分支,所述子节点可以表示由分割平面对相对大的有界体积分割后产生的两个相对较小的分割的体积。在与轴对齐的kd-树中,每个内部节点可以只包括到其他节点的两个分支。内部节点可以包括到一个或两个叶节点的分支(即,指针)。叶节点是不进一步被再划分成较小的体积并包括到基元的指针的节点。内部节点还可以包括到被进一步再划分的其他内部节点的分支。内部节点还可以包括需要的信息用以确定沿着哪个轴绘制分割平面,以及沿着轴在什么地方绘制分割平面。
示例性有界体积
图4A-4C示出由图像处理系统再现的二维空间以及对应的kd-树。简单起见,二维场景用于描述kd-树的构建,但kd-树还可以用于表示三维场景。在图4A-4C的二维描述中,描述分割线而不是分割平面,并且描述有界区域而不是如将在三维结构中使用的有界体积。但是,本领域技术人员将很快认识到,该原理可以被容易地应用于包括物体的三维场景。
图4A示出包括要在显示在监视器310上的最终图片中再现的基元410的二维场景405。表示场景的整个体积的最大体积被包围在有界体积1(BV1)中。在对应的kd-树中,这可以由顶层节点450表示,也被称为根节点或界节点。在图像处理系统的一个实施例中,当有界体积包含例如两个以上的基元时,图像处理系统可以继续将有界体积分割为较小的有界体积。如前所述,可以基于多个因素决定继续将有界体积分割为较小的有界体积,但是为了便于说明,在本例子中只基于基元的数量来决定继续分割有界体积。如图4A所示,BV1包括六个基元,因而,kd-树构造算法可以将BV1分割为较小的有界体积。
图4B与图4A示出相同的二维场景405。但是,在图4B中树构造算法将BV1分割成两个更小的有界体积BV2和BV3。对BV1的分割是通过沿着x轴在x1点上绘制分割平面SP1 415来实现的。该BV1的分割也在kd-树中反映为在内部节点或父节点BV1 450之下的两个节点455和460,分别对应于BV2和BV3。表示BV1的内部节点现在可以存储信息,例如但不限于,到BV1之下的两个节点(如BV2和BV3)的指针,沿着哪个轴绘制分割平面(例如x轴)以及沿着轴在什么地方(如在点x1上)绘制分割平面。
Kd-树构造算法可以继续分割有界体积BV3,因为其包括多于预定阈值的基元(例如,多于两个基元)。然而,kd-树构造算法也可以不继续分割有界体积BV2,因为有界体积BV2包括小于或等于基元的数量(例如,只有两个基元410A)。没有被任何进一步分割或再划分的节点,例如BV2,被称为叶节点。
图4C与图4B示出相同的二维场景405。但是,在图4C中,kd-树构造算法将BV3分割为两个更小的有界体积BV4和BV5。Kd构造算法沿着y轴在y1点利用分割平面分割BV3。由于BV3被分割为两个子节点,它现在可以被称为内部节点。对BV3的分割也在kd-树中反映为两个叶节点465和470,分别对应于BV4和BV5。BV4和BV5是叶节点,因为它们表示的体积没有被进一步划分为较小的有界体积。两个叶节点,BV4和BV5,位于表示在kd-树中被分割的有界体积的内部节点BV3之下。
表示BV3的内部节点可以存储信息,例如但不限于,到两个叶节点(即,BV4和BV5)的指针,沿着哪个轴绘制分割平面(即,y轴)以及沿着轴在什么地方绘制分割平面(即,在y1点上)。
Kd-树构造算法现在可以停止分割有界体积,因为位于场景中的所有有界体积包含小于或等于可以被包含在有界体积中的基元的最大预定数量。叶节点可以包括到包含在每个叶子表示的有界体积内的基元的指针。例如,叶节点BV2可以包括到基元410A的指针,叶节点BV4可以包括到基元410B的指针,以及叶节点BV5可以包括到基元410C的指针。
光线追踪图像处理系统可以使用工作负荷管理器205来遍历空间索引(kd-树)。遍历kd-树可以包括选择到kd-树的较低层(子节点)上的节点的分支,以采取或前进以确定光线是否与子节点内包括的任何基元相交。工作负荷管理器205可以使用坐标和发出的光线的轨迹以在kd-树上进行遍历或导航。通过执行光线-有界体积相交测试,工作负荷管理器205可以确定光线是否与kd-树结构内的节点表示的有界体积的平面相交。如果光线与只包括基元(即,叶节点)的有界体积相交,那么工作负荷管理器205可以将光线和相关联的信息发送到矢量吞吐量引擎210,用于进行光线-基元相交测试。可以执行光线-基元相交测试,以确定光线是否与有界体积内的基元相交。相比于为光线对每个包含在场景内的基元进行光线-基元相交测试,该方法导致需要更少的光线-基元相交测试来确定光线是否与场景内的物体相交。
结果kd-树结构或者其他空间索引结构可以存储在处理器高速缓存230中。Kd-树和包括kd-树的对应数据的大小可以被优化以存储在处理器高速缓存230中。在处理器高速缓存230中存储kd-树可以允许工作负荷管理器205以已经由图像处理系统发出的光线遍历kd-树,而不一定每次当图像处理系统发出光线时都从存储器检索kd-树。
示例性kd-树和对应的节点历史数据结构
可以为空间索引(例如,kd-树)中的内部节点深度的每一层存储节点历史。节点层历史可用于存储与有界体积-光线相交测试和kd-树遍历相关的信息。通过保存先前的测试和kd-树遍历的结果,图像处理系统可以利用以前的测试结果来减少用于确定光线-基元相交所需的处理量。根据本发明的一个实施例,每一层的节点历史位都可以存储在与描述光线的信息一起(例如,附加在其上)发送的节点历史数据结构的半字节中。
图5示出根据本发明的一个实施例的示例性kd-树550以及对应的示例性节点历史数据结构545。示例性kd-树550被描述为包括八个层的内部节点深度(L1-L8)。根据本发明的一个实施例,对应的节点历史545可以包括如与kd-树550包括内部节点层(L1-L8)相同的半字节数量。因而,根据本发明的一个实施例,节点历史545可以包括八个半字节(即,32位),其可以记录光线-相交测试和kd-树遍历的历史。根据本发明的一个实施例,最高有效半字节L1可以对应于kd-树550中的第一层L1(即,根节点或界节点)以及最低有效半字节L8可以对应于kd-树550中的最低层L8。
节点历史数据结构545中的每个半字节可以包括四个位。每个半字节的两个最高有效位525可以对应于位于内部节点左下方的节点。每个半字节的两个最低有效位530可以与位于内部节点的右下方的节点相关。如果执行光线-有界体积相交测试并且光线与内部节点左下方的节点表示的有界体积相交,那么可以对每个半字节的最高有效位505进行设置(例如,设置到高电平状态,或“1”)。如果在遍历kd-树的过程中,工作负荷管理器205“采取”分支或对位于内部节点左下方的节点进行遍历,那么可以对第二最高有效位505进行设置。如在本文中所使用的,如果kd-树被沿着路径遍历到达内部节点或叶节点,那么认为该路径被“采取”过。
如果执行光线-有界体积相交测试,并且光线与位于内部节点右下方的节点表示的有界体积相交,那么可以对第三最高有效位515进行设置。如果在对kd-树550进行遍历的过程中,工作负荷管理器205“采取”分支或对位于内部节点右下方的节点进行遍历,那么可以对最低有效位520进行设置。
因而,每个层历史位的一个“半字节”是记录光线-有界体积相交测试结果以及路径是否已经被采取过所需要的全部信息。当然,为了确定在任何特定层已经到达哪个节点,需要检查前面的层上的历史位。因而,一旦在搜索具有与给定光线相交的基元的叶节点时已经采取特定层上的所有路径,那么在该层以及之下层上的节点历史位应当被清除,并应当采取更高层的不同路径。
利用节点历史的示例性kd-树遍历算法
图6是示出用于遍历kd-树的方法600的流程图。方法600在步骤605开始,此时图像处理系统发出要在三维场景中被追踪的光线。图像处理系统可以使用工作负荷管理器205执行与用发出的光线遍历kd-树相关的任务。接下来,在步骤610中,图像处理系统在根节点或者界节点开始。从根结点,图像处理系统可以前进到步骤615,其中,图像处理系统可以选择分支进行采取。
步骤615可以在图像处理系统中开始子程序,该程序根据将在下文中参考附图7详细说明的节点历史位遍历kd-树。
图7是示出根据节点历史位500遍历kd-树的方法的流程图。在步骤705开始方法700,此时图像处理系统到达内部节点(即,包括到子节点的分支的节点)。接着,在步骤710,图像处理系统可以确定是否有对应于发出的光线的节点层历史信息。如果没有,那么图像处理系统前进到步骤715,其中工作负荷管理器205可以为从当前正在被遍历的内部节点分出的节点表示的每个有界体积,执行光线-有界体积相交测试。接下来,在步骤720中,图像处理系统可以更新对应于节点层的节点层历史位。具体地说,图像处理系统可以更新“命中节点”位505和515,其表示光线是否与对应于从内部节点分出的每个节点的有界体积相交。接下来,图像处理系统可以前进到步骤725。
在步骤725中,图像处理系统可以确定由从内部节点分出的节点表示的有界体积是否都与光线相交。如果有界体积都相交,那么图像处理系统可以前进到步骤727,其中,图像处理系统可以选择到离光线的起源最近的节点的路径。但是,如果只有一个节点相交,那么在步骤729中,图像处理系统可以选择到相交的节点的路径。在步骤727和729之后,图像处理系统可以前进到步骤730。在步骤730中,图像处理系统更新节点层历史中采取的位,以反映由图像处理系统选择的路径/分支。在步骤730以后,图像处理系统在步骤735中采取选定的路径/分支。
如果在步骤710中,图像处理系统确定光线确实具有节点层历史信息,图像处理系统可以前进到步骤740。在步骤740中,图像处理系统可以确定图像处理系统先前已经确定有界体积与光线相交,但图像处理系统没有采取到该有界体积的路径/分支的最低节点深度。
已经存储节点层历史信息的光线是图像处理系统已经以其遍历空间索引(例如,kd-树)的光线,但是该光线没有与对其进行光线-基元相交测试的有界体积内的基元相交(即,发生错过的情况)。在错过以后,为了确定有界体积相交但没有被采取的最低内部节点深度,图像处理系统可以专门在节点层历史中寻找“10”的发生。图像处理系统既可以在构成节点层历史的两个最高有效位的对中,或者在构成节点层历史的两个最低有效位的位的对中寻找“10”。那两对的任何一个中的“10”表示由该节点表示的有界体积与光线相交,但是仍然要为该节点层之下的其中一个有界体积进行光线基元相交测试(即,对应的路径没有被采取)。
例如,在kd-树的特定层上,光线可以与内部节点之下的子节点表示的有界体积都相交。图像处理系统可以在对kd-树的先前的遍历中确定在内部节点右下方的子节点表示的有界体积之前,kd-树的内部节点的左下方的子节点表示的有界体积与光线相交。图像处理系统可以已经采取过左边的子节点,并且可以已经更新过历史位以显示这种遍历。
作为例子,根据本发明的一个实施例,如果每个节点层都由半个字节表示,那么对应于该内部节点层的节点历史位将是“1110”,其可以被读作:命中左节点、采取到左节点的分支、命中右节点、还没有采取到右节点的分支。内部节点右下方的子节点与光线相交,但是还没有进行光线-基元相交测试,如内部节点层历史中的“10”所表示的。
在确定其中有界体积相交但没有被采取的最低节点层历史之后,图像处理系统可以前进到步骤745。在步骤745,图像处理系统可以为其中有界体积相交但没有被采取的最低节点层之下的内部节点层清除所有的节点层历史位。该步骤确保当图像处理系统遍历kd-树时,先前为在作出不正确的遍历路径决定的点之下的分支、节点或叶节点记录的任何历史都不影响kd-树将来的遍历。
接下来,在步骤750中,图像处理系统可以根据从根节点到有界体积相交但没有采取的最低节点深度的节点层历史,遍历kd-树。步骤750可以确保图像处理系统从高速缓存230中检索到较低层上的内部节点或者到叶节点的适当的指针。接下来,在步骤755中,图像处理系统选择到还没有被图像处理系统采取的节点的路径/分支(即,其中有界体积相交但没有被采取的最低节点层的节点历史中的“10”表示的路径)。在步骤755以后,图像处理系统前进到步骤730。在步骤730,图像处理系统更新节点层历史中的采取位,以反映图像处理系统选择的路径。在步骤730以后,图像处理系统在步骤735中采取选定的路径。
在路径被采取后,图像处理系统返回到方法600。图像处理系统在步骤620上重新开始方法600。在步骤620上,图像处理系统确定采取的路径已经使得图像处理系统到达叶节点。如果不是,那么图像处理系统返回到步骤615以选择分支进行采取。
但是,如果工作负荷管理器205在步骤620中确定采取的路径使得工作负荷管理器205到达叶节点,那么工作负荷管理器205可以通过接收箱115或网络225向矢量吞吐量引擎210发送光线、光线历史数据结构以及叶节点信息(例如,到由叶节点限定的基元的指针)用于光线-基元相交测试。
矢量吞吐量引擎210可以执行光线-基元测试,以确定命中由叶节点表示的有界体积的光线是否实际命中任何包含在有界体积内的基元。如果光线确实命中有界体积内的任何基元,那么矢量吞吐量引擎210可以向光线分配颜色(例如,基元的颜色)。但是,矢量吞吐量引擎210还可以确定光线没有命中有界体积内的任何基元。
一段时间以后,矢量吞吐量引擎210返回光线以及光线是否命中或错过包含在有界体积内的基元的指示。然后,在步骤630中,图像处理系统可以确定矢量吞吐量引擎210返回的信息是否指示光线命中基元,或者信息是否指示光线错过所有包含在有界体积中的基元。
如果光线命中基元,那么图像处理系统可以将从矢量吞吐量引擎210返回的颜色分配给显示器310上光线从其穿过的像素335。图像处理系统然后可以前进以发出另一个光线以遍历kd-树或者执行其他与从三维场景再现二维图片相关的操作。
如果矢量吞吐量引擎210确定光线错过包含在有界体积中的基元,那么工作负荷管理器205可以返回到步骤610。在步骤610中,工作负荷管理器205可以从根节点开始再次遍历kd-树,光线历史帮助避免再次进行不必要的光线-有界体积相交测试,并避免遍历树至指向具有与给定光线没有相交的基元的叶节点的路径。
Kd-树遍历的例子
图8示出已经分割为有界体积(BV1-BV5)的示例性场景800。图8类似于在图4中使用的场景,以示出kd-树的构建。在图8中示出的还有由图像处理系统发出的光线805。光线805可用于遍历kd-树。光线在第一点805上与BV2相交,并在第二点815上退出BV2。光线在第二点815上与BV3和BV4相交,并在第三点820上退出BV3和BV4。
图9A是对应于图8中的分割的场景800的示例性kd-树900。图9A还示出与光线805以及kd-树900的第一层(即,根节点BV1)相关联的示例性内部节点历史数据结构的第一半字节905。此外,还示出与光线805以及kd-树的第二层相关联的示例性内部节点历史数据结构的第二半字节910。图9A示出在工作负荷管理器205开始以光线805遍历kd-树之前的节点历史数据结构的初始状态(所有位未声明)。
如参考图5中的方法500所述,工作负荷管理器205可以在光线805由图像处理系统发出以后,执行与遍历kd-树900相关的操作。例如,如方法600的步骤615中所述,工作负荷管理器205可以执行光线-有界体积相交测试,以确定光线805是否与对应于根节点BV1的子节点BV2和BV3的有界体积相交。如图8所示,光线805与对应于子节点BV2和BV3的有界体积都相交。光线805在第一点810上与BV2相交,并在第二点815上退出BV2。光线在第二点815上与BV3相交,并在第三点820上退出BV3。
在工作负荷管理器205执行光线-有界体积相交测试以后,工作负荷管理器205可以更新对应于根节点BV1层的节点历史半字节905,以反映光线-有界体积相交测试的结果。在图9B中示出对根节点层历史半字节905的更新。由于光线805与子节点BV2和BV3都相交的事实,所以工作负荷管理器205可以在对应于每个子节点BV2和BV3的节点层历史中声明“命中节点”位。因而,工作负荷管理器205可以声明根节点层历史905的最高有效位,其代表光线805命中对应于左边子节点(BV2)的有界体积。此外,工作负荷管理器205可以声明根节点层历史905的第三最高有效位,其代表光线805命中对应于右边子节点(BV3)的有界体积。
接着,工作负荷管理器205可以基于有界体积相交测试,确定要沿着kd-树900采取的路径。如图9C所示,在本发明的一个实施例中,如果父节点BV1(在本例中是根节点)的子节点BV2和BV3,那么工作负荷管理器205可以前进到光线与之相交的第一个(例如,最近的)有界体积。在接下来的例子中,光线805首先与BV2相交。因而,工作负荷管理器205可以遍历到BV2并更新根节点层历史905以显示工作负荷管理器205“采取”过到BV2的分支(即,采取左节点)。在图9C中示出对根节点的节点层历史的更新。
工作负荷管理器205现在可以确定BV2是否是叶节点(即,没有分出到其他节点的节点)。由于节点BV2是叶节点,工作负荷管理器205现在可以发送光线805、光线的节点历史905和910以及到包含在叶节点BV2中的基元的指针到矢量吞吐量引擎210,如图9D所示。然后,矢量吞吐量引擎210可以执行光线-基元相交测试以确定光线805是否与任何包含在BV2中的基元相交(命中)。
如图8所示,光线805没有与位于BV2中的任何基元相交。因而,矢量吞吐量引擎210可以将光线以及对应的历史返回到工作负荷管理器205,指示光线805没有与BV2中的任何基元相交(即,错过)。
在光线从矢量吞吐量引擎210返回以后,工作负荷管理器205可以确定光线节点层历史包括信息。工作负荷管理器205可以利用历史来便于对kd-树的遍历。工作负荷管理器205可以利用光线的历史来确定指示有界体积相交但对应的分支没有被采取的最低层节点历史。这可以通过确定在节点历史中包括“10”的最低节点历史来实现。因而,如图9E所示,工作负荷管理器205可以确定kd-树的根节点层是kd-树上有界体积相交但没有被采取的最低层。这可以通过检查包括“10”的根节点层历史905来确定,所述“10”指示在对应于右边分支的有界体积中有命中,但该右边分支没有被采取。在确定根节点层是最低层以后,工作负荷管理器205可以为根节点之下的所有节点层清除节点层历史。
接下来,工作负荷管理器205可以在根节点BV1开始遍历kd-树900。接着,工作负荷管理器205可以使用节点层历史905来帮助对kd-树900的遍历。基于根节点的节点层历史905,工作负荷管理器可以确定对仍要被采取的分支进行采取。通过检查节点层历史905,工作负荷管理器可以确定左节点和右节点都与光线805相交。这可以通过检查根节点层历史半字节905的第一和第三位来确定。这些位都被声明(即,“1”)并且因而都被确定为在先前的光线-有界体积相交测试中已经相交。此外,工作负荷管理器205可以确定工作负荷管理器先前“采取”了到左边的子节点的分支(即,对包含在BV2中的基元发送要测试的光线)。这可以通过检查被声明的节点层历史的第二位来确定。因而,工作负荷管理器可以不前进到或者“采取”到与光线805相交的右节点(即,BV3)的其他分支。如图9F所示,工作负荷管理器205还可以更新根节点层历史半字节905的采取的右边的位,以指示对BV3的遍历。
工作负荷管理器205可以确定遍历到的节点BV3是否是叶节点。如图9E所示,节点BV3不是叶节点,而是内部节点。因而,工作负荷管理器205可以执行光线-有界体积相交测试,以确定光线805是否与对应于BV3之下或者在比BV3更低的层上的节点(即,BV4和BV5)的有界体积相交。
如图8所示,光线805在点815上与BV4相交,但是,光线没有与BV5相交。因而,光线-有界体积相交测试的结果可以指示光线805没有与BV5相交。工作负荷管理器205现在可以更新BV3节点层历史910,以反映光线-有界体积相交测试的结果。因而,如图9F所述,工作负荷管理器205可以在BV3节点历史910内的最高有效位位置中放置“1”或者对位进行声明,以反映光线与BV3相交的事实。接着,工作负荷管理器205可以根据BV3节点层历史910确定“要采取”什么分支/路径。
通过检查BV3节点层历史910,工作负荷管理器205可以确定只有一个BV3之下的节点与光线805相交,并且因而工作负荷管理器205可以遍历到相交的节点BV4。如图9G所示,工作负荷管理器205可以通过声明BV3节点层历史中第二最高有效位(指示采取的左边分支),来更新BV3节点层历史910,以反映从节点BV3到节点BV4的遍历。
工作负荷管理器205现在可以确定左边的子节点BV4是否是叶节点(即,该节点没有子节点)。由于节点BV4是叶节点,工作负荷管理器205现在可以向矢量吞吐量引擎210发送光线805、光线的节点层历史(905和910)以及到包含在叶节点BV4中的基元的指针。接着,矢量吞吐量引擎210可以执行光线-基元相交测试,以确定光线805是否与任何包含在BV4中的基元相交(命中)。如图8所示,光线805与BV4中的基元相交。因而,矢量吞吐量引擎210可将颜色分配给光线805从其穿过的像素,并向工作负荷管理器205返回信息。
本领域技术人员将理解,当光线确实与叶节点的基元相交时,可以产生例如对应于反射、透射、折射等的另外的光线。虽然产生这种光线的迭代处理是公知的,但这些光线中的每一个都可以使用本文中描述的技术被有效地追踪,以确定最终像素值。
结论
本发明的实施例提供用于记录光线通过空间索引结构的遍历历史并利用记录的光线通过空间索引的遍历历史的技术和系统。图像处理系统可以首先确定当光线遍历通过空间索引时其与哪些节点相交。当光线遍历空间索引时,可以记录节点相交确定的结果,并且记录的确定可以与光线相关联。此外,图像处理系统可以基于射中对应于构成空间索引的节点的基元的某一概率,来确定遍历路径。该遍历路径还可以被记录并与光线相关联。如果图像处理系统需要在以后遍历空间索引,那么记录的遍历历史可以用于消除重新计算光线-节点相交的需要,并消除重复进行不正确的遍历路径确定。
虽然前文涉及本发明的实施例,在不背离本发明的基本范围的情况下,还可以构思本发明的其他的和进一步的实施例,本发明的范围由下文中的权利要求确定。
Claims (24)
1.一种利用具有定义三维场景的有界体积的节点的空间索引进行光线追踪的方法,所述方法包括:
生成进入所述场景中的光线;
通过采取来自内部节点的分支直到到达叶节点来遍历所述空间索引,其中,基于所述光线是否与由所述节点定义的有界体积相交来采取分支;
记录指示一个或多个定义所述光线与之相交的有界体积的节点和当对所述空间索引进行遍历时采取的分支的遍历历史;
确定所述光线是否命中由所述叶节点定义的有界体积内包含的基元;以及
如果所述光线没有命中由所述叶节点定义的所述有界体积内包含的基元,利用记录的遍历历史重新遍历所述空间索引。
2.根据权利要求1的方法,其中,所述空间索引包含多个内部节点层,并且为每个节点层记录所述遍历历史。
3.根据权利要求1的方法,其中,所述空间索引包含多个内部节点层,并且所述遍历历史对于所述空间索引的每个内部节点层包括四个位。
4.根据权利要求3的方法,其中,遍历历史位中的其中两个指示所述光线是否与由位于其中一个所述内部节点层中的节点定义的有界体积相交,并且其中,所述遍历历史位中的其中两个指示当从其中一个所述内部节点层上的所述节点遍历所述空间索引时所采取的分支。
5.根据权利要求1、2、3或4的方法,进一步包括:
存储光线遍历历史和定义所述光线的信息;以及
将定义所述光线的信息和所述遍历历史从在第一处理元件上执行的工作负荷管理器发送到在第二处理元件上执行的矢量吞吐量引擎,其中,所述工作负荷管理器和所述矢量吞吐量引擎通过存储器映射的地址空间通信。
6.根据权利要求5的方法,其中,所述工作负荷管理器确定所述光线是否与由所述节点定义的有界体积相交,其中,所述工作负荷管理器记录所述遍历历史,并且其中,所述矢量吞吐量引擎确定所述光线是否命中由所述叶节点定义的所述有界体积内包含的基元。
7.根据权利要求5或6的方法,其中,所述工作负荷管理器和所述矢量吞吐量引擎位于相同的处理元件上。
8.根据权利要求5或6的方法,其中,所述工作负荷管理器和所述矢量吞吐量引擎位于分离的处理元件上。
9.根据权利要求1到8中的任何一个的方法,其中,利用所述记录的遍历历史重新遍历所述空间索引包括,
确定其中对应于节点的有界体积与所述光线相交,但来自所述节点的分支没有被采取的所述空间索引上的最低层;
基于被采取并被记录在到所述最低层的所述遍历历史中的分支,遍历所述空间索引;
采取还没有被采取的来自所述节点的分支;以及
通过采取来自内部节点的分支直到到达叶节点来遍历最低层之下的所述空间索引,其中,基于所述光线是否与由所述节点定义的有界体积相交来采取分支;
记录指示一个或多个定义所述光线与之相交的有界体积的节点和当对所述空间索引进行遍历时采取的分支的所述最低层之下的遍历历史;以及
确定所述光线是否命中在所述最低层之下并由所述叶节点定义的有界体积内包含的基元。
10.一种包括程序的计算机可读介质,当所述程序被运行时,其执行用于利用具有定义三维场景的有界体积的节点的空间索引进行光线追踪的操作,所述操作包括:
生成进入所述场景中的光线;
通过采取来自内部节点的分支直到到达叶节点来遍历所述空间索引,其中,基于所述光线是否与由所述节点定义的有界体积相交来采取分支;
记录指示一个或多个定义所述光线与之相交的有界体积的节点和当对所述空间索引进行遍历时采取的分支的遍历历史;
确定所述光线是否命中由所述叶节点定义的有界体积内包含的基元;以及
如果所述光线没有命中由所述叶节点定义的所述有界体积内包含的基元,那么利用记录的遍历历史重新遍历所述空间索引。
11.根据权利要求10的计算机可读介质,其中,所述空间索引包含多个内部节点层,并且为每个节点层记录所述遍历历史。
12.根据权利要求10的计算机可读介质,
其中,所述空间索引包含多个内部节点层,并且所述遍历历史对于所述空间索引的每个内部节点层包括四个位,其中,遍历历史位中的其中两个指示所述光线是否与由其中一个所述内部节点层上的节点定义的有界体积相交,并且其中,所述遍历历史位中的其中两个指示当从其中一个所述内部节点层上的所述节点遍历所述空间索引时所采取的分支。
13.根据权利要求10的计算机可读介质,其中,所述操作进一步包括:
存储光线遍历历史和定义所述光线的信息;以及
将定义所述光线的信息和所述遍历历史从在第一处理元件上执行的工作负荷管理器发送到在第二处理元件上执行的矢量吞吐量引擎,其中,所述工作负荷管理器和所述矢量吞吐量引擎通过存储器映射的地址空间通信。
14.根据权利要求13的计算机可读介质,其中,所述工作负荷管理器确定所述光线是否与由所述节点定义的有界体积相交,其中,所述工作负荷管理器记录所述遍历历史,并且其中,所述矢量吞吐量引擎确定所述光线是否命中由所述叶节点定义的所述有界体积内包含的基元。
15.根据权利要求10的计算机可读介质,其中,利用所述记录的遍历历史重新遍历所述空间索引包括:
确定其中对应于节点的有界体积与所述光线相交,但来自所述节点的分支没有被采取的所述空间索引上的最低层;
基于被采取并被记录在所述最低层的所述遍历历史中的分支,遍历所述空间索引;
采取还没有被采取的来自所述节点的分支;以及
通过采取来自内部节点的分支直到到达叶节点来遍历最低层之下的所述空间索引,其中,基于所述光线是否与由所述节点定义的有界体积相交来采取分支,并且其中,所述操作进一步包括:
记录指示一个或多个定义所述光线与之相交的有界体积的节点和当对所述空间索引进行遍历时采取的分支的所述最低层之下的遍历历史;以及
确定所述光线是否命中在所述最低层之下并由所述叶节点定义的有界体积内包含的基元。
16.一种系统,包括:
具有定义三维场景的有界体积的节点的空间索引;以及
第一处理元件,其中,所述第一处理元件被配置为:
生成进入所述场景中的光线;
通过采取来自内部节点的分支直到到达叶节点来遍历所述空间索引,其中,基于所述光线是否与由所述节点定义的有界体积相交来采取分支;
记录指示一个或多个定义所述光线与之相交的有界体积的节点和当对所述空间索引进行遍历时采取的分支的遍历历史;
确定所述光线是否命中由所述叶节点定义的有界体积内包含的基元;以及
如果所述光线没有命中由所述叶节点定义的所述有界体积内包含的基元,那么利用记录的遍历历史重新遍历所述空间索引。
17.根据权利要求16的系统,其中,所述空间索引包含多个内部节点层,并且为每个节点层记录所述遍历历史。
18.根据权利要求16的系统,其中,所述空间索引包含多个内部节点层,并且所述遍历历史对于所述空间索引的每个内部节点层包括四个位。
19.根据权利要求18的系统,其中,遍历历史位中的其中两个指示所述光线是否与由位于其中一个所述内部节点层中的节点定义的有界体积相交,并且其中,所述遍历历史位中的其中两个指示当从其中一个所述内部节点层上的所述节点遍历所述空间索引时所采取的分支。
20.根据权利要求16、17、18或19的系统,其中,所述第一处理元件进一步包括:
多个线程;以及
存储器映射的地址空间;以及
所述第一处理元件被进一步配置为:
存储光线遍历历史和定义所述光线的信息;以及
将定义所述光线的信息和所述遍历历史从在第一处理元件线程上执行的工作负荷管理器发送到在第二处理元件线程上执行的矢量吞吐量引擎,其中,所述工作负荷管理器和所述矢量吞吐量引擎通过存储器映射的地址空间通信。
21.根据权利要求20的系统,其中,所述工作负荷管理器确定所述光线是否与由节点定义的有界体积相交,所述工作负荷管理器记录所述遍历历史,并且所述矢量吞吐量引擎确定所述光线是否命中由所述叶节点定义的所述有界体积内包含的基元。
22.根据权利要求20或21的系统,其中,所述系统进一步包括:
包括第二多个线程和第二存储器映射的地址空间的第二处理元件;
将所述第一处理元件连接到所述第二处理元件的高速总线;以及
其中,所述工作负荷管理器在所述第一处理元件上执行并且所述矢量吞吐量引擎在所述第二处理元件上执行,并且其中,所述工作负荷管理器和所述矢量吞吐量引擎通过所述高速总线和存储器映射的地址空间通信。
23.根据权利要求16到22中任何一个的系统,其中,利用所述记录的遍历历史重新遍历所述空间索引包括,
确定其中对应于节点的有界体积与所述光线相交,但来自所述节点的分支没有被采取的所述空间索引上的最低层;
基于被采取并被记录在到所述最低层的所述遍历历史中的分支,遍历所述空间索引;
采取还没有被采取的来自所述节点的分支;以及
通过采取来自内部节点的分支直到到达叶节点来遍历最低层之下的所述空间索引,其中,基于所述光线是否与由所述节点定义的有界体积相交来采取分支;并且其中,所述系统进一步被配置为:
记录指示一个或多个定义所述光线与之相交的有界体积的节点和当所述系统对所述空间索引进行遍历时采取的分支的所述最低层之下的遍历历史;以及
确定所述光线是否命中在所述最低层之下并由所述叶节点定义的有界体积内包含的基元。
24.一种包括程序代码装置的计算机程序,当所述程序在计算机上运行时,所述程序代码装置适于执行权利要求1到8中的任何一个的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/460,797 US20080024489A1 (en) | 2006-07-28 | 2006-07-28 | Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements |
US11/460,797 | 2006-07-28 | ||
PCT/EP2007/057048 WO2008012199A2 (en) | 2006-07-28 | 2007-07-10 | Ray tracing algorithm with recording of the index traversal history |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101490715A true CN101490715A (zh) | 2009-07-22 |
CN101490715B CN101490715B (zh) | 2012-07-25 |
Family
ID=38814481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200780027168XA Expired - Fee Related CN101490715B (zh) | 2006-07-28 | 2007-07-10 | 用于具有最小存储器带宽要求的优化的光线遍历算法的高速缓存利用的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (3) | US20080024489A1 (zh) |
EP (1) | EP2070050A2 (zh) |
JP (1) | JP5043939B2 (zh) |
CN (1) | CN101490715B (zh) |
WO (1) | WO2008012199A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108604311A (zh) * | 2016-02-05 | 2018-09-28 | 谷歌有限责任公司 | 利用层级式外部存储器的增强神经网络 |
CN108885796A (zh) * | 2016-04-04 | 2018-11-23 | 英特尔公司 | 利用平面重复使用的降低精度的光线遍历 |
CN110827387A (zh) * | 2018-08-10 | 2020-02-21 | 辉达公司 | 没有着色器干预下对交点进行连续层次包围盒遍历的方法 |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9478062B2 (en) | 2006-09-19 | 2016-10-25 | Imagination Technologies Limited | Memory allocation in distributed memories for multiprocessing |
US7830379B2 (en) * | 2006-09-19 | 2010-11-09 | Caustic Graphics, Inc. | Architectures for parallelized intersection testing and shading for ray-tracing rendering |
US8018457B2 (en) | 2006-09-19 | 2011-09-13 | Caustic Graphics, Inc. | Ray tracing system architectures and methods |
US9665970B2 (en) | 2006-09-19 | 2017-05-30 | Imagination Technologies Limited | Variable-sized concurrent grouping for multiprocessing |
US7969434B2 (en) | 2006-09-19 | 2011-06-28 | Caustic Graphics, Inc. | Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering |
US8674987B2 (en) * | 2006-09-19 | 2014-03-18 | Caustic Graphics, Inc. | Dynamic ray population control |
US7808500B2 (en) * | 2006-11-21 | 2010-10-05 | International Business Machines Corporation | Method for improving spatial index efficiency by jittering splitting planes |
US7852336B2 (en) * | 2006-11-28 | 2010-12-14 | International Business Machines Corporation | Dynamic determination of optimal spatial index mapping to processor thread resources |
US7681020B2 (en) * | 2007-04-18 | 2010-03-16 | International Business Machines Corporation | Context switching and synchronization |
JP4487211B2 (ja) * | 2007-06-01 | 2010-06-23 | カシオ計算機株式会社 | 接続制御装置及び、ネットワーク接続制御プログラム |
US8652776B2 (en) | 2007-09-10 | 2014-02-18 | Vanda Pharmaceuticals, Inc. | Prediction of QT prolongation based on SNP genotype |
US8063902B2 (en) * | 2007-10-12 | 2011-11-22 | Caustic Graphics, Inc. | Method and apparatus for increasing efficiency of transmission and/or storage of rays for parallelized ray intersection testing |
US7932905B2 (en) * | 2007-10-15 | 2011-04-26 | Caustic Graphics, Inc. | Method, apparatus, and computer readable medium for light energy accounting in ray tracing |
US8072460B2 (en) | 2007-10-17 | 2011-12-06 | Nvidia Corporation | System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture |
US8190864B1 (en) * | 2007-10-25 | 2012-05-29 | Oracle America, Inc. | APIC implementation for a highly-threaded x86 processor |
US8237711B2 (en) * | 2007-11-19 | 2012-08-07 | Caustic Graphics, Inc. | Tracing of shader-generated ray groups using coupled intersection testing |
US8289324B1 (en) * | 2007-12-17 | 2012-10-16 | Nvidia Corporation | System, method, and computer program product for spatial hierarchy traversal |
US8212816B1 (en) * | 2007-12-17 | 2012-07-03 | Nvidia Corporation | System, method, and computer program product for parallel ray tracing traversal and intersection utilizing a single instruction multiple data (SIMD) processing architecture |
US8502819B1 (en) * | 2007-12-17 | 2013-08-06 | Nvidia Corporation | System and method for performing ray tracing node traversal in image rendering |
US20090165004A1 (en) * | 2007-12-21 | 2009-06-25 | Jaideep Moses | Resource-aware application scheduling |
KR101536197B1 (ko) * | 2008-02-27 | 2015-07-13 | 삼성전자주식회사 | 3차원 영상 프로세서 및 프로세싱 방법 |
US8359487B2 (en) * | 2008-03-19 | 2013-01-22 | Sony Corporation | System and method for effectively performing a clock adjustment procedure |
US8253730B1 (en) * | 2008-08-29 | 2012-08-28 | Adobe Systems Incorporated | System and method for construction of data structures for ray tracing using bounding hierarchies |
US8082381B2 (en) * | 2008-09-02 | 2011-12-20 | Nvidia Corporation | Connecting a plurality of peripherals |
US8421801B2 (en) * | 2008-09-09 | 2013-04-16 | Caustic Graphics, Inc. | Ray tracing using ray-specific clipping |
US8103803B2 (en) * | 2008-11-21 | 2012-01-24 | Nvidia Corporation | Communication between a processor and a controller |
US8610732B2 (en) * | 2008-12-11 | 2013-12-17 | Nvidia Corporation | System and method for video memory usage for general system application |
US8677074B2 (en) * | 2008-12-15 | 2014-03-18 | Nvidia Corporation | Shared memory access techniques |
US9911212B2 (en) * | 2009-02-24 | 2018-03-06 | International Business Machines Corporation | Resetting of dynamically grown accelerated data structure |
US8495643B2 (en) * | 2009-06-30 | 2013-07-23 | International Business Machines Corporation | Message selection based on time stamp and priority in a multithreaded processor |
WO2011007270A1 (en) * | 2009-07-14 | 2011-01-20 | Koninklijke Philips Electronics, N.V. | Image reconstruction including shift-variant blur compensation |
US8669977B2 (en) * | 2009-10-01 | 2014-03-11 | Intel Corporation | Hierarchical mesh quantization that facilitates efficient ray tracing |
US8443375B2 (en) * | 2009-12-14 | 2013-05-14 | Verisign, Inc. | Lockless queues |
US8619078B2 (en) * | 2010-05-21 | 2013-12-31 | International Business Machines Corporation | Parallelized ray tracing |
US8629867B2 (en) | 2010-06-04 | 2014-01-14 | International Business Machines Corporation | Performing vector multiplication |
KR101661166B1 (ko) * | 2010-06-14 | 2016-09-29 | 연세대학교 산학협력단 | 3차원 영상 시스템에서 광선 추적 방법 및 장치 |
US8692825B2 (en) * | 2010-06-24 | 2014-04-08 | International Business Machines Corporation | Parallelized streaming accelerated data structure generation |
KR101697238B1 (ko) * | 2010-08-26 | 2017-01-17 | 삼성전자주식회사 | 영상 처리 장치 및 방법 |
KR101705581B1 (ko) | 2010-09-30 | 2017-02-22 | 삼성전자주식회사 | 데이터 처리 장치 및 방법 |
US8819700B2 (en) * | 2010-12-22 | 2014-08-26 | Lsi Corporation | System and method for synchronous inter-thread communication |
US8791945B2 (en) | 2011-05-18 | 2014-07-29 | Intel Corporation | Rendering tessellated geometry with motion and defocus blur |
WO2012174334A1 (en) | 2011-06-16 | 2012-12-20 | Caustic Graphics, Inc. | Graphics processor with non-blocking concurrent architecture |
US10061618B2 (en) | 2011-06-16 | 2018-08-28 | Imagination Technologies Limited | Scheduling heterogenous computation on multithreaded processors |
US9021237B2 (en) * | 2011-12-20 | 2015-04-28 | International Business Machines Corporation | Low latency variable transfer network communicating variable written to source processing core variable register allocated to destination thread to destination processing core variable register allocated to source thread |
US9304772B2 (en) | 2012-03-29 | 2016-04-05 | Advanced Micro Devices, Inc. | Ordering thread wavefronts instruction operations based on wavefront priority, operation counter, and ordering scheme |
US8972693B2 (en) * | 2012-03-29 | 2015-03-03 | Advanced Micro Devices, Inc. | Hardware managed allocation and deallocation evaluation circuit |
KR102080851B1 (ko) | 2012-09-17 | 2020-02-24 | 삼성전자주식회사 | 레이 추적의 스케쥴링을 위한 장치 및 방법 |
JP6070150B2 (ja) * | 2012-12-14 | 2017-02-01 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム |
US9256573B2 (en) | 2013-02-14 | 2016-02-09 | International Business Machines Corporation | Dynamic thread status retrieval using inter-thread communication |
KR102193683B1 (ko) * | 2013-10-22 | 2020-12-21 | 삼성전자주식회사 | 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 |
KR102193684B1 (ko) * | 2013-11-04 | 2020-12-21 | 삼성전자주식회사 | 레이 트레이싱 처리 장치 및 방법 |
KR20150057868A (ko) * | 2013-11-20 | 2015-05-28 | 삼성전자주식회사 | 레이 트레이싱 시스템에서의 이진트리 탐색 방법 및 장치 |
US8952963B1 (en) | 2014-02-13 | 2015-02-10 | Raycast Systems, Inc. | Computer hardware architecture and data structures for a grid traversal unit to support incoherent ray traversal |
US10558571B2 (en) * | 2014-03-20 | 2020-02-11 | Sybase, Inc. | Second level database file cache for row instantiation |
KR102197067B1 (ko) | 2014-04-02 | 2020-12-30 | 삼성전자 주식회사 | 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치 |
US9697640B2 (en) | 2014-04-21 | 2017-07-04 | Qualcomm Incorporated | Start node determination for tree traversal in ray tracing applications |
KR102219289B1 (ko) | 2014-05-27 | 2021-02-23 | 삼성전자 주식회사 | 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 |
US9645935B2 (en) | 2015-01-13 | 2017-05-09 | International Business Machines Corporation | Intelligent bandwidth shifting mechanism |
GB2540971B (en) * | 2015-07-31 | 2018-03-14 | Advanced Risc Mach Ltd | Graphics processing systems |
US10079916B2 (en) | 2015-08-13 | 2018-09-18 | Advanced Micro Devices, Inc. | Register files for I/O packet compression |
KR102467031B1 (ko) * | 2015-08-31 | 2022-11-14 | 삼성전자주식회사 | 가속 구조를 생성 및 탐색하는 방법 |
KR20170036416A (ko) * | 2015-09-24 | 2017-04-03 | 삼성전자주식회사 | 트리를 탐색하는 장치 및 방법 |
US9818221B2 (en) | 2016-02-25 | 2017-11-14 | Qualcomm Incorporated | Start node determination for tree traversal for shadow rays in graphics processing |
US10319139B2 (en) | 2017-04-01 | 2019-06-11 | Intel Corporation | Apparatus and method for data-parallel ray tracing using volume proxies |
US10698686B2 (en) | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10664181B2 (en) | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US10761983B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10635602B2 (en) | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10552070B2 (en) | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US11831565B2 (en) | 2018-10-03 | 2023-11-28 | Advanced Micro Devices, Inc. | Method for maintaining cache consistency during reordering |
CN109614220B (zh) | 2018-10-26 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 一种多核系统处理器和数据更新方法 |
US10719974B1 (en) | 2018-12-28 | 2020-07-21 | Intel Corporation | Apparatus and method for efficiently storing ray traversal data |
US10699370B1 (en) | 2018-12-28 | 2020-06-30 | Intel Corporation | Apparatus and method for a compressed stack representation for hierarchical acceleration structures of arbitrary widths |
US11238640B2 (en) * | 2020-06-26 | 2022-02-01 | Advanced Micro Devices, Inc. | Early culling for ray tracing |
US12033238B2 (en) | 2020-09-24 | 2024-07-09 | Advanced Micro Devices, Inc. | Register compaction with early release |
CN114003363B (zh) * | 2021-11-01 | 2022-07-22 | 支付宝(杭州)信息技术有限公司 | 线程间中断信号发送方法及装置 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5579455A (en) * | 1993-07-30 | 1996-11-26 | Apple Computer, Inc. | Rendering of 3D scenes on a display using hierarchical z-buffer visibility |
GB9424273D0 (en) * | 1994-12-01 | 1995-01-18 | Wrigley Adrian M T | Improvements in and relating to image constrcution |
EP0856797B1 (en) * | 1997-01-30 | 2003-05-21 | STMicroelectronics Limited | A cache system for concurrent processes |
US6205519B1 (en) * | 1998-05-27 | 2001-03-20 | Hewlett Packard Company | Cache management for a multi-threaded processor |
US6577769B1 (en) * | 1999-09-18 | 2003-06-10 | Wildtangent, Inc. | Data compression through adaptive data size reduction |
US6429864B1 (en) * | 1999-11-10 | 2002-08-06 | Create.It Services Ag | Method for traversing a binary space partition or octree and image processor for implementing the method |
EP1264281A4 (en) * | 2000-02-25 | 2007-07-11 | Univ New York State Res Found | ARRANGEMENT AND METHOD FOR PROCESSING AND PLAYING A VOLUME |
JP3513562B2 (ja) * | 2000-04-20 | 2004-03-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 形状解析システム、3次元形状モデルの差分検出システム、類似形状検索システム、形状解析方法及び記憶媒体 |
US6597359B1 (en) * | 2000-05-17 | 2003-07-22 | Raychip, Inc. | Hierarchical space subdivision hardware for ray tracing |
US7499053B2 (en) * | 2000-06-19 | 2009-03-03 | Mental Images Gmbh | Real-time precision ray tracing |
RU2215326C2 (ru) * | 2001-06-29 | 2003-10-27 | Самсунг Электроникс Ко., Лтд. | Иерархическое основанное на изображениях представление неподвижного и анимированного трехмерного объекта, способ и устройство для использования этого представления для визуализации объекта |
US6654441B2 (en) * | 2001-08-02 | 2003-11-25 | Hitachi, Ltd. | Data processing method and data processing apparatus |
US6772179B2 (en) * | 2001-12-28 | 2004-08-03 | Lucent Technologies Inc. | System and method for improving index performance through prefetching |
US6868420B2 (en) * | 2002-07-31 | 2005-03-15 | Mitsubishi Electric Research Laboratories, Inc. | Method for traversing quadtrees, octrees, and N-dimensional bi-trees |
DE10239672B4 (de) * | 2002-08-26 | 2005-08-11 | Universität des Saarlandes | Verfahren und Vorrichtung zur Erzeugung einer zweidimensionalen Abbildung einer dreidimensionalen Struktur |
US7012604B1 (en) * | 2002-09-12 | 2006-03-14 | Advanced Micro Devices, Inc. | System architecture for high speed ray tracing |
US7536692B2 (en) * | 2003-11-06 | 2009-05-19 | Intel Corporation | Thread-based engine cache partitioning |
US20060098009A1 (en) * | 2004-10-28 | 2006-05-11 | Miguel Zuniga | Method and apparatus for ray and range queries using wide object isolation techniques |
US7454602B2 (en) * | 2004-12-15 | 2008-11-18 | International Business Machines Corporation | Pipeline having bifurcated global branch history buffer for indexing branch history table per instruction fetch group |
US7348975B2 (en) * | 2004-12-28 | 2008-03-25 | Intel Corporation | Applications of interval arithmetic for reduction of number of computations in ray tracing problems |
JP4981041B2 (ja) * | 2005-06-29 | 2012-07-18 | インテル コーポレイション | キャッシュする方法、装置及びシステム |
-
2006
- 2006-07-28 US US11/460,797 patent/US20080024489A1/en not_active Abandoned
- 2006-12-07 US US11/567,874 patent/US7818503B2/en active Active
- 2006-12-07 US US11/567,882 patent/US7752413B2/en active Active
-
2007
- 2007-07-10 EP EP07787323A patent/EP2070050A2/en not_active Withdrawn
- 2007-07-10 JP JP2009521198A patent/JP5043939B2/ja not_active Expired - Fee Related
- 2007-07-10 WO PCT/EP2007/057048 patent/WO2008012199A2/en active Application Filing
- 2007-07-10 CN CN200780027168XA patent/CN101490715B/zh not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108604311A (zh) * | 2016-02-05 | 2018-09-28 | 谷歌有限责任公司 | 利用层级式外部存储器的增强神经网络 |
CN108604311B (zh) * | 2016-02-05 | 2022-11-08 | 渊慧科技有限公司 | 利用层级式外部存储器的增强神经网络 |
CN108885796A (zh) * | 2016-04-04 | 2018-11-23 | 英特尔公司 | 利用平面重复使用的降低精度的光线遍历 |
CN108885796B (zh) * | 2016-04-04 | 2023-10-13 | 英特尔公司 | 利用平面重复使用的降低精度的光线遍历 |
CN110827387A (zh) * | 2018-08-10 | 2020-02-21 | 辉达公司 | 没有着色器干预下对交点进行连续层次包围盒遍历的方法 |
Also Published As
Publication number | Publication date |
---|---|
US7752413B2 (en) | 2010-07-06 |
EP2070050A2 (en) | 2009-06-17 |
CN101490715B (zh) | 2012-07-25 |
WO2008012199A3 (en) | 2008-04-10 |
JP2009545044A (ja) | 2009-12-17 |
US7818503B2 (en) | 2010-10-19 |
WO2008012199A2 (en) | 2008-01-31 |
US20080028154A1 (en) | 2008-01-31 |
US20080028403A1 (en) | 2008-01-31 |
JP5043939B2 (ja) | 2012-10-10 |
US20080024489A1 (en) | 2008-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101490715B (zh) | 用于具有最小存储器带宽要求的优化的光线遍历算法的高速缓存利用的方法和装置 | |
CN101165721B (zh) | 光线跟踪的方法和系统 | |
CN100557637C (zh) | 执行射线追踪的方法和系统 | |
CN101506847B (zh) | 用于划分空间索引的方法和系统 | |
US7940265B2 (en) | Multiple spacial indexes for dynamic scene management in graphics rendering | |
CN100557638C (zh) | 执行射线追踪的方法和系统 | |
JP5063698B2 (ja) | レイ・トレーシング画像処理システムにおけるピクセル色の決定方法および画像処理システム | |
US8692825B2 (en) | Parallelized streaming accelerated data structure generation | |
US8018453B2 (en) | Deferred acceleration data structure optimization for improved performance | |
KR102080851B1 (ko) | 레이 추적의 스케쥴링을 위한 장치 및 방법 | |
US7773087B2 (en) | Dynamically configuring and selecting multiple ray tracing intersection methods | |
US8085267B2 (en) | Stochastic addition of rays in a ray tracing image processing system | |
US8022950B2 (en) | Stochastic culling of rays with increased depth of recursion | |
JP4954005B2 (ja) | メモリ・キャッシュ内のデータを無効化する方法、コンピュータ可読媒体及びイメージ処理システム | |
CN100570638C (zh) | 分发工作负载的方法和图像处理系统 | |
CN101276479B (zh) | 图像处理方法和系统 | |
US8339398B2 (en) | Integrated acceleration data structure for physics and ray tracing workload | |
US20080231627A1 (en) | Using Ray Tracing to Enhance Artificial Intelligence Character Behavior | |
US20080122838A1 (en) | Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index | |
US20010012018A1 (en) | Occlusion culling for complex transparent scenes in computer generated graphics | |
US20080192054A1 (en) | Combined Spatial Index for Static and Dynamic Objects Within a Three-Dimensional Scene | |
US20100188396A1 (en) | Updating Ray Traced Acceleration Data Structures Between Frames Based on Changing Perspective | |
CN101192309A (zh) | 进行光线跟踪的方法和系统 | |
US8102389B2 (en) | Box casting using an integrated acceleration data structure | |
Wyman et al. | Frustum-traced raster shadows: Revisiting irregular z-buffers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120725 Termination date: 20160710 |
|
CF01 | Termination of patent right due to non-payment of annual fee |