用于划分空间索引的方法和系统的制作方法

文档序号:6455719阅读:159来源:国知局
专利名称:用于划分空间索引的方法和系统的制作方法
技术领域
本发明的实施例通常涉及计算机处理领域。
背景技术
根据三维场景渲染(render) 二维图像的过程通常被称为图像处 理。随着现代计算机工业的发展,图像处理也在发展。图像处理发展 的一个特定目标是使得三维场景的二维仿真或渲染尽可能逼真。渲染 逼真的图像的一个限制是现代监视器通过使用像素来显示图像。像素 是监视器上可被照亮的最小空间区域。大多数现代计算机监视器将使 用数十万或数百万像素的组合来构成整个显示或渲染的场景。各个像 素按照网格图案(grid pattern )布置,并且共同覆盖监视器的整个观 看区域。可照亮每个单个像素以渲染用于观看的最终图片。
一种使用像素来将真实世界三维场景渲染到二维监视器上的技 术被称为光栅化(rasterization)。光栅化是采用以矢量格式表示的 二维图像(场景中几何物体的数学表示)并将该图像转换成用于在监 视器上显示的各个像素的过程。光栅化在快速渲染图形和使用数量相 对低的计算能力方面是有效的;但是,光栅化有一些缺点。例如,光 栅化经常缺乏真实性,这是由于光栅化并非基于光的物理性质,而是 基于投影到二维平面上的场景中三维几何物体的形状。而且,利用光 栅化渲染场景所需要的计算能力随着要渲染的场景的复杂度的增加 而直接攀升。随着图像处理变得更加逼真,所渲染的场景也变得更加 复杂。因此,由于光栅化随着复杂度而直接攀升,光栅化随着图像处 理的发展而受到不利影响。
另一种利用像素来将真实世界三维场景渲染到二维监视器上的 技术被称为射线跟踪(ray tracing)。射线跟踪技术跟踪假想射线——
7该射线的行为类似于光线——到要在计算机屏幕上渲染的三维场景 上的传播。所述射线从坐在计算机屏幕后的观看者的眼睛开始,穿过 组成计算机屏幕的像素射向所述三维场景。每根被跟踪的射线前进到 场景中并且可能与场景中的物体相交。如果射线与场景中的物体相 交,则该物体的性质和几个其他影响因素被用于计算使射线暴露出的 颜色和光的量或者该颜色和光的缺乏量。这些计算然后被用于确定被 跟踪的射线所通过的像素的最终颜色。
对于单个场景要执行很多次跟踪射线过程。例如,可以针对显示
中的每个像素跟踪单根射线。 一旦已经跟踪了足够数目的射线以确定 组成计算机屏幕的二维显示的所有像素的颜色,则可在计算机屏幕上 向观看者显示三维场景的二维合成。
射线跟踪通常比光栅化更逼真地渲染真实世界的三维场景。这部 分是由于射线跟踪模拟了光在真实世界环境中如何传播和动作,而不 是如同光栅化中所实现的那样简单地将三维形状投影到二维平面上。 因此,利用射线跟踪渲染的图形更准确地在监视器上描绘了我们的眼 睛通常在真实世界中看到的场景。
此外,随着场景变得更加复杂,射线跟踪在场景复杂度增长方面 比光栅化处理得更好。射线跟踪随着场景复杂度增加而对数攀升。这
是由于如下事实即使场景变得更加复杂,也可投射相同数目的射线 到场景中。因此,跟光栅化不同,射线跟踪没有随着场景变得更加复 杂而在计算能力要求方面遭受不利影响。
射线跟踪的一个主要缺点是渲染场景所需要的计算量大,因而所 需要的处理能力高。当需要快速渲染时,这会引起问题。例如,当图 像处理系统出于动画目的——例如在游戏控制台中——而渲染图形 时。由于射线跟踪的计算要求增加,难以足够快地渲染动画以使其看 起来逼真(逼真的动画大约为每秒20至24帧)。
因此,需要更加有效的技术和设备来执行射线跟踪。

发明内容
8本发明的实施例通常提供用于执行射线跟踪的方法和装置。 根据本发明的第 一方面,提供一种用于划分具有节点的空间索引
的方法,其中所述节点定义三维场景的有界体块(bounding volume )。
所述方法通常包括提供第一处理单元和第二处理单元;以及将所述
空间索引至少划分成第 一部分和第二部分,其中所述第 一处理单元可
操作来执行与使射线遍历所述第一部分相关联的一个或多个算法,并 且其中所述第二处理单元可操作来执行与使射线遍历所述第二部分
相关联的一个或多个算法。
根据本发明的第二方面,提供一种用于遍历具有节点的空间索引 的方法,其中所述节点定义三维场景的有界体块。所述方法通常包括 通过创建至少一个经过所述空间索引的至少一个分支的分区边界,将 所述空间索引至少划分成第一分区和第二分区;产生进入所述场景中 的射线;通过采取从内部节点开始的分支直到到达叶节点,来遍历所 述空间索引,其中基于所述射线是否与由所述节点定义的有界体块相 交来采取分支;以及当采取了包含所述分区边界的所述分支时,将定 义所述射线的信息从第一处理单元传送到第二处理单元。
根据本发明的第三方面,提供一种系统。所述系统通常包括具 有节点的空间索引,其中所述节点定义三维场景的有界体块;第一处 理单元;第二处理单元;以及图像处理系统。所述图像处理系统通常 被配置成将所述空间索引至少划分成第一部分和第二部分,其中所述 第一处理单元可操作来执行与使射线遍历所述第一部分相关联的一 个或多个算法,并且其中所述第二处理单元可操作来执行与使射线遍 历所述第二部分相关联的一个或多个算法。
根据第四方面,提供 一 种用于划分具有节点的空间索引的计算机 程序,其中所述节点定义三维场景的有界体块,所述计算机程序包括
适用于执行以下将所述空间索引至少划分成第一部分和第二部分的 步骤的程序代码手段,其中所述第一处理单元可操作来执行与使射线 遍历所述第一部分相关联的一个或多个算法,并且其中所述第二处理 单元可操作来执行与使射线遍历所述第二部分相关联的一个或多个
9算法,当程序在计算机上运行时执行所述步骤。


