CN101165721A - 光线跟踪的方法和系统 - Google Patents
光线跟踪的方法和系统 Download PDFInfo
- Publication number
- CN101165721A CN101165721A CNA2007101802387A CN200710180238A CN101165721A CN 101165721 A CN101165721 A CN 101165721A CN A2007101802387 A CNA2007101802387 A CN A2007101802387A CN 200710180238 A CN200710180238 A CN 200710180238A CN 101165721 A CN101165721 A CN 101165721A
- Authority
- CN
- China
- Prior art keywords
- light
- branch
- node
- confined volume
- spatial index
- 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)
Abstract
本发明的实施例提供了用于当跟踪光线穿过空间索引时预获取约束体积信息的方法和装置。根据本发明的一个实施例,可跟踪第一光线穿过空间索引并可记录遍历历史。随后,可发出后续光线到三维场景中,其可具有与第一光线相似轨迹。随着后续光线遍历所述空间索引,后续光线可如第一光线一样与约束体积相交。因此,当后续光线遍历所述空间索引时,所记录的遍历历史可被用于预获取约束体积信息。通过预获取所述约束体积信息,可减少后续光线遍历所述空间索引的时间量。
Description
技术领域
本发明的实施例一般涉及计算机处理的领域。
背景技术
从三维场景呈现二维图像的过程通常被称作图像处理。随着现代计算机工业发展,图像处理也发展。图像处理的发展中的一个具体目标是尽可能逼真地进行二维仿真或呈现三维场景。呈现真实图像的一个限制是现代监视器通过像素使用来显示图像。
像素是监视器上可被照亮的空间的最小区域。大多数现代计算机监视器会使用数十万或数百万像素的组合来组成整个显示或呈现场景。单个像素按网格图案被排列,并且共同地覆盖监视器的整个视域。每一单个像素可被照亮以呈现最终图像以便查看。
用于将现实世界三维场景呈现到使用像素的二维监视器上的一种技术被称作栅化(rasterization)。栅化是采用表示为向量格式(场景内的几何物体的数学表示)的二维图像,并且将图像转换成各个像素以便显示在监视器上的过程。栅化有效地快速呈现图形并且使用相对低量的计算能力;然而,栅化存在一些缺点。例如,因为栅化不是基于光的物理特性,而是基于投影到二维平面上的场景中的三维几何物体的形状,所以栅化经常缺少真实性。此外,利用栅化呈现场景所要求的计算能力直接与将被呈现场景的复杂度的增加成比例。随着图像处理变得更真实,所呈现的场景也变得更复杂。因此,因为栅化直接与复杂度成比例,所以栅化随着图像处理的发展而受影响。
将现实世界三维场景呈现到使用像素的二维监视器上的另一种技术被称作光线跟踪(ray tracing)。光线跟踪技术跟踪虚光线(其行为类似于光线的光线)的传播进入到将被呈现到计算机屏幕上的三维场景中。所述光线来自坐在计算机屏幕后面的查看者的眼睛,并且穿过构成计算机屏幕的像素,到所述三维场景。每个被跟踪的光线进入到场景中并且可与场景内的物体相交。如果光线与场景内的物体相交,则所述物体的特性和若干其它影响因素被用来计算所述光线所暴露于的颜色和光的数量,或其缺少的量。这些计算用于确定被跟踪的光线所穿过的像素的最终颜色。
针对单一场景执行多次的跟踪光线过程。例如,针对显示器中的每个像素可跟踪单个光线。一旦已经跟踪足够数量光线来确定构成计算机屏幕的二维显示的所有像素的颜色,则三维场景的二维合成可在计算机屏幕上被显示给观看者。
光线跟踪通常比栅化更真实的呈现现实世界三维场景。这部分是由于光线跟踪仿真现实世界环境中光是如何行进和表现的,而不是简单地如栅化所进行的将三维形状投影到二维平面上。因此,利用光线跟踪呈现的图形更准确地在监视器上描绘了现实世界中我们的眼睛习惯于看见的东西。
此外,随着场景变得更复杂,光线跟踪对场景复杂度增加的处理也比栅化处理的好。光线跟踪与场景复杂度成对数比例。这是由于即使场景变得更复杂,也可将相同数量光线投射到场景中。因此,就计算能力需求而言,光线跟踪没有随着场景变得更复杂而如栅化那样品质降低。
光线跟踪的一个主要缺点是大量计算,以及呈现场景所需的大量处理能力。当需要快速呈现时,这引起问题。例如,当图像处理系统为了例如游戏控制台中动画制作目的呈现图形时。由于光线跟踪的增加的计算需求,很难将动画呈现得足够快以便看起来好像真实的一样(真实动画接近每秒二十到二十四帧)。
因此,需要更有效的技术和设备来执行光线跟踪。
发明内容
本发明的实施例通常提供用于执行光线跟踪的方法和装置。
根据本发明的一个实施例,提供了使用空间索引的光线跟踪的方法,所述空间索引具有定义三维场景的约束体积的节点。该方法通常包括:发出第一光线到所述三维场景中;通过利用从内部节点直到达到叶节点的分支遍历所述空间索引,其中基于第一光线是否与由所述节点定义的约束体积相交来采用分支;记录第一光线的遍历的历史记录;发出第二光线到所述三维场景中;基于第一光线的遍历的历史记录,预获取定义了被第一光线相交的约束体积的信息;以及利用从内部节点直到达到叶节点的分支遍历所述空间索引,其中基于第二光线是否与由所述节点定义的约束体积相交来采用分支。
根据本发明的另一个实施例,提供了计算机可读介质。包含当被执行时执行操作程序的计算机可读介质通常包括:发出第一光线到所述三维场景中;通过利用从内部节点直到达到叶节点的分支遍历所述空间索引,其中基于第一光线是否与由节点定义的约束体积相交来采用分支;记录第一光线的遍历的历史记录;发出第二光线到所述三维场景中;基于第一光线的遍历的历史记录,预获取定义了被第一光线相交的约束体积的信息;以及利用从内部节点直到达到叶节点的分支遍历所述空间索引,其中基于第二光线是否与由所述节点定义的约束体积相交来采用分支。
根据本发明的另一个实施例提供了一个系统。所述系统通常包括:存储器;以及处理部件,其被配置成:发出第一光线到三维场景中;通过利用从内部节点直到达到叶节点的分支遍历所述空间索引,其中基于第一光线是否与由节点定义的约束体积相交来采用分支;记录第一光线的遍历的历史记录;发出第二光线到所述三维场景中;基于第一光线的遍历的历史记录,从存储器预获取定义了被第一光线相交的约束体积的信息;以及利用从内部节点直到达到叶节点的分支遍历所述空间索引,其中基于第二光线是否与由所述节点定义的约束体积相交来采用分支。
根据本发明的另一个实施例,提供了遍历具有节点的树结构的方法。该方法通常包括:在第一遍历期间,通过利用从节点直到达到叶节点的分支遍历所述树结构,其中基于由节点定义的条件是否满足来采用分支;记录所述空间索引的遍历的历史记录;以及在第二遍历期间,基于所记录的空间索引的遍历的历史记录,预获取定义了节点的信息,并且通过利用从节点直到达到叶节点的分支遍历所述树结构,其中基于由节点定义的条件是否满足来采用分支。
附图说明
图1根据本发明的实施例例示了多核处理部件。
图2根据本发明的实施例例示了多核处理部件网络。
图3是根据本发明的一个实施例,将由图像处理系统呈现的示例性三维场景。
图4A-4C根据本发明的实施例例示了由图像处理系统呈现的二维空间,以及由图像处理系统建立的相应空间索引。
图5根据本发明的一个实施例例示了用于将光线发出到三维场景中的示例性模式。
图6是根据本发明的一个实施例,例示遍历空间索引和记录
图7和9根据本发明的一个实施例例示了空间索引和分支历史表。
图8是根据本发明的一个实施例,例示预获取约束体数据和更新分支历史表的方法的流程图。
具体实施方式
本发明的实施例提供了用于当跟踪光线穿过空间索引时,预获取约束体积信息的方法和装置。根据本发明的一个实施例,可跟踪第一光线穿过空间索引并且可记录遍历历史记录。随后,可发出后续光线到可具有与第一光线相似轨迹的三维场景中。随着后续光线遍历空间索引,后续光线可如第一光线一样与约束体积相交。因此,所记录的遍历历史记录可被用于当将后续光线遍历所述空间索引时预获取约束体积信息。通过预获取所述约束体积信息,可减少将后续光线遍历所述空间索引的时间量。
在下文中,对本发明的实施例进行参考说明。然而,应当理解本发明不局限于具体描述的实施例。相反,无论与不同实施例是否相关,都可以考虑用下列特性和要素的任何组合来实现和实行本发明。此外,在各种实施例中,本发明提供了许多超过现有技术的优点。然而,虽然本发明的实施例可获得超过其它可能的解决方案和/或超过现有技术的优点,但是是否通过提供的实施例实现具体优点不是本发明的限制。因此,以下的方面、特性、实施例和优点仅仅是示例性的,而不是考虑要素或所附权利要求书的限制(除了权利要求书中明确叙述的)。同样,对″发明″进行的说明不应被理解为此处公开的任何发明主题内容的概括,并且除了权利要求书中明确叙述的,不应被认为是所附权利要求书的要素或限制。
本发明的一个实施例被实现成供计算机系统使用的程序产品。程序产品的程序定义实施例的功能(包括此处所述的方法),并且可被包含在各种计算机可读介质上。示例性计算机可读介质包括,但不局限于:(i)信息,永久存储在不可写存储介质上的(例如计算机内的只读存储器设备,例如通过CD-ROM驱动器可读的CD-ROM盘);(ii)可改变的信息,存储在可写存储介质上(例如,软盘驱动器或硬盘驱动器内的软盘);以及(iii)通过包括无线通讯的通信介质,例如通过计算机或电话网络传送给计算机的信息。后面的实施例具体地包括从因特网及其他网络下载的信息。当承载指示本发明的功能的计算机可读指令时,此类计算机可读介质代表本发明的实施例。
一般说来,执行实现本发明的实施例的例程可以是操作系统的一部分,或是具体应用、部件、程序、模块、对象或指令序列。本发明的计算机程序通常由大量指令组成,这些指令将由本地计算机转换成机器可读格式,以及因此可执行的指令。同样,程序由对于程序来说本地驻留,或在存储器或存储设备中提供的变量和数据结构组成。此外,基于针对本发明的具体实施例中所实现的应用,可识别此后所述的各种程序。然而应当理解,下述的任何特定程序命名仅仅为了方便起见,因此,本发明不应局限于在由此类命名标识和/或隐含的任何具体应用中单独使用。
示例性处理器布局和通信网络
图1根据本发明的一个实施例,例示了多核处理部件100。多核处理部件100包括多个基本吞吐引擎105(BTE)。BTE 105可包含多个处理线程和一个核心高速缓存(例如L1高速缓存)。位于每个BTE内的处理线程可访问共享的多核处理部件高速缓存110(例如L2高速缓存)。
BTE 105还可以访问多个收件箱115。收件箱115可以是存储器映射的地址空间。收件箱115可被映射到位于每个BTE 105内的处理线程中。位于BTE内的每个线程可以具有存储器映射的收件箱,并且访问所有其它的存储器映射的收件箱115。收件箱115组成用于BTE 105的低时延和高带宽通信网络。
BTE可使用收件箱115作为BTE之间互相通信和重新分布数据处理工作的网络。对于一些实施例,分离的发件箱可被用于通信网络,例如接收由BTE 105处理的结果。对于其它实施例,收件箱115也可以充当发件箱,例如利用一个BTE 105将处理函数的结果直接写入将使用该结果的另一个BTE 105的收件箱中。
图像处理系统的总性能可依赖于BTE能够多好地划分和重新分布工作。利用没有帧对帧一致性的BTE通信数据包,收件箱115的网络在不破坏共享多核处理部件高速缓存110的情况下汇集和分配工作给其它BTE。能够每帧呈现数百万三角形的图像处理系统可包括许多个以这种方式连接的BTE 105。
在本发明的一个实施例中,一个BTE 105的线程可被分配给工作负载管理器。图像处理系统可使用各种软件和硬件元件从三维场景呈现二维图像。根据本发明的一个实施例,图像处理系统可使用工作负载管理器利用由图像处理系统发出的光线遍历空间索引(spatialindex)。如下面参考图4所描述的,空间索引可被实现为用来将相对较大的三维场景划分成较小的约束体积的树类型数据结构。利用图像处理的光线跟踪方法的图像处理系统可利用空间索引来快速确定光线-约束体积的相交。在本发明的一个实施例中,工作负载管理器通过利用空间索引可执行光线-约束体积的相交测试。
在本发明的一个实施例中,多核处理部件100上的多核处理部件BTE 105的其它线程可以是向量吞吐引擎。在工作负载管理器确定光线-约束体积的相交之后,工作负载管理器可经由收件箱115发出(发送)所述光线给多个向量吞吐引擎中的一个。然后所述向量吞吐引擎可确定光线是否与约束体积内包含的基本单元相交。所述向量吞吐引擎也可以执行有关确定光线传输所通过的像素的颜色的操作。
图2根据本发明的一个实施例,例示了多核处理部件200的网络。图2同样例示了本发明的一个实施例,其中多核处理部件100的BTE之一的线程是工作负载管理器205。根据本发明的一个实施例,多核处理部件200的所述网络中的每个多核处理部件2201-N可包含一个工作负载管理器2051-N。根据本发明的一个实施例,多核处理部件200的所述网络中的每个多核处理部件2201-N也可以包含多个向量吞吐引擎210。
根据本发明的一个实施例,工作负载管理器2051-N可利用高速总线225与其它多核处理部件2201-N的其它工作负载管理器2051-N和/或向量吞吐引擎210通信。每一向量吞吐引擎210可利用高速总线225与其它向量吞吐引擎210或工作负载管理器2051-N通信。工作负载管理器处理器205可利用高速总线225汇集和分配与图像处理相关的任务给其它工作负载管理器2051-N,和/或分配任务给其它向量吞吐引擎210。高速总线225的使用可允许工作负载管理器2051-N在不影响高速缓存230的情况下传输与工作负载管理器通信相关的数据包。
示例性三维场景
图3是由图像处理系统呈现的示例性三维场景。三维场景内可以是物体320。图3中的物体320具有不同的几何形状。虽然图3中例示了仅4个物体320,但是典型三维场景中的物体的数量可以或多或少。通常,三维场景具有比图3中所例示的更多的物体。
如图3可见,物体具有变化的几何形状和尺寸。例如,图3中的一个物体为棱锥320A。图3中的其它物体为盒320B-D。在许多现代图像处理系统中,物体经常被分解成较小的几何形状(例如正方形、圆形、三角形等等)。然后较大的物体由若干较小的简单几何形状来表示。这些较小的几何形状通常被称作基本单元。
场景305中还例示了光源325A-B。光源可以照亮位于场景305内的物体320。此外,根据场景305内的光源325和物体320的位置,光源可以使影子被投射到场景305内的物体上。
三维场景305可由图像处理系统呈现成二维图画。图像处理系统也可以使二维图画显示在监视器310上。监视器310可以利用许多不同颜色的像素330来呈现最终的二维图画。
被图像处理系统用于将三维场景320呈现成二维图画的一个方法被称作光线跟踪。通过图像处理系统从观看者315的角度″发出″或″射出″光线到三维场景320中来实现光线跟踪。光线具有类似于光线的属性和行为。
图3中可以看见观看者315的位置处发出并且穿过三维场景305的一根光线340。由于光线340从观看者315横穿到三维场景305,光线340穿过将由图像处理系统呈现最终二维图画的平面。图3中该平面由监视器310表示。光线340穿过平面或监视器310的点由像素335表示。
如先前简要讨论的,多数图像处理系统使用数千(否则,数百万)像素的栅格330来将最终场景呈现在监视器310上。栅格330可被称作帧。每一单个像素可显示不同颜色来将最终的复合二维图画呈现在监视器310上。利用光线跟踪图像处理方法从三维场景呈现二维图画的图像处理系统将计算发出的光线或光线在三维场景遇到的颜色。所述图像处理场景于是将所述光线遇到的颜色分配给光线从观看者到三维场景在其路线上所穿过的像素。
每个像素发出的光线的数量可改变。对于将被呈现的特定场景,一些像素可发出许多光线。在这种情况下,像素的最终颜色由来自针对该像素发出的所有光线的每种颜色成分来确定。其它像素可能仅具有发出的单一光线来确定二维图画中像素的最终颜色。一些像素可能不具有由图像处理系统发出的任何光线,在这种情况下,其颜色可由图像处理系统内的算法确定、近似或分配。
为确定二维图画中的像素335的最终颜色,图像处理系统必须确定光线340是否与场景内的物体相交。如果光线不与场景内的物体相交,则其可被分配以缺省背景颜色(例如表示白天或夜间天空的蓝色或黑色)。反之,由于光线340穿过三维场景,光线305可撞击物体。由于光线撞击场景内的物体,物体的颜色可被分配给光线所穿过的像素。然而,物体的颜色必须在其被分配给像素之前确定。
许多因素可影响由初始光线340撞击的物体的颜色。例如,三维场景内的光源可照亮物体。此外,物体的物理特性可影响所述物体的颜色。例如,如果该物体能够反射或是透明的,则其它非光源物体可能影响所述物体的颜色。
为了确定来自三维场景内的其它物体的影响,可以从初始光线340与所述物体相交的点发出次级光线。例如,可发出阴影光线341来确定到初始光线340与物体相交的点的光的成分。如果物体具有半透明属性,则图像处理系统发出反射光线来确定什么颜色或光被反射到物体320上。
一种次级光线的可以是阴影(shadow)光线。可以从初始光线与物体的交点跟踪每个阴影光线,到三维场景305内的光源。如果在光线达到光源之前,光线没有遇到另一个物体就到达所述光源,则所述光源将照亮在初始光线撞击所述物体的点处被所述初始光线撞击的物体。
例如,可以从初始光线340与物体320A相交的点发出阴影光线341A,并且阴影光线341A可按朝着光源325A的方向穿过。阴影光线341A没有遇到场景305内的任何其他物体320就到达光源325A。因此,光源325A将在初始光线340与物体320A相交的点处照亮物体320A。
其它阴影光线可以具有在其初始光线撞击物体的点与被三维场景内的另一个物体挡住的光源之间的路径。如果所述阻隔初始光线所撞击物体上的点与所述光源之间的路径的物体是非透明的,则光源不会在初始光线撞击物体的点处照亮该物体。因此,所述光源可能不影响初始光线的颜色,并且因此也不影响二维图画中呈现的像素的颜色。然而,如果该物体是半透明或是透明的,则所述光源可在初始光线撞击物体的点处照亮该物体。
例如,可以从初始光线340与物体320A相交的点发出阴影光线341B,并且阴影光线341B可按朝着光源325B的方向穿过。在该例子中,阴影光线341B的路径被物体320D挡住。如果物体320D是非透明的,则光源325B不会在初始光线340与物体320A相交的点处照亮物体320A。然而,如果物体320D是半透明或透明的,则光源325B可在初始光线340与物体320A相交的点处照亮物体320A。
次级光线的另一种类型是透射或折射光线。如果与所述初始光线相交的物体具有透明或半透明属性(例如玻璃),则可以由图像处理系统发出折射光线。折射光线相对于初始光线撞击物体的角度成一定角度穿过物体。例如,可以看见折射光线344穿过与初始光线340相交的物体320A。
次级光线的另一种类型是反射光线。如果与初始光线相交的物体具有反射属性(例如金属饰面),则将由图像处理系统发出反射光线来确定什么颜色或光可被反射到物体上。反射的光线相对于初始光线与物体相交的角度成一定角度穿过离开物体。例如,可由图像处理系统发出反射光线343来确定什么颜色或光可被反射到初始光线340所相交的物体320A上。
所有次级光线(例如阴影光线、透射光线、反射光线等等)的颜色和光的总影响将得到初始光线所穿过的像素的最终颜色。
示例性KD树
执行光线跟踪时遇到的一个问题是快速并有效地确定所发出的光线是否与将被呈现的场景内的任何物体相交。为本领域普通技术人员所知的、进行光线相交确定的更有效的一个方法是使用空间索引。空间索引将三维场景或世界分割成可能或可能不包含基本单元(primitive)的较小体积(相对于整个三维场景较小)。图像处理系统能因此使用这些较小体积的已知边界来确定光线是否可能与较小体积内包含的基本单元相交。如果光线与包含基本单元的体积相交,则针对体积内包含的基本单元的已知位置和尺寸使用光线的轨迹来运行光线相交测试。如果光线不与特定体积相交,则不必针对该体积内包含的基本单元进行光线-基本单元的相交测试。此外,如果光线与不包含基本单元的约束体积相交,则不必针对该约束体积进行光线-基本单元相交测试。因此,通过减少所必需的光线-基本单元相交测试的数量,空间索引的使用大大提高了光线跟踪图像处理系统的性能。一些不同的空间索引加速数据结构的例子是八叉树、k维树(kd树),以及二进制空间划分树(BSP树)。虽然存在若干不同的空间索引结构,为便于描述本发明的实施例,kd树将被用于随后的例子中。然而,本领域的技术人员将容易地认识到本发明的实施例可被应用于任何不同类型的空间索引。
kd树使用轴对准的约束体积将整个场景或空间划分成较小体积。即,kd树可通过使用平行于已知轴的分割面来分割被场景包围的三维空间。分割面将较大的空间划分成较小的约束体积。所述较小的约束体积一起构成了场景中的整个空间。将较大的约束体积划分(分割)成两个较小约束体积的确定可以由图像处理系统通过使用kd树结构算法来做出。
确定何时将约束体积划分成较小体积的一个条件可以是约束体积内包含的基本单元的数量。即,只要约束体积包含比预定门限值更多的基本单元,树结构算法就可以通过绘制更多分割面来继续分割体积。确定何时将约束体积划分成较小体积的另一个条件可以是约束体积内包含的空间的数量。此外,确定继续划分所述约束体积也可以基于有多少基本单元可以与建立该约束体积的平面相交。
所述场景的划分可以用由节点、分支和叶组成的二进制树结构表示。树内的每个内部节点可代表相对较大的约束体积,同时所述节点可包括到亚节点的分支,该亚节点可代表相对较大的约束体积被分割面划分之后的得到的两个相对较小的划分体积。轴对齐的kd树中,每个内部节点可仅包括到其它节点的两个分支。该内部节点可包含到一个或两个叶节点的分支(即指针)。叶节点是不被进一步细分成较小体积、并且包含到基本单元的指针的节点。内部节点还可以包含到进一步被细分的其它内部节点的分支。内部节点还可以包含确定分割面沿着什么轴被画出以及沿着轴在何处画出分割面所需的信息。
示例性约束体积
图4A-4C例示了由图像处理系统和对应的kd树呈现的二维空间。为简单起见,二维场景被用来例示kd树的建造,然而kd树也可以被用来表示三维场景。在图4A-4C的二维例示图中,例示了分割线来代替分割面,以及例示了约束区域来代替将被用于三维结构中的约束体积。然而,本领域技术人员会迅速认识到该概念可以轻易地被用于包含物体的三维场景中。
图4A例示了包含被显示在监视器310上的最终图画中所呈现的基本单元410的二维场景405。代表场景的整个体积的最大体积被约束体积1(BV1)所包围。在对应的kd树中,这可以由顶层节点450,亦称根或界节点(world node)来表示。在图像处理系统的一个实施例中,当约束体积包含例如多于两个基本单元时,图像处理系统可继续将约束体积划分成较小的约束体积。如前所述,决定继续将约束体积划分成较小约束体积可基于许多因素,然而为便于在该例子中说明,决定继续划分约束体积仅基于基本单元的数量。如图4A中可见的,BV1包含6个基本单元,因此kd树结构算法可将BV1划分成较小约束体积。
图4B例示了图4A中所示的相同的二维场景405。然而在图4B中,树结构算法将BV1划分成两个较小的约束体积BV2和BV3。通过沿着点x1处的x-轴画出分割面SP1415实现BV1的划分。BV1的该划分也被反映在kd树中为内部或父节点BV1 450下的、分别对应于BV2和BV3的两个节点455和460。代表BV1的内部节点现在可存储信息,例如但不局限于指向BV1下面的两个节点(例如BV2和BV3)的指针、沿着哪个轴(例如x-轴)画出分割面,以及沿着该轴在何处(例如点x1处)画出分割面。
因为BV3包含比基本单元的预定门限值更多的基本单元(例如多于两个基本单元),所以kd树结构算法可继续划分约束体积BV3。然而,因为约束体积BV2包含小于或等于基本单元的数量(例如只有两个基本单元410A),所以kd树结构算法可能不继续划分约束体积BV2。不被更进一步划分或细分的节点,例如BV2被称为叶节点。
图4C例示了图4B中所示的相同的二维场景405。然而,在图4C中,kd树结构算法将BV3划分成两个较小的约束体积BV4和BV5。kd结构算法沿着y轴在点y1处利用划分平面划分BV3。由于BV3已被分成两个亚节点,现在其可被称为内部节点。BV3的划分也被反映在kd树中为分别对应于BV4和BV5的两个叶节点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中。为了存储在处理器高速缓存230中,kd树和含有kd树的相应数据的大小可被优化。在处理器高速缓存230中存储kd树可允许工作负载管理器205利用由图像处理系统已经发出的光线遍历kd树,而不必每当由图像处理系统发出光线就从存储器中取出kd树。
用于将光线发射进三维场景中的模式
根据本发明的实施例,图像处理系统可遵循一模式将光线发射进三维场景中。图5根据本发明的一个实施例例示了图像处理系统可遵循的将光线发射进三维场景中的示例性模式510。图5例示了可构成更大的监视器310的一部分的像素505的栅格。用在像素505的整个栅格上流动的虚线箭头连线例示了在将光线发射进三维场景305的一部分中图像处理系统可遵循的示例性模式510。图像处理系统可将第一光线通过最中心像素515发射进三维场景305中。其次,遵循图5中的模式510的图像处理系统可通过紧临最中心像素的右边的像素(即像素520)发出第二光线。图像处理系统可沿着代表模式510的虚线发出每个像素一个光线,直到图像处理系统针对监视器310中的每个像素发出每个像素一个光线。此外,根据本发明的其它实施例,图像处理系统可发出每个像素不同数量光线,或可遵循不同模式。
由于该模式,在一段时间内可以相对类似的轨迹将光线发射进场景中,其导致光线跟随相对类似的路径。遵循类似路径的光线通常也彼此相对接近地穿过三维场景。因此,以所述模式彼此相对接近地发出的光线可被遍历空间索引,其采用相对相同分支,到定义被光线相交的三维场景内的约束体积的节点。
由于随后发出的光线很可能与相同的约束体积相交,所以图像处理系统可记录先前发出的光线穿过空间索引的遍历路径,并且当利用随后光线遍历空间索引时,使用所记录的遍历路径来预获取定义了被前一光线相交的约束体积的信息。当工作负载管理器将后续光线遍历所述空间索引时,与获取约束体积信息相反,通过预获取所述约束信息,可减少将后续光线遍历空间索引所需的总时间量。
记录空间索引分支历史
为了预获取所述约束体积以便用于与跟踪随后发出的光线穿过空间索引有关的计算,图像处理系统可记录先前发出的光线穿过空间索引的遍历。根据本发明的一个实施例,通过记录针对空间索引中的节点所采用的分支,图像处理系统可记录前一光线的遍历历史。图像处理系统可使用分支历史表来记录遍历光线穿过空间索引时所采用的分支。
图6是根据本发明的一个实施例,例示了利用光线遍历空间索引,以及遍历空间索引的同时记录分支历史的方法600的流程图。方法600从步骤605开始,当图像处理系统(例如通过使用工作负载管理器205)可将初始光线发射进三维场景中。例如,如果图像处理系统遵循图5中例示的模式510,图像处理系统可发出初始光线穿过最中心像素515。在光线穿过最中心像素515之后,其可穿进由空间索引表示的三维场景。
例如,图7例示了对应于三维场景的空间索引700。空间索引700具有界节点705,并且包含9个节点层(即L1-L9)。每个节点层包含定义三维场景内的约束体积的节点。
在步骤610,在将初始光线发射进三维场景之后,工作负载管理器可执行光线-约束体积相交测试来确定直接在初始光线所相交的界节点705下面的节点层上的节点。
为了执行光线-约束体积相交测试,工作负载管理器205可从存储器中获取定义约束体积的信息,并且将信息装载到工作负载管理器205内的本地数据寄存器中。装载定义约束体积的信息可花费若干处理器周期。在这些处理周期期间,工作负载管理器205可能需要等待信息从存储器取出并且将其放入数据寄存器。因此,在从存储器取出数据的同时,工作负载管理器205可能是空闲的。如以下参考图8所述,根据本发明的实施例,当将随后发出的光线遍历空间索引700时,根据分支历史表可以预获取约束体积信息以避免空闲处理器周期。
在定义约束体积的信息被载入工作负载管理器205的数据寄存器之后,工作负载管理器205可执行光线-约束体积相交测试以确定哪个约束体积被光线相交。接下来,在步骤615中,工作负载管理器205可采用到定义了被光线相交的约束体积的节点的分支。如图7中所示,例如,根据光线约束体积测试的结果,工作负载管理器205可确定初始光线与由界节点705的左下方节点定义的约束体积相交。因此,工作负载管理器205可采用左分支到达定义了初始光线所相交的约束体积的节点。
接下来,在步骤620中,工作负载管理器205可在分支历史表中记录由工作负载管理器205采用的分支。如图7中所示,根据本发明的一个实施例,分支历史表710可包含一系列比特(bit)。分支历史表710内的每个比特位置可对应于空间索引700的一个层(例如L1-L9)。此外,每个比特位置可包含肯定比特(即逻辑″1″)或者不肯定比特(即逻辑″0″)。根据本发明的实施例,比特位置的″0″可表明从与比特位置对应的层上的节点采用左分支,而比特位置的″1″可表明从与比特位置对应的层上节点采用右分支。例如,分支历史表710中的第一比特可对应于空间索引700内的第一节点层(例如L1)。如上所述,工作负载管理器205可确定初始光线与由界节点705左下方的节点定义的约束体积相交。因此在步骤620中,工作负载管理器205可将分支历史表710中对应位置中的比特设置成″0″。将比特设置成″0″表明从空间索引700中的第一节点层L1采用左分支。
在步骤620之后,工作负载管理器205可前进到步骤625,其中工作负载管理器205可确定初始光线是否已被遍历到空间索引700的叶节点上。如果没有,工作负载管理器205可返回到步骤610以继续遍历空间索引700直到达到叶节点。因此,直到达到叶节点,工作负载管理器205都可继续执行光线-约束体积相交测试(步骤610),采用到定义了与初始光线相交的约束体积的节点的分支(步骤615),以及在分支历史表710中记录所采用的分支(步骤620)。
图7例示了初始光线可能遍历空间索引700的一个示例性路径。初始光线穿过空间索引700的遍历路径在图7中用加黑箭头和加黑方框来例示,加黑箭头表明由工作负载管理器205采用的分支,以及加黑方框表明定义了初始光线所相交的约束体积的节点。此外,在图7中例示分支历史表710,随着初始光线遍历空间索引700,对应于工作负载管理器205所采用的分支来填写分支历史比特。如图所示,分支历史表710具有单个比特对应于从其采用分支的空间索引700的每一层(即L1-9)。因此,随着工作负载管理器205将初始光线遍历空间索引700,分支历史表710包含由工作负载管理器205所采用的分支记录。
在工作负载管理器205将初始光线遍历空间索引700,直到达到叶节点之后,工作负载管理器可前进到步骤630,在该步骤中,可执行光线-基本单元相交测试以确定初始光线是否与由叶节点定义的约束体积内包含的任何基本单元相交。根据本发明的一个实施例,工作负载管理器205可执行光线-基本单元相交测试,或根据本发明的另一个实施例,可由向量吞吐引擎210执行光线-基本单元相交测试。
根据空间索引分支历史表预获取约束体积数据以及更新空间索引分支历史表
在已跟踪初始光线穿过空间索引700之后,工作负载管理器205可将后续光线发射进三维场景中。后续光线可被发出,使得其遍历接近最中心像素515的像素520。因此,由于随后发出的光线可具有类似于先前发出的或初始光线的轨迹,很可能随后发出的光线会以初始光线类似的路径遍历三维场景。此外,具有类似于先前光线的轨迹的所述随后发出的光线很可能会与空间索引中相同的约束体积相交,如与初始光线所相交的约束体积一样。
如上方法600中所述,在将初始光线遍历空间索引700的同时,由工作负载管理器205所采用的分支可能已被记录。到定义了初始光线所相交的约束体积的节点所采用的分支可能已被记录在分支历史表710中,因此,分支历史表710可被用于预获取定义了很可能被后续光线相交的约束体积的信息。在工作负载管理器205需要执行后续光线-约束体积测试之前,预获取的信息可被放入工作负载管理器205的本地数据寄存器中。因此,当工作负载管理器205需要执行光线-约束体积测试时,一旦工作负载管理器205开始执行后续光线-约束体积测试,所述信息可存于数据寄存器中,工作负载管理器205不需要获取约束体积信息。因此,如果在需要执行后续光线-约束体积相交测试之前,被工作负载管理器205预获取的约束体积是正确的约束体积(即随后发出的光线与预获取的约束体积相交),则不再需要获取所述数据可能所必需的处理器周期。因此,跟踪光线穿过空间索引所需的时间量以及因此从三维场景呈现二维图像所需要的时间可减少了获取约束体积信息所需的所述处理器周期数量。
然而,如果工作负载管理器205确定预获取的数据不是正确数据(即随后发出的光线不与预获取的约束体积相交),则可以从存储器中获取正确的约束体积信息,并且更新分支历史表,使得未来分支历史表的使用对于随后发出的光线来说很可能是准确的。由于图像处理系统按照模式发出光线,并且由于该模式,经过一段时间随后发出的光线具有类似轨迹,很可能随后发出的光线会如先前发出的光线(例如初始光线)一样与相同的约束体积相交。因此,预获取约束体积信息得到的好处(将光线遍历空间索引所需要的时间减少了)很可能大于预获取约束体积信息(利用预获取的不被光线相交的约束体积执行随后发出的光线-约束体积相交测试)的代价。
图8是根据本发明的一个实施例,例示了根据分支历史表710预获取约束体数据并且更新分支历史表710的方法800的流程图。方法800从步骤805开始,此时图像处理系统(例如通过使用工作负载管理器205)可将后续光线(例如紧跟在初始光线之后)发射进三维场景,并且开始将后续光线遍历所述空间索引700。
接下来,在步骤810中,工作负载管理器205可从存储器中取出定义了对应于第二节点层L2的约束体积的信息。所取出的约束体积信息可通过检查分支历史表710来确定。分支历史表710可指明从第一节点层L1引向第二层上的节点的所采用的分支。从该信息看到,被分支所引向的所述节点可被确定,并且从存储器中取出对应于被分支引向节点的约束体积信息。
通过检查分支历史表710,工作负载管理器205可确定先前光线(例如初始光线)采用界节点层左下方的分支来到达第二节点层L2上的节点。因此,在步骤810中,工作负载管理器205可取出定义了对应于图7中例示的空间索引700的界节点705的左下方的节点的约束体积的信息。工作负载管理器205然后可将取出的信息放进工作负载管理器205内的本地数据寄存器。
相对于执行光线-约束体积相交测试所需要的时间,从存储器中获取约束体积信息可花费大量时间。从存储器中获取约束体积信息可要求从高速缓冲存储器或系统存储器中的存储器位置读出数据,并且将从存储器中读出的数据装载到工作负载管理器205内的寄存器中。在从存储器中取出数据的同时,处理器可能没有需要执行的其它进程,因此可能空闲。
在取出定义了对应于第一节点层的约束体积的信息之后,工作负载管理器205可同时前进到两个不同步骤。两个步骤可以是包含步骤815、820、825、830和835的循环的开始,如下面所解释的,如被先前光线(例如初始光线)遍历一样,其可迭代如后续光线遍历相同节点一样多的次数。
具有多个处理线程的工作负载管理器205可同时执行指令。因此,所述循环的两个初始步骤(即步骤815和步骤820)可以通过独立的处理线程和/或工作负载管理器205内的电路被同时执行。
在步骤815中,工作负载管理器205可根据分支历史表710预获取后续节点层的数据。工作负载管理器第一次前进到步骤815时,所以后续节点层可以是例如第三节点层L3,因为在步骤810期间,定义第二节点层L2的约束体积的信息可能已被预先从存储器中取出并且被放入工作负载管理器205的数据寄存器中。在步骤815中后续节点层预获取什么数据可以根据分支历史表710来确定。
例如,如图7中所述,分支历史表710指明先前发出的光线与第三层L3上的节点相交,其位于第二节点层L2上的节点的左下方。如分支历史表710中所示,因为分支历史表710在对应于第二节点层L2的分支历史表710的比特位置中具有″0″,所以分支历史表指明了该节点。因此,在步骤815中,工作负载管理器205可预获取定义对应于第二节点层L2上的节点的左下方的节点的约束体积的信息。工作负载管理器205可将预获取的信息放入工作负载管理器205的数据寄存器中。
同时,在步骤815的执行期间,工作负载管理器205可执行步骤820。在820步骤中,工作负载管理器205可针对随后发出的光线执行光线-约束体积相交测试。利用被载入工作负载管理器205内的数据寄存器中的约束体积信息,工作负载管理器205可执行光线-约束体积相交测试。
在两个不同步骤之一中,被用于步骤820中的约束体积信息可能已被载入工作负载管理器205的数据寄存器中。在步骤820针对随后发出的光线的第一执行期间,定义第二节点层L2上的节点的信息可能在步骤810期间已被从存储器中取出并且被载入工作负载管理器的寄存器中。然而,随后通过步骤820时,比第二节点层低的节点层上的节点定义的约束体积信息可被预先取出并且载入数据寄存器中。
通过当工作负载管理器205正在对空间索引的先前或较高层上的节点定义的约束体积执行光线-约束体积相交测试时,在步骤815期间预获取约束体积信息,工作负载管理器205可消除与等待从存储器中取出约束体积信息相关的空闲时间。
步骤815和820之后,工作负载管理器205可前进到步骤825,其中工作负载管理器205可确定随后发出的光线是否与步骤820中测试过的约束体积相交。如果是这样的话,工作负载管理器205可前进到步骤830,其中工作负载管理器205可采用到定义了随后发出的光线所相交的约束体积的节点的空间索引中的分支。
例如,根据本发明的一个实施例,图9例示了随后发出的光线穿过空间索引700的遍历路径。如图所示,随后发出的光线的确与由界节点705左侧的第二节点层L2上的节点定义的约束体积相交。因此,在步骤830中,工作负载管理器205可采用到第二节点层L2上的节点(即界节点左下方的节点)的分支,所述第二节点层L2定义了所相交的约束体积。
然而,在步骤825中,如果工作负载管理器205确定随后发出的光线不与步骤820中测试过的约束体积相交,则工作负载管理器205可前进到步骤845,其中无需根据分支历史表710预获取约束体积,工作负载管理器205可执行一系列与将后续光线遍历所述空间索引有关的步骤(840、845和850)。下面进一步对所述一系列步骤进行讨论。
然而如果光线的确与预获取的约束体积相交,并且在步骤830中,工作负载管理器205采用到定义了相交的约束体积的节点的空间索引中的分支,在步骤835中,工作负载管理器205可确定后续光线是否已被遍历到叶节点。如果是,工作负载管理器205可前进到步骤850,其中工作负载管理器或其它处理部件(例如向量吞吐引擎210)可执行光线-基本单元相交测试以确定随后发出的光线是否与包含在由叶节点定义的约束体积内的任何基本单元相交。然而,如果在步骤835中,工作负载管理器205确定随后发出的光线尚未被遍历到叶节点,则工作负载管理器205可返回以同时执行步骤815和820。
因此,如果随后发出的光线继续与先前发出的光线所相交的约束体积相交,并且尚未到达叶节点,则工作负载管理器205可继续返回到步骤815和820,以根据分支历史表为后续节点层预获取与约束体积有关的数据,并利用步骤815的先前执行期间所预获取的数据继续执行后续光线-约束体积相交测试。
例如,针对具有图9中例示的空间索引遍历的随后发出的光线,工作负载管理器205根据分支历史表可预获取约束体积信息(即执行步骤815)5次。遍历具有图9中例示的遍历路径的随后发出的光线的工作负载管理器205可预获取数据(即执行步骤815),一次针对第三节点层L3、一次针对第四节点层L4、一次针对第五个节点层L5、一次针对第六节点层L6,以及一次针对第七节点层L7。
然而,在同时预获取第七节点层L7的约束体积信息,以及在步骤820中针对第六节点层L6上的约束体积执行后续光线-约束体积相交测试之后,图像处理系统在步骤825中可确定后续光线不与第六节点层L6上预获取的约束体积相交。因此,后续光线的轨迹与先前光线(例如初始光线)的轨迹有足够的不同,使得后续光线不与预获取的约束体积相交。因为在步骤825中确定随后发出的光线不与预获取的约束体积相交,所以在步骤825中,工作负载管理器205可前进到步骤840。
在步骤840中,工作负载管理器205可获取节点的约束体积信息,该节点不同于对其预获取约束体积信息的节点。例如,如果图像处理系统使用kd树作为空间索引,则每一内部节点只有到两个节点的分支。因此,在步骤840中,如果工作负载管理器205已预获取了父节点左下方的约束体积信息,则工作负载管理器205可获取父节点右下方的约束体积信息。反之,如果工作负载管理器已预获取了父节点右下方的约束体积信息,则工作负载管理器205可获取父节点左下方的约束体积信息。
因此,如图9中所示,在步骤820中,工作负载管理器205根据分支历史表710中的第五比特(即″0″表明先前光线采用第五节点层L5上的节点左下方的分支),可能已经预获取了第五节点层L5上的节点左下方的节点的约束体积。然而,在步骤825中,工作负载管理器205可确定随后发出的光线不与第五节点层L5上的节点左下方的节点相交。因此,在步骤840中,工作负载管理器205可获取不同于步骤815中按照分支历史表710预获取节点的一个节点的约束体积信息。
例如,如图9中所示,在步骤840中,工作负载管理器205可获取由空间索引700的第五节点层L5上的节点右下方的节点定义的约束体积信息。接下来,在步骤845中,工作负载管理器205可继续跟踪后续光线穿过空间索引,并且在分支历史表710中记录新分支历史记录。因此,在步骤845中,工作负载管理器205可获取由节点定义的约束体积信息,并且采用到定义后续光线所相交的约束体积的节点的分支。当工作负载管理器205采用到节点的分支时,工作负载管理器205可以在分支历史表中记录当利用后续光线遍历空间索引700时所采用的分支。根据本发明的一个实施例,根据由随后发出的光线所采用的分支,可以更新分支历史表。
例如,由图9中所例示的分支历史表710中呈粗黑体的比特所例示的,随着后续光线遍历空间索引,分支历史表710已被更新以表示由工作负载管理器205采用的最近4个分支。通过利用空间索引的最近遍历来更新分支历史表,工作负载管理器205可预获取对应于新近发出的光线的约束体数据,所述光线跟随与所述随后发出的光线类似轨迹。
在将随后发出的光线遍历空间索引700,直到达到叶节点之后,工作负载管理器205(或其它适当处理部件)可执行光线-基本单元相交测试以确定随后发出的光线是否与位于叶节点所定义的约束体积内的任何基本单元相交。
根据本发明的实施例,记录空间索引分支历史记录以及利用空间索引分支历史记录可用硬件、软件,或两者都有来实现。例如,根据本发明的一个实施例,可以在位于工作负载管理器中的寄存器内记录和存储空间索引分支历史记录。然后,根据存储在寄存器中的分支历史记录,可由工作负载管理器预获取空间索引信息(例如约束体积)。可选地,根据本发明的另一个实施例,空间索引分支历史记录可由软件记录,并且由空间索引分支历史记录(例如约束体积)识别的信息可由软件预获取。此外,考虑其它实施例,其使用硬件和/或软件以便记录和使用空间索引分支历史记录。
结论
根据本发明的实施例,随着先前发出的光线遍历所述空间索引,所述先前发出的光线所采用的分支可被记录。所记录的分支历史记录随后可被用来预获取定义了与先前发出的光线所相交的约束体积的信息。在处理部件执行其它图像处理相关的任务同时,可取出所述约束体积信息,并且当处理部件准备利用后续光线执行光线-约束体积相交测试时,所述约束体积信息可以在处理部件的数据寄存器中等待。如果后续光线如先前发出的光线一样与相同的约束体积相交,则遍历空间索引所需的时间量可减少了取出所述约束体积信息必需的时间量。通过减少光线遍历空间索引需要的时间,可减少从三维场景呈现二维图像所需的时间量。
虽然此处参考利用光线跟踪图像处理的空间索引来描述用于记录并且利用树结构的分支历史记录的方法和装置,但是应当理解,本发明不局限于记录和利用分支历史记录以用于单独执行光线跟踪。相反,本发明的实施例可被用于记录和使用分支历史记录,同时遍历可代表各种项的树结构。例如,与记录和使用分支历史记录有关的本发明的实施例可被用于连接树结构,该树结构被用于物理仿真、音频仿真或人工智能仿真。因此,一般说来无论是否与图像处理相关,树遍历可使用此处描述的方法和装置。
虽然前面的描述涉及本发明的优选实施例,但在不偏离本发明的基本范围和随后的权利要求书所限定的本发明范围的前提下可以设计本发明的其它和进一步的实施例。
Claims (15)
1.一种利用空间索引的光线跟踪的方法,所述空间索引具有定义三维场景的约束体积的节点,该方法包括:
发出第一光线到所述三维场景中;
通过采用从内部节点直到达到叶节点的分支来遍历所述空间索引,其中基于第一光线是否与由所述节点定义的约束体积相交来采用分支;
记录所述第一光线的遍历的历史;
发出第二光线到所述三维场景中;
基于所述第一光线的遍历的历史,预获取定义了所述第一光线所相交的约束体积的信息;以及
采用从内部节点直到达到叶节点的分支来遍历所述空间索引,其中基于所述第二光线是否与由所述节点定义的约束体积相交来采用分支。
2.如权利要求1所述的方法,其中记录所述第一光线的遍历的历史包括:
当利用所述第一光线遍历所述空间索引时填写分支历史表,所述分支历史表标识了所采用的分支。
3.如权利要求2所述的方法,其中所述空间索引是kd树,并且其中所述分支历史表包括对应于所述kd树内的节点层的一系列比特位置。
4.如权利要求3所述的方法,其中填写分支历史表包括:
在比特位置中放入第一值,其指明从相应节点层采用左分支;以及
在比特位置中放入第二值,其指明从相应节点层采用右分支。
5.如权利要求2所述的方法,进一步包括:
记录所述第二光线的遍历的历史。
6.如权利要求5所述的方法,其中记录所述第二光线的遍历的历史包括,当利用所述第二光线遍历所述空间索引时更新所述分支历史表以反映所采用的分支。
7.如权利要求1所述的方法,其中预获取定义了约束体积的信息包括从存储器中取出所述信息,并且将所述信息放入处理部件的本地数据寄存器中。
8.一种计算机可读介质,其包含当被执行时执行操作的程序,包括前面要求保护的方法权利要求任意之一的步骤。
9.一种系统,包括:
存储器;以及
处理部件,其被配置成:
发出第一光线到三维场景中;
通过采用从内部节点直到达到叶节点的分支遍历空间索引,所述空间索引具有定义所述三维场景的约束体积的节点,其中基于所述第一光线是否与由所述节点定义的约束体积相交来采用分支;
记录所述第一光线的遍历的历史;
发出第二光线到所述三维场景中;
基于所述第一光线的遍历的历史,从存储器预获取定义了所述第一光线所相交的约束体积的信息;以及
采用从内部节点直到达到叶节点的分支遍历所述空间索引,其中基于所述第二光线是否与由所述节点定义的约束体积相交来采用分支。
10.如权利要求9所述的系统,其中记录所述第一光线的遍历的历史包括:
利用所述处理部件,当利用第一光线遍历所述空间索引时填写分支历史表,所述分支历史表标识所采用的分支。
11.如权利要求10所述的系统,其中所述空间索引是kd树;以及
其中所述分支历史表包括对应于所述kd树内的节点层的一系列比特位置。
12.如权利要求11所述的系统,其中填写分支历史表包括:
利用所述处理部件,在比特位置中放入第一值,其指明左分支从相应节点层得到;以及
利用所述处理部件,在比特位置中放入第二值,其指明右分支从相应节点层得到。
13.如权利要求10所述的系统,其中所述处理部件进一步被配置成:
记录所述第二光线的遍历的历史。
14.如权利要求13所述的系统,其中记录第二光线的遍历的历史包括:
利用所述处理部件,当利用所述第二光线遍历所述空间索引时更新所述分支历史表以反映所采用的分支。
15.一种遍历具有节点的树结构的方法,包括:
在第一遍历期间,通过采用从节点直到达到叶节点的分支遍历所述树结构,其中基于由所述节点定义的条件是否满足来采用分支;
记录所述空间索引的遍历的历史;以及
在第二遍历期间,基于所记录的所述空间索引的遍历的历史,预获取定义了节点的信息,并且通过采用从节点直到达到叶节点的分支遍历所述树结构,其中基于由所述节点定义的条件是否满足来采用分支。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/550,020 US20080088619A1 (en) | 2006-10-17 | 2006-10-17 | Branch Prediction for Acceleration Data Structure Traversal |
US11/550,020 | 2006-10-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101165721A true CN101165721A (zh) | 2008-04-23 |
CN101165721B CN101165721B (zh) | 2010-06-02 |
Family
ID=39302660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101802387A Expired - Fee Related CN101165721B (zh) | 2006-10-17 | 2007-10-16 | 光线跟踪的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080088619A1 (zh) |
CN (1) | CN101165721B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102282591A (zh) * | 2008-09-10 | 2011-12-14 | 柯斯提克绘图有限公司 | 光线跟踪系统架构和方法 |
CN104050707A (zh) * | 2013-03-15 | 2014-09-17 | 想象技术有限公司 | 使用点采样和预计算光传输信息进行的渲染 |
CN105279783A (zh) * | 2014-05-27 | 2016-01-27 | 三星电子株式会社 | 在光线跟踪系统中遍历加速结构的设备和方法 |
CN107481314A (zh) * | 2017-06-30 | 2017-12-15 | 浙江科澜信息技术有限公司 | 一种基于kd树的阴影体优化方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7808500B2 (en) * | 2006-11-21 | 2010-10-05 | International Business Machines Corporation | Method for improving spatial index efficiency by jittering splitting planes |
KR101661166B1 (ko) * | 2010-06-14 | 2016-09-29 | 연세대학교 산학협력단 | 3차원 영상 시스템에서 광선 추적 방법 및 장치 |
KR102072515B1 (ko) * | 2012-10-16 | 2020-02-03 | 삼성전자주식회사 | 영상 처리 장치 및 방법 |
KR20150034062A (ko) * | 2013-09-25 | 2015-04-02 | 삼성전자주식회사 | 동일한 그룹의 데이터를 라우팅하는 방법 및 장치, 렌더링 유닛을 재구성하는 방법 및 장치 |
KR20150039496A (ko) * | 2013-10-02 | 2015-04-10 | 삼성전자주식회사 | 이전 렌더링의 결과를 이용하여 광선을 추적하는 방법 및 장치 |
KR102116981B1 (ko) * | 2013-10-02 | 2020-05-29 | 삼성전자 주식회사 | 광선 추적 가속 방법 및 장치 |
KR102193683B1 (ko) | 2013-10-22 | 2020-12-21 | 삼성전자주식회사 | 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 |
KR20150057868A (ko) | 2013-11-20 | 2015-05-28 | 삼성전자주식회사 | 레이 트레이싱 시스템에서의 이진트리 탐색 방법 및 장치 |
US8842117B1 (en) | 2014-02-13 | 2014-09-23 | Raycast Systems, Inc. | Computer hardware architecture and data structures for lookahead flags to support incoherent ray traversal |
GB2526598B (en) | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
KR20170036416A (ko) * | 2015-09-24 | 2017-04-03 | 삼성전자주식회사 | 트리를 탐색하는 장치 및 방법 |
GB2588229A (en) * | 2019-10-18 | 2021-04-21 | Sony Interactive Entertainment Inc | Navigation system and method |
CN113377764B (zh) * | 2021-05-07 | 2024-04-12 | 北京锐服信科技有限公司 | 一种pcap数据包高速索引方法及系统 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4679141A (en) * | 1985-04-29 | 1987-07-07 | International Business Machines Corporation | Pageable branch history table |
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 |
US5905507A (en) * | 1996-01-16 | 1999-05-18 | International Business Machines Corporation | Compression of geometric models using spanning trees |
US6577769B1 (en) * | 1999-09-18 | 2003-06-10 | Wildtangent, Inc. | Data compression through adaptive data size reduction |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US7441110B1 (en) * | 1999-12-10 | 2008-10-21 | International Business Machines Corporation | Prefetching using future branch path information derived from branch prediction |
EP1264281A4 (en) * | 2000-02-25 | 2007-07-11 | Univ New York State Res Found | ARRANGEMENT AND METHOD FOR PROCESSING AND PLAYING A VOLUME |
US6625611B1 (en) * | 2000-03-15 | 2003-09-23 | Cadence Design Systems, Inc. | Method and apparatus for representing multidimensional data |
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 |
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 |
CN1410948A (zh) * | 2002-09-23 | 2003-04-16 | 清华大学 | 平面和球面非线性折射和反射的实时光线跟踪方法 |
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 |
CN100348158C (zh) * | 2005-05-26 | 2007-11-14 | 西安理工大学 | Ct图像的快速渐进式直接体绘制三维重建方法 |
-
2006
- 2006-10-17 US US11/550,020 patent/US20080088619A1/en not_active Abandoned
-
2007
- 2007-10-16 CN CN2007101802387A patent/CN101165721B/zh not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102282591A (zh) * | 2008-09-10 | 2011-12-14 | 柯斯提克绘图有限公司 | 光线跟踪系统架构和方法 |
CN104050707A (zh) * | 2013-03-15 | 2014-09-17 | 想象技术有限公司 | 使用点采样和预计算光传输信息进行的渲染 |
CN104050707B (zh) * | 2013-03-15 | 2019-01-29 | 想象技术有限公司 | 使用点采样和预计算光传输信息进行渲染的系统和方法 |
US10453245B2 (en) | 2013-03-15 | 2019-10-22 | Imagination Technologies Limited | Query resolver for global illumination of 3-D rendering |
US11288855B2 (en) | 2013-03-15 | 2022-03-29 | Imagination Technologies Limited | Determining lighting information for rendering a scene in computer graphics using illumination point sampling |
US11574434B2 (en) | 2013-03-15 | 2023-02-07 | Imagination Technologies Limited | Producing rendering outputs from a 3-D scene using volume element light transport data |
US11861786B2 (en) | 2013-03-15 | 2024-01-02 | Imagination Technologies Limited | Determining lighting information for rendering a scene in computer graphics using illumination point sampling |
CN105279783A (zh) * | 2014-05-27 | 2016-01-27 | 三星电子株式会社 | 在光线跟踪系统中遍历加速结构的设备和方法 |
CN107481314A (zh) * | 2017-06-30 | 2017-12-15 | 浙江科澜信息技术有限公司 | 一种基于kd树的阴影体优化方法 |
Also Published As
Publication number | Publication date |
---|---|
US20080088619A1 (en) | 2008-04-17 |
CN101165721B (zh) | 2010-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101165721B (zh) | 光线跟踪的方法和系统 | |
KR101054702B1 (ko) | 광선 추적 이미지 처리 시스템의 픽셀 컬러 결정 | |
US7940265B2 (en) | Multiple spacial indexes for dynamic scene management in graphics rendering | |
US8004518B2 (en) | Combined spatial index for static and dynamic objects within a three-dimensional scene | |
US8018453B2 (en) | Deferred acceleration data structure optimization for improved performance | |
US7773087B2 (en) | Dynamically configuring and selecting multiple ray tracing intersection methods | |
JP5043939B2 (ja) | 3次元シーンの境界ボリュームを定めるノードを有する空間インデックスを用いる光線追跡のための操作を行なうプログラムを含むコンピュータ可読媒体及びシステム | |
US8085267B2 (en) | Stochastic addition of rays in a ray tracing image processing system | |
US8022950B2 (en) | Stochastic culling of rays with increased depth of recursion | |
US7893936B2 (en) | Generating efficient spatial indexes for predictably dynamic objects | |
US7808500B2 (en) | Method for improving spatial index efficiency by jittering splitting planes | |
US7940266B2 (en) | Dynamic reallocation of processing cores for balanced ray tracing graphics workload | |
JP5063695B2 (ja) | 空間インデックスをトラバースする方法及びシステム | |
US7864174B2 (en) | Methods and systems for reducing the number of rays passed between processing elements in a distributed ray tracing system | |
US8339398B2 (en) | Integrated acceleration data structure for physics and ray tracing workload | |
CN101276479B (zh) | 图像处理方法和系统 | |
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 | |
US20210304489A1 (en) | Graphics processing | |
US8102389B2 (en) | Box casting using an integrated acceleration data structure | |
KR20220164442A (ko) | 그래픽 프로세싱 | |
US20080079715A1 (en) | Updating Spatial Index Partitions Based on Ray Tracing Image Processing System Performance | |
KR20220164441A (ko) | 그래픽 프로세싱 |
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: 20100602 Termination date: 20151016 |
|
EXPY | Termination of patent right or utility model |