现在参考以下附图,仅通过举例的方式说明本发明的优选实施例。
图l说明根据本发明一个实施例的多核处理单元。
图2和图6说明根据本发明实施例的多核处理单元网络。 图3是根据本发明 一个实施例的图像处理系统要渲染的示例性三 维场景。
图4A-4C说明根据本发明的 一个实施例的、图像处理系统要渲染 的二维空间和图像处理系统要创建的相应空间索引。
图5说明根据本发明的一个实施例的示例性的划分后的空间索引。
具体实施例方式
本发明的实施例提供了用于划分空间索引的设备和技术。在本发 明的一个实施例中,图像处理系统可将空间索引划分成多个部分,以 使得不同的处理单元可负责使射线遍历所述空间索引的不同部分。可 基于任意多个因素来确定在哪里划分空间索引。例如,根据本发明的 某些实施例,可划分空间索引以使得在多个处理单元中均匀分布工作 量。划分空间索引以均匀分布工作量可基于将被包括在每个所得到的 分区中的内部节点的数目、将被包括在每个所得到的分区中的叶节点 的数目、或者将被包括在每个所得到的分区中的基元(primitive)的 数目。
下面参考本发明的实施例。但是应当理解本发明不限于特定的所 描述的实施例。相反,下面的特征和单元的任意组合——无论是否与 不同实施例相关——都被预期用于实施和实践本发明。而且,在不同 实施例中,相对于现有技术本发明都提供了大量优点。然而,虽然相 对于其他可能解决方案和/或相对于现有技术本发明的实施例可获得多个优点,但是特定优点是否由特定实施例实现并不是对本发明的限 制。因此,下面的方面、特征、实施例和优点仅仅是示意性的,并且 不被认为是所附权利要求的元素或限制,除非在权利要求中进行了明 确记载。类似地,所说的"本发明"不应当被解释为这里公开的任何发 明主题的概括,并且不应当被认为是所附权利要求的元素或限制,除 非在权利要求中进行了明确记载。
示例性的处理器配置和通信网络
图l说明根据本发明 一个实施例的多核处理单元ioo。多核处理单
元100包括多个基本吞吐量引擎105 (Basic Throughput Engine, BTE) 。 BTE 105可包含多个处理线程和内核高速緩存(例如L1高速 緩存)。位于每个BTE中的处理线程可访问共享的多核处理单元高速 緩存IIO (例如L2高速緩存)。
BTE 105还可访问多个收件箱(inbox) 115。收件箱115可以是 存储器映射的地址空间。收件箱115可被映射到位于每个BTE 105中的 处理线程。位于BTE中的每个线程可具有存储器映射的收件箱,并可 访问所有其他存储器映射的收件箱115。收件箱115組成由BTE 105使 用的低延迟、高带宽的通信网络。
BTE可利用收件箱115作为网络来彼此进行通信和在BTE间重新 分布数据处理工作。对于某些实施例,单独的待发箱(outbox)可用 在通信网络中,例如用于接收BTE105的处理结果。对于其他实施例, 收件箱115也可用作待发箱,例如, 一个BTE105将处理功能的结果直 接写到将使用该结果的另一个BTE 105的收件箱。
图像处理系统的总性能可依赖于BTE怎样划分和重新分布工作。 收件箱115的网络可用来收集工作并将其分发给其他BTE,而不破坏 具有BTE通信数据包的共享多核处理单元高速緩存llO,其中所述 BTE通信数据包没有帧到帧相千性。每帧能渲染数百万三角形的图像 处理系统可包括许多以这种方式连接的BTE 105。
在本发明的一个实施例中, 一个BTE 105的线程可被分配给工作
ii量管理器。图像处理系统可使用各种软件和硬件组件来根据三维场景 渲染二维图像。根据本发明的一个实施例,图像处理系统可使用工作 量管理器利用图像处理系统发出的射线来遍历空间索引。空间索引
——如同下面参照图4描述的那样,可以被实施为树型数据结构,其 用于将相对大的三维场景划分成较小的有界体块。将射线跟踪方法用 于图像处理的图像处理系统可利用空间索引来快速确定射线-有界体 块的相交。在本发明的一个实施例中,工作量管理器可通过利用空间 索引来执行射线-有界体块相交测试。
在本发明的一个实施例中,多核处理单元100上的多核处理单元 BTE 105的其他线程可以是矢量吞吐量引擎(vector throughput engine)。在工作量管理器确定射线-有界体块相交后,工作量管理器 可经由收件箱115发出(发送)射线到多个矢量吞吐量引擎中的一个。 然后矢量吞吐量引擎可确定射线是否与包含在有界体块中的基元相 交。矢量吞吐量引擎还可执行与确定射线所通过的像素的颜色有关的 操作。
图2说明根据本发明 一个实施例的多核处理单元网络200。图2还 说明本发明的一个实施例,其中多核处理单元100的一个BTE的线程 是工作量管理器205。根据本发明的一个实施例,多核处理单元网络 200中的每个多核处理单元22(h-n可包含一个工作量管理器205LN。根 据本发明的一个实施例,多核处理单元网络200中的每个多核处理单 元220w也可包含多个矢量吞吐量引擎210。
根据本发明的一个实施例,工作量管理器205ln可利用高速总线 225来与其他多核处理单元22(h.n的其他工作量管理器205LN和/或矢量 吞吐量引擎210通信。每个矢量吞吐量引擎210可利用高速总线225来 与其他矢量呑吐量引學210或工作量管理器205ln通信。工作量管理器 处理器205可利用高速总线225来收集有关图像处理的任务并将其分 发给其他工作量管理器205LN,和/或分发任务给其他矢量吞吐量引擎 210。使用高速总线225可允许工作量管理器205LN进行通信而不影响 具有与工作量管理器通信有关的数据包的高速緩存230。
12示例性三维场景
图3是图像处理系统要渲染的示例性三维场景305。物体320可在 三维场景305中。图3中的物体320具有不同的几何形状。虽然图3中只 示出了4个物体,但是典型三维场景中的物体数目可以更多或更少。 通常,三维场景中的物体将比图3中示出的要多得多。
如图3所示,物体具有不同的几何形状和大小。例如,图3中的一 个物体是雉体320a。图3中的其他物体是盒状物3208.!)。在许多现代图 像处理系统中,物体经常被分割为较小的几何形状(例如方形、圆形、 三角形,等等)。然后,较大的物体由大量较小的简单几何形状来表 示。这些较小的几何形状通常被称为基元。
场景305中还示出了光源325a.b。光源可照亮位于场景305内的物 体320。而且,根据光源325和物体320在场景305中的位置,光源可导 致阴影被投射到场景305中的物体上。
三维场景305可被图像处理系统渲染成二维图片。图像处理系统 还可使二维图片被显示在监视器310上。监视器310可使用具有不同颜 色的许多像素330来渲染最终的二维图片。
图像处理系统使用来将三维场景320渲染成二维图片的一种方法 被称为射线跟踪。射线跟踪是通过图像处理系统从观看者315的视角 (perspective)"发出,,或"发射"射线到三维场景320中来完成的。所述
射线具有与光线类似的性质和行为。
图3中可以看到一根从观看者315的位置发出并穿过三维场景305 的射线340。由于射线340从观看者315行进到三维场景305,因此射线 340通过图像处理系统要渲染的最终二维图片所在的平面。在图3中, 监视器310代表该平面。像素335代表射线340通过该平面或监视器310 的点。
如同前面简要讨论的那样,大多数图像处理系统利用具有数千像 素(如果不是数百万像素的话)的网格330来在监视器310上渲染最终 场景。每个单个像素可显示不同的颜色来在监视器310上渲染最终的合成二维图片。利用射线跟踪图像处理方法来根据三维场景渲染二维 图片的图像处理系统将计算所发出的一根或多根射线在三维场景中 遇到的颜色。图像处理场景然后将射线所遇到的颜色分配给射线在其 从观看者到三维场景的路程上所通过的像素。
每个像素的所发出的射线的数目可以变化。某些像素可具有为要 渲染的特定场景而发出的许多射线。在这种情况下,像素的最终颜色 由来自为该像素发出的所有射线的每种颜色贡献来确定。其它像素可 能仅仅具有单根所发出的射线来确定像素在二维图片中的所得到的 颜色。某些像素可能没有任何由图像处理系统发出的射线,在这种情 况下,其颜色可由图像处理系统中的算法来确定、近似或分配。
为了确定二维图片中像素335的最终颜色,图像处理系统必须确 定射线340是否与场景中的物体相交。如果射线没有与场景中的物体 相交,其可能被分配以默认的背景颜色(例如蓝色或黑色,表示白天 或晚上的天空)。相反地,当射线340穿过三维场景305时,射线340 可能碰到物体。当射线碰到场景中的物体时,物体的颜色可被分配给 射线通过的像素。但是,物体的颜色必须在其被分配给像素之前确定。
许多因素可影响原始射线340碰到的物体的颜色。例如,三维场 景中的光源可照亮物体。而且,物体的物理性质可影响物体的颜色。 例如,如果物体是反光的或透光的,则其它非光源物体可影响物体的 颜色。
为了确定来自三维场景中其它物体的影响,可从原始射线340与 物体相交的点发出次级射线(secondary ray)。例如, 一种类型的次 级射线可以是阴影射线(shadow ray)。阴影射线可用来确定光对于 原始射线340与物体相交的点的影响。另一种类型的次级射线可以是 透射射线(transmitted ray)。透射射线可用来确定什么颜色或光可 透过物体的主体。此外,第三种类型的次级射线可以是反射射线 (reflected ray)。反射射线可用来确定什么颜色或光被反射到物体 上。
如同上面提到的那样, 一种类型的次级射线可以是阴影射线。可以从原始射线与物体的相交点开始跟踪每根阴影射线,直至三维场景
305内的光源。如果该射线到达光源而在该射线到达该光源之前没有 遇到另一个物体,则光源将照亮原始射线在该原始射线碰到物体的点 处所碰到的该物体。
例如,阴影射线34lA可从原始射线340与物体320A相交的点发出, 并且可在朝向光源325a的方向上行迸。阴影射线34U到达光源325A而 没有遇到场景305中的任何其它物体320。因此,光源325a将照亮在原 始射线340与物体320a相交的点处的物体320a。
其它阴影射线可具有其在原始射线碰到物体的点和光源之间的 被三维场景中的另一个物体所阻挡的路径。如果挡住在原始射线碰到
的物体上的点和光源之间的路径的物体是不透明的,则光源将不会照 亮在原始射线碰到物体的点处的物体。因此,光源可能不会影响原始 射线的颜色,从而也不会影响二维图片中要渲染的像素的颜色。但是, 如果物体是半透明或透明的,则光源可照亮在原始射线碰到物体的点 处的物体。
例如,阴影射线34lB可从原始射线340与物体32(U相交的点发出, 并且可在朝向光源325b的方向上行迸。在这个例子中,阴影射线34lB 的路径被物体320d所阻档。如果物体320d是不透明的,則光源325b将 不会照亮在原始射线340与物体320a相交的点处的物体320a。但是, 如果挡住阴影射线的物体320n是半透明或透明的,光源325b可照亮在 原始射线340与物体320a相交的点处的物体320a。
另一种类型的次级射线是透射射线。如果原始射线与其相交的物 体具有透明或者半透明的性质(例如玻璃),则可由图像处理系统发 出透射射线。透射射线以相对于原始射线碰到物体的角度的某一角度 穿过物体。例如,可以看到透射射线344穿过原始射线340与其相交的 物体320a。
另一种类型的次级射线是反射射线。如果原始射线与其相交的物 体具有反射性质(例如金属表面),则将由图像处理系统发出反射射 线来确定物体可反射什么颜色或光。反射射线以相对于原始射线与物体相交的角度的某一角度离开物体行进。例如,可由图像处理系统发
出反射射线343以确定原始射线340与其相交的物体320A可反射什么 颜色或光。
所有次级光线(例如,阴影射线、透射射线、反射射线等)的颜 色和光的总贡献将导致原始射线通过的像素的最终颜色。
示例性KD树
执行射线跟踪时遇到的 一个问题是迅速有效地确定发出的射线 是否与要渲染的场景内的任何物体相交。本领域技术人员已知的一种 更有效地确定射线相交的方法是使用空间索引。空间索引将三维场景 或世界分成较小的体块(volume)(相对于整个三维场景而言较小), 其可能包含也可能不包含基元。然后图像处理系统可使用这些较小体 块的已知边界来确定射线是否可能与包含在较小体块中的基元相交。 如果射线与包含基元的体块相交,则可利用射线相对于已知位置的轨 迹和包含在该体块中的基元的大小来运行射线相交测试。如果射线不 与特定体块相交,则不需要针对包含在该体块中的基元运行射线-基元 相交测试。此外,如果射线与不包含基元的有界体块相交,则不需要 针对该有界体块运行射线-基元相交测试。因此,通过减少可能是必要 的射线-基元相交测试的次数,使用空间索引将大大提高射线跟踪图像 处理系统的性能。不同的空间索引加速数据结构的一些例子是八叉树 (octree) 、 k维树(kd树)和二叉空间划分树(BSP树)。尽管存在 几种不同的空间索引结构,为了易于描述本发明的实施例,下面的例 子中将使用kd树。但是,本领域技术人员将容易认识到,本发明的实 施例可应用于任何不同类型的空间索引。
kd树利用轴对齐的有界体块来将整个场景或空间划分成较小的 体块。即,kd树可通过使用平行于已知轴的分割面(splitting plane) 来分割场景所包围的三维空间。分割面将较大的空间划分成较小的有 界体块。较小的有界体块一起形成场景中的整个空间。可由图像处理 系统通过利用kd树构造算法来确定将较大的有界体块划分(分割)成两个较小的有界体块。
用于确定何时将有界体块划分成较小的体块的一个准则可以是 有界体块中包含的基元的数目。即,只要有界体块包含多于预定阈值
的基元,树构造算法就可以通过绘制更多的分割面来继续分割体块。 用于确定何时将有界体块划分成较小的体块的另一个准则可以是有 界体块中包含的空间量。此外,继续划分有界体块的决定还可以基于 创建有界体块的面可与多少基元相交。
对场景的划分可以用由节点、分支和叶子构成的二叉树结构来表 示。树中的每个内部节点可表示相对大的有界体块,而节点可包含到 子节点的分支,其中子节点可代表用分割面来对相对大的有界体块进 行划分之后得到的两个相对较小的划分后的体块。在轴对齐的kd树 中,每个内部节点可仅仅包含两个到其它节点的分支。内部节点可包 含通往一个或两个叶节点的分支(即指针)。叶节点是不能被进一步 细分为较小体块并包含到基元的指针的节点。内部节点还可包含通往 被进一步细分的其它内部节点的分支。内部节点还可包含确定分割面 是沿什么轴绘制的和分割面是沿着该轴在哪里绘制的所需要的信息。
示例性有界体块
图4A-4C说明图像处理系统要渲染的二维空间和对应的kd树。为 了简单起见,用二维场景来说明kd树的构造,但是kd树也可用于表示 三维场景。在图4A-4C的二维图示中,示出分割线以取代分割面,并 示出包围区域以取代三维结构中使用的有界体块。但是,本领域技术 人员将很快认识到这些概念可很容易地应用到包含物体的三维场景。
图4A说明在要显示在监视器310上的最终图片中要渲染的包含 基元410的二维场景405。代表整个场景体块的最大体块被有界体块l (BVJ所包围。在对应的kd树中,这可由顶层节点450来代表,顶层 节点450也被认为是根节点或世界节点(world node)。在图像处理系 统的一个实施例中,当有界体块包含例如多于两个基元时,图像处理 系统可继续将有界体块划分成较小的有界体块。如前面提到的那样,
17将有界体块继续划分成较小的有界体块的决定可以基于许多因素,但 是为了易于解释,在这个例子中,继续划分有界体块的决定仅仅基于
基元的数目。如同可从图4A中看到的那样,BVi包含6个基元,因此 kd树构造算法可将BVi划分成较小的有界体块。
图4B说明与图4A中所示的相同的二维场景405。但是,在图4B 中,树构造算法已经将BVi划分成了两个更小的有界体块BV2和BV3。 通过沿着x轴在点Xi处绘制分割面SPi 415来完成对BVi的划分。对BW 的划分也在kd树中被反映为在内部节点或父节点BW 450下面的两个 节点455和460,其分别对应于BV2和BV;j。现在,代表BVi的内部节点 可存储信息,所述信息诸如但不限于到BVi下面的两个节点的指针 (例如BV2和BV3),分割面是沿哪个轴绘制的(例如x轴),以及分 割面是沿着该轴在哪里绘制的(例如在点xj 。
kd树构造算法可继续划分有界体块BV3,这是因为其包含多于预 定阈值的基元(例如多于两个基元)。但是,因为有界体块BV2包含 少于或等于该数目的基元(例如仅仅两个基元410A) , kd树构造算法 可以不再继续划分有界体块BV2。不再进一步划分或细分的节点,诸 如BV2,也被称为叶节点。
图4C说明与图4B中所示的相同的二维场景405。但是,在图4C 中,kd树构造算法已经将BV3划分成了两个更小的有界体块BV4和 BV5。 kd树构造算法已经利用沿着y轴在点yi处的分割面划分BV3。由 于BV3已经被划分成两个子节点,现在它可被称为内部节点。对BV3 的划分也在kd树中被反映为两个叶节点465和470,其分别对应于BV4 和BVs。 BV4和BVs是叶节点,这是因为它们所代表的体块不能被进一 步划分成更小的有界体块。两个叶节点BV4和BVs位于内部节点BV3 下面,所述内部节点BV3代表在kd树中被划分的有界体块。
代表BV;j的内部节点可存储信息,所述信息诸如但不限于到两 个叶节点的指针(即BV4和BVs),分割面是沿哪个轴绘制的(例如y 轴),以及分割面是沿该轴在哪里绘制的(例如在点yj 。
现在,因为位于场景中的所有有界体块都包含少于或等于可被包在有界体块内的最大预定数目的基元,kd树构造算法可停止划分有界 体块。叶节点可包含到被包在每个叶子所代表的有界体块内的基元的
指针。例如,叶节点BV2可包含到基元410A的指针,叶节点BV4可包含 到基元410b的指針,并且叶节点BVs可包含到基元410c的指针。
射线跟踪图像处理系统可利用工作量管理器205来遍历空间索引 (kd树)。遍历kd树可包括为了确定射线是否与包含在子节点中的 任何基元相交,选择到在kd树的较低层上的节点(子节点)的分支来 着手或进行。工作量管理器205可利用所发出的射线的坐标和轨迹来 遍历或导航通过kd树。通过执行射线-有界体块相交测试,工作量管 理器205可确定射线是否与kd树结构中的节点所代表的有界体块的平 面相交。如果射线与仅仅包含基元(即叶节点)的有界体块相交,则 工作量管理器205可发送射线和相关联的信息给矢量吞吐量引擎210, 以便进行射线-基元相交测试。可执行射线-基元相交测试以确定射线 是否与有界体块内的基元相交。与针对碰到包含在场景中的每个基元
的射线运行射线-基元相交测试相比,上述方法可使得需要较少的射线 -基元相交测试来确定射线是否与场景中的物体相交。
所得到的kd树结构或其它空间索引结构可存储在处理器高速緩 存230中。kd树和包括kd树的相应数据的大小可被最优化,以便存储 在处理器高速緩存230中。在处理器高速緩存230中存储kd树可允许工 作量管理器205利用已经由图像处理系统发出的射线遍历kd树,而无 需在每次图像处理系统发出射线时从存储器中检索kd树。
示例性的空间索引划分
图5说明根据本发明的 一 个实施例的示例性的划分后的空间索引 500 (即kd树)。可划分空间索引以便在多个处理单元中均匀地分布 与遍历空间索引有关的操作。图5中示出的Kd树500可代表要渲染的三 维场景。如同上面参照图4描述的那样,工作量管理器可利用定义用 以遍历kd树的射线的信息。此外,工作量管理器可包含多个处理线程 和存储器高速緩存(例如L1或L2高速緩存)。工作量管理器可通过首先执行射线-有界体块相交测试来遍历kd树500。因为射线与对应于节 点的有界体块相交,工作量管理器则可通过采取到与射线相交的节点
的分支来遍历kd树500。根据本发明的一个实施例,工作量管理器可 继续执行射线-有界体块相交测试并采取到相交节点的分支,直到工作 量管理器采取到叶节点的分支为止。当工作量管理器采取到叶节点的 分支时,工作量管理器可例如经由收件箱115和/或高速总线225发送射 线到矢量吞吐量引擎,以用于射线-基元相交测试。
根据本发明的一个实施例,可利用其每一个在单独的处理内核上 的多个工作量管理器来遍历kd树500。图6示出其每一个在单独的处理 内核上的多个工作量管理器的一个实施例。图6示出在4个不同的处理 内核605a.d上的4个工作量管理器WM^。在每个处理内核上还有多个 矢量吞吐量引擎VTEa-VTE4c、共享高速緩存(例如L2高速緩存)和 多个存储器映射的收件箱。工作量管理器和矢量吞吐量引擎可通过收 件箱和通过高速总线625进行通信。
根据本发明的一个实施例,当遍历空间索引的工作量管理器到达 空间索引的预定义的分块或分区时,工作量管理器可发送射线(例如, 经由收件箱发送指向定义射线的信息的指针)到不同的(例如第二) 工作量管理器。然后,第二工作量管理器可在空间索引中第一工作量 管理器停止的点处开始遍历空间索引,并继续遍历空间索引(即,通 过执行射线-有界体块相交测试和采取到其它节点的分支)直到第二工 作量管理器到达空间索引的叶节点或者另一个分区为止。因而,空间 索引可以这样的方式进行划分,即不同的工作量管理器可负责遍历空 间索引的不同部分,
例如,如图5所示,在kd树500中绘制虛线分隔线以区分工作量 管理器l (WMJ可负责遍历的分区。这条线可表示这样的点,在该 点中任何遍历kd树500的工作量管理器(例如WM2、 WM3、 WM4等) 可发送定义射线的信息给WM^在工作量管理器发送了定义射线的信 息给WMi之后,WlV^可继续执行与通过WMi负责的kd树部分遍历kd 树500有关的任务。类似地,示出第二虚线分隔线作为kd树500中WM2可负责遍历的起点,示出两条虛线分隔线用于指示kd树500中WM3可 负责遍历的起点,并示出 一条虛线分隔线用于指示kd树中WM4可负责 遍历的起点。
根据本发明的一个实施例,可由几个工作量管理器负责空间索引 的公共部分。而且,这些工作量管理器中的每一个还可负责遍历空间 索引中其他工作量管理器不负责遍历的部分。例如,如图5中的虚线 所示,kd树500可被分成多个部分。每个工作量管理器可负责遍历kd 树500中在其对应的虚线分隔线下方的部分。此外,每个工作量管理 器可负责遍历kd树500中在所有虚线分隔线上方的部分(即kd树500 中包括世界节点的部分)。因此,当图像处理系统发出射线到工作量 管理器以遍历kd树500时,每个工作量管理器可在世界节点处开始射 线的遍历,并继续遍历空间索引,直到到达叶节点或边界为止,其中 所述边界指示另 一个工作量管理器负责的kd树500中的那部分。
通过使每个工作量管理器负责空间索引中包括世界节点的公共 部分,图像处理系统可同时发出多根射线到三维场景中。这可通过在 多个工作量管理器处使多根射线同时开始(在世界节点处)遍历空间 索引而实现。诸如这样的可高度并行化的系统可减少图像处理系统根 据三维场景渲染最终的二维图像所必需的时间。
例如,参考图5, WMi可利用射线在世界节点处开始遍历空间索 引。在世界节点之后,WMj可继续遍历空间索引(即,通过执行射线 -有界体块相交测试和采取到节点的分支)直到其穿过边界为止,其中 所述边界指示另一个工作量管理器负责的WMi试图进入到的空间索 引中的那部分。例如,WMi可采取穿过用于WM2的虚线分隔线的分 支。这样,W]V^可结束遍历空间索引并发送(例如经由收件箱或高速 总线)定义射线的信息和表明WMi已经利用射线遍历空间索引而到达 了 WMi穿过用于WM2的分隔线的点的信息。WMi可经由收件箱615 和通信网络625发送所述定义射线的信息到WM2。接下来,WM2可利 用射线从WMi停止的点开始继续遍历kd树,直到WM2到达叶节点为 止。根据本发明的 一个实施例,图像处理系统可确定如何或者在哪里 划分空间索引。确定如何或者在哪里划分空间索引可基于单个因素或 几个因素。根据本发明的一个实施例,确定在哪里分割空间索引可基 于任意多个因素,包括但不限于要分配给每个工作量管理器的节点数 目、要分配给每个工作量管理器的叶节点中所包含的基元数目、或可 划分空间索引的任何其它合适的分割。
此外,根据本发明的一个实施例,可基于与空间索引的使用有关 的性能度量(例如空间索引的实际使用率)来划分空间索引。例如, 性能度量可定义遍历空间索引不同部分的射线的数量。可以周期性间 隔计算性能度量,并且可基于周期性间隔收集的性能度量来重新划分 空间索引。基于性能度量划分空间索引可使得每个工作量管理器被分 配以不同数目的节点。
例如,如图5所示,已经基于每个工作量管理器要负责的叶节点 的数目而确定了kd树的划分部分。如图5中弧形的阴影区域所示,每 个工作量管理器负责7到10个叶节点。因此,确定在哪里划分kd树使 得每个工作量管理器负责大致相同数目的叶节点。通过以这种方式均
匀地分布每个工作量管理器负责的节点数目,可减少提交给每个工作 量管理器的工作量(即,与遍历空间索引有关的计算)的数量。
尽管根据本发明的一个实施例,图5示出的kd树具有71个节点, 但是整个空间索引可具有多得多的节点(例如数十万或数百万个节 点)。而且,每个节点可能需要几个字节来定义数据(例如8字节)。 因此,整个空间索引可能需要大量的存储空间。
为了降低利用射线跟踪图像处理系统来浚染最终图像所必需的 时间量,可能希望将空间索引高速緩存到片上高速緩存存储器(例如 多核处理单元605A的L2高速緩存)中,而不是存储到片外存储器中。 但是,包含许多节点的复杂空间索引可能需要大量的存储空间,以至 于在片上高速緩存中存储空间索引可能不可行或低效率。
通过划分空间索引,可能能够减少工作量管理器遍历空间索引所 需要的高速緩存存储器的数量。如上所述,遍历划分后的空间索引的工作量管理器可负责遍历空间索引的一些部分,相应地,它们可能不
负责遍历空间索引的其它部分。因而,工作量管理器(例如605a)可 能只需要在其片上高速緩存存储器(例如工作量管理器605A的L2高速 緩存存储器)中存储空间索引中工作量管理器负责遍历的那一部分或 那些部分。因此,通过仅仅存储空间索引的一部分,减少了工作量管 理器遍历空间索引所需要存储的信息量,并减少了存储空间索引所必 需的高速緩存存储器空间的量。
结论
总而言之,图像处理系统可将空间索引划分成不同部分。通过划 分空间索引,不同的工作量管理器可负责执行与遍历空间索引的不同 部分相关的操作。特定的工作量管理器可仅仅负责遍历整个空间索引 的一部分。因而,该工作量管理器可能仅仅需要用于定义空间索引中 该工作量管理器负责遍历的部分的信息。这可减少存储用于定义该工 作量管理器负责的空间索引的信息所需要的高速緩存存储器空间的 量。
尽管前面所述的是本发明的实施例,但是可以设想到本发明的其 它或进一步的实施例而不背离本发明的基本范围,并且本发明的范围 由所附权利要求来确定。
权利要求
1. 一种用于划分具有节点的空间索引的方法,其中所述节点定义三维场景的有界体块,所述方法包括提供第一处理单元和第二处理单元;以及将所述空间索引至少划分成第一部分和第二部分,其中所述第一处理单元可操作来执行与使射线遍历所述第一部分相关联的一个或多个算法,并且其中所述第二处理单元可操作来执行与使射线遍历所述第二部分相关联的一个或多个算法。
2. 如权利要求l所述的方法,其中所述方法还包括 将所述空间索引划分成笫三部分,其中所述第一处理单元和所述第二处理单元执行与使射线遍历所述第三部分相关联的算法。
3. 如权利要求1或2所述的方法,其中所述第一处理单元位于第 一处理内核上,而所述第二处理单元位于第二处理内核上。
4. 如权利要求l、 2或3所述的方法,其中划分所述空间索引包括 确定在所述空间索引中的节点的数目;以及基于所述空间索引中的节点的数目,划分所述空间索引以使得所 述空间索引中的节点的数目均匀分布在所述第 一处理单元和所述第 二处理单元之间。
5. 如权利要求l、 2或3所述的方法,其中划分所迷空间索引包括 确定所述第一处理单元或所述笫一处理单元中的至少一个的工作量;以及划分所述空间索引以使得所述工作量均匀分布在所述笫一处理 单元和所述第二处理单元之间。
6. 如权利要求l、 2或3所述的方法,其中划分所述空间索引包括 确定包含在所述空间索引的叶节点中的基元的数目;以及 基于包含在所述空间索引的叶节点中的基元的数目,划分所述空间索引以使得所述基元的数目均匀分布在所述第 一处理单元和所述 第二处理单元之间。
7. 如权利要求l-6中任一项所述的方法,其中所述第一部分被存 储在所述第一处理单元的存储器高速緩存中,并且其中所述第二部分 被存储在所述第二处理单元的存储器高速緩存中。
8. 如权利要求l-7中任一项所述的方法,其中将所述空间索引至 少划分成所述第 一部分和所述第二部分以周期性的间隔发生。
9. 一种用于遍历具有节点的空间索引的方法,其中所述节点定 义三维场景的有界体块,所述方法包括通过创建至少一个经过所述空间索引的至少一个分支的分区边 界,将所述空间索引至少划分成第一分区和第二分区; 产生进入所述场景中的射线;通过采取从内部节点开始的分支直到到达叶节点来遍历所述空 间索引,其中基于所述射线是否与由所述节点定义的有界体块相交来 采取分支;以及当包含所述分区边界的所述分支被采取时,将定义所述射线的信 息从第 一处理单元传送到第二处理单元。
10. 如权利要求9所述的方法,其中划分所述空间索引包括 确定在所述空间索引中的节点的数目;以及创建所述分区边界以使得所述空间索引中的节点的数目均匀分 布在所述第一分区和所述第二分区之间。
11. 如权利要求9所述的方法,其中划分所述空间索引包括 确定所述第一处理单元或所述第二处理单元中的至少一个的工作量;以及创建所述分区边界以使得所述工作量均匀分布在所述第一处理 单元和所述第二处理单元之间。
12. 如权利要求9-ll中任一项所述的方法,其中所述第一处理单 元位于第一处理内核上,而所述第二处理单元位于第二处理内核上。
13. 如权利要求9-12中任一项所述的方法,其中所述第一部分被 存储在所述第一处理单元的存储器高速緩存中,并且其中所述第二部 分被存储在所述第二处理单元的存储器高速緩存中。
14. 一种系统,包括具有节点的空间索引,所述节点定义三维场景的有界体块;第一处理单元;第二处理单元;以及图像处理系统,被配置成将所述空间索引至少划分成第 一部分和 第二部分,其中所述第一处理单元可操作来执行与使射线遍历所述第一部分相关联的算法,并且其中所述第二处理单元可操作来执行与使 射线遍历所述第二部分相关联的一个或多个算法。
15. 如权利要求14所述的系统,其中所述图像处理系统被进一步 配置成将所述空间索引划分成第三部分,其中所述第一处理单元和所 述第二处理单元执行与使射线遍历所述第三部分相关联的算法。
16. 如权利要求14或15所述的系统,还包括 第一处理内核;以及第二处理内核;并且其中所述第一处理单元位于所述第一处理内核上,而所述第二处 理单元位于所述第二处理内核上。
17. 如权利要求14、 15或16所述的系统,其中所述图像处理系统 被进一步配置成确定在所述空间索引中的节点的数目;以及基于在所述空间索引中的节点的数目,划分所述空间索引以使得 所述空间索引中的节点的数目均匀分布在所述笫一处理单元和所述 第二处理单元之间。
18. 如权利要求14、 15或16所述的方法,其中所述图像处理系统 被进一步配置成确定所述第一处理单元或所述第二处理单元中的至少一个的工 作量;以及划分所述空间索引以使得所述工作量均匀分布在所述第一处理 单元和所述第二处理单元之间。
19. 如权利要求14、 15或16所述的方法,其中所述图像处理系统 -故进一步配置成确定包含在所述空间索引的叶节点中的基元的数目;以及 基于包含在所述空间索引的叶节点中的基元的数目,划分所述空间索引以使得所述基元的数目均匀分布在所述第一处理单元和所述第二处理单元之间。
20. 如权利要求14-19中任一项所述的系统,还包括 用于所述第一处理单元的高速緩存存储器;以及 用于所述第二处理单元的高速緩存存储器;并且 其中所述第一部分被存储在用于所述第一处理单元的所述高速緩存存储器中,并且所述第二部分被存储在用于所述第二处理单元的所述高速緩存存储器中。
21. —种用于划分具有节点的空间索引的计算机程序,其中所述节点定义三维场景的有界体块,所述计算机程序包括适用于执行以下将所述空间索引至少划分成第一部分和第二部分的步骤的程序代码手段,其中第一处理单元可操作来执行与使射线遍历所述第 一部分相关联的一个或多个算法,并且其中第二处理单元可操作来执行与使射线遍历所迷第二部分相关联的一个或多个算法,当程序在计算机上运行时执行所述步骤。
全文摘要
本发明的实施例提供了用于划分空间索引的设备和技术。在本发明的一个实施例中,图像处理系统可将空间索引划分成多个部分,以使得不同的处理单元可负责使射线遍历空间索引的不同部分。可基于任意多个因素来确定在哪里划分所述空间索引。例如,根据本发明的某些实施例,可划分空间索引以在多个处理单元中均匀地分布工作量(例如由实时性能度量来确定)。可基于节点的总数、叶节点的数目和将包括在每个所得到的分区中的基元的数目来划分空间索引以分布工作量。
文档编号G06T15/40GK101506847SQ200780030994
公开日2009年8月12日 申请日期2007年8月21日 优先权日2006年8月22日
发明者R·A·席勒 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1