CN101192309A - 进行光线跟踪的方法和系统 - Google Patents
进行光线跟踪的方法和系统 Download PDFInfo
- Publication number
- CN101192309A CN101192309A CNA2007101869692A CN200710186969A CN101192309A CN 101192309 A CN101192309 A CN 101192309A CN A2007101869692 A CNA2007101869692 A CN A2007101869692A CN 200710186969 A CN200710186969 A CN 200710186969A CN 101192309 A CN101192309 A CN 101192309A
- Authority
- CN
- China
- Prior art keywords
- light
- thread
- vte
- leaf node
- processing threads
- 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/005—General purpose rendering architectures
-
- 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
技术领域
本发明的实施例一般涉及图像处理领域。
背景技术
从三维场景呈现(rendering)二维图像的过程通常被称为图像处理。随着现代计算机工业的发展,图像处理也向前发展。在图像处理的发展过程中一个特殊目的是尽可能逼真地对三维场景作出二维模拟或呈现。呈现逼真图像的一种局限性是现代监视器使用像素来显示图像。
像素是监视器上可以照亮的最小空间区域。最现代的计算机监视器将利用数十万个或数百万个像素的组合组成整个显示或呈现场景。独立的像素被安排在网格图样中,集体覆盖监视器的整个可视区。每个独立的像素可以被照亮,以呈现可供观看的最终画面。
利用像素将真实世界三维场景呈现在二维监视器上的一种技术叫做光栅化(rasterization)。光栅化是取出以向量格式(场景内的几何物体的数学表示)表示的二维图像,将图像转换成独立的像素以便显示在监视器上的过程。光栅化在迅速呈现图形和利用相对少量计算能力方面是高效的;但是,光栅化也存在一些缺陷。例如,光栅化往往缺乏真实感,因为光栅化不是基于光的物理特性,而是基于场景中的三维几何物体投影在二维平面上的形状。而且,利用光栅化呈现场景所需的计算能力随着要呈现的场景的复杂性变大而成比例地增大。随着图像处理变得更加逼真,呈现的场景也变得更加复杂。因此,由于光栅化与复杂性成比例,光栅化随着图像处理的发展而遇到麻烦。
利用像素使真实世界三维场景呈现在二维监视器上的另一种技术叫做光线跟踪。光线跟踪技术跟踪表现类似于光线的假想光线到要呈现在计算机屏幕上的三维场景的传播。光线源自坐在计算机屏幕后面的观看者的眼睛,穿过构成计算机屏幕的像素,朝三维场景而去。每条跟踪光线都通向场景,可以与场景内的物体相交。如果光线与场景内的物体相交,将物体的特性和其它几种有影响的因素用于计算光线所曝露于的颜色和光量,或颜色或光的不足。然后,将这些计算用于确定跟踪光线经过的像素的最终颜色。
对单个场景进行许多次光线跟踪处理。例如,可以针对显示器中的每个像素跟踪单条光线。一旦跟踪了足够数量的光线来确定构成计算机屏幕的二维显示的所有像素的颜色,可以在计算机屏幕上向观看者显示三维场景的二维合成。
光线跟踪通常比光栅化更具真实感地呈现真实世界的三维场景。部分原因是光线跟踪模拟光在真实世界的环境中如何行进和表现,而不是像利用光栅化所做的那样简单地将三维形状投影在二维平面上。因此,利用光线跟踪呈现的图形在监视器上更准确地描绘了我们的眼睛在真实世界中习惯看到的样子。
而且,光线跟踪也比光栅化更好地处理随着场景变得更加复杂、场景复杂性的增加。光线跟踪随场景复杂性以对数进行变化。这是由于即使场景变得更加复杂,也可以将相同数量的光线投射到场景上。因此,就计算能力的要求而言,光线跟踪不会像光栅化那样随着场景变得更加复杂而遇到麻烦。
光线跟踪的一个主要缺陷是呈现场景所需的大量计算,和由此带来的处理能力。当需要快速呈现时,这会引起一些问题。例如,当图像处理系统为了诸如在游戏控制台中的动画目的而呈现图形时。由于光线跟踪的计算要求增加了,因此难以呈现快到看起来逼真的动画(逼真的动画大约需要每秒20-24帧)。
因此,需要更有效进行光线跟踪的技术和设备。
发明内容
本发明的实施例一般性地提供了进行光线跟踪的方法和装置。
根据本发明的一个实施例,提供了一种进行光线跟踪的方法。该方法一般包含:向三维场景发出光线;利用第一处理元件,采用到定义与光线相交的有界体的节点的分支,使光线穿过具有代表三维场景内的有界体的节点的空间索引,直到到达叶节点;确定一个或多个处理线程的当前工作负荷;和将定义光线的信息和定义叶节点的信息发送到当前工作负荷适合进行光线-图元相交测试的处理线程,以确定光线是否与包含在通过叶节点定义的有界体内的图元相交。
根据本发明的另一个实施例,提供了一种包含程序的计算机可读介质。该程序当被执行时,进行一般包含如下步骤的操作:向三维场景发出光线;利用第一处理元件,采用到定义与光线相交的有界体的节点的分支,使光线穿过具有代表三维场景内的有界体的节点的空间索引,直到到达叶节点;确定一个或多个处理线程的当前工作负荷;和将定义光线的信息和定义叶节点的信息发送到当前工作负荷适合进行光线-图元相交测试的处理线程,以确定光线是否与包含在通过叶节点定义的有界体内的图元相交。
根据本发明的另一个实施例,提供了一种系统。该系统一般包含:一个或多个处理线程;具有定义三维场景的有界体的节点的空间索引;和被配置成进行如下操作的第一处理单元:向三维场景发出光线;采用到定义与光线相交的有界体的节点的分支,使光线穿过具有代表三维场景内的有界体的节点的空间索引,直到到达叶节点;确定一个或多个处理线程的当前工作负荷;和将定义光线的信息和定义叶节点的信息发送到当前工作负荷适合进行光线-图元相交测试的处理线程,以确定光线是否与包含在通过叶节点定义的有界体内的图元相交。
附图说明
图1是描绘根据本发明一个实施例的示范性计算机处理器的方块图;
图2例示了根据本发明一个实施例的多核处理元件网络;
图3A-3C是例示根据本发明一个实施例的存储器收件箱(inbox)的一些方面的方块图;
图4是根据本发明一个实施例的图像处理系统呈现的示范性三维场景;
图5A-5C图示了根据本发明一个实施例的图像处理系统呈现的二维空间和图像处理系统创建的相应空间索引;
图6是例示根据本发明一个实施例进行光线跟踪的方法的流程图;
图7是根据本发明一个实施例的图像处理系统呈现的示范性三维空间;
图8A-8D例示了根据本发明一个实施例进行光线跟踪的示范性方法;
图9和13例示了根据本发明一个实施例的示范性空间索引;
图10和12是例示根据本发明一个实施例进行光线跟踪的示范性方法的流程图;和
图11是根据本发明一个实施例的示范性线程表。
具体实施方式
本发明的实施例提供了在光线跟踪图像处理系统中的处理元件之间分配工作负荷的方法和装置。根据本发明的一个实施例,可以将与跟踪到空间索引的叶节点的光线有关的操作映射到或指定给多个处理元件。负责操作的处理元件可以监视它们的工作负荷,如果工作负荷超过阈值,处理元件可以将与光线有关的操作转移到其它空闲处理元件。而且,图像处理系统可以监视处理元件承受的工作负荷。响应于处理元件之间不平衡的工作负荷,图像处理系统可以将操作重新映射到或重新指定给不同处理元件。
在下文中,将介绍本发明的实施例。但是,应该明白,本发明不局限于所述特定实施例。而是,无论与不同实施例有关与否,如下特征和元件的任何组合都预期能实现和实施本发明。而且,在各种实施例中,本发明提供了超过现有技术的许多优点。但是,尽管本发明的实施例可以具有超过其它可能解决方案和/或超过现有技术的优点,但给定实施例是否实现特定优点不对本发明造成限制。因此,如下的方面、特征、实施例和优点只是例示性的,不应该认为是所附权利要求书的元素或限制,除了在权利要求书中明确阐述的之外。类似地,提到“本发明”不应该理解为是此处公开的任何新主题的概括,也不应该认为是所附权利要求书的元素或限制,除了在权利要求书中明确阐述的之外。
本发明的一个实施例被实现成供例如如下所述的图像处理系统那样的计算机系统使用的程序产品。程序产品的程序定义实施例(包括此处所述的方法)的功能,并可以包含在各种各样的计算机可读介质中。例示性的计算机可读介质包括,但不局限于:(i)永久性存储在非可写存储介质(例如,计算机内的只读存储设备,例如CD-ROM驱动器可读的CD-ROM盘)上的信息;(ii)存储在可写存储介质(例如,盘驱动器内的软盘或硬盘驱动器)上的可变更信息;和(iii)通过包括无线通信、像计算机或电话网络那样的通信介质传送到计算机的信息。后一种实施例特别包括从因特网和其它网络下载的信息。这样的计算机可读介质当携带控制本发明功能的计算机可读指令时,代表本发明的实施例。
一般说来,为实现本发明的实施例而执行的例程可以是操作系统或特定应用的一部分、部件、程序、模块、对象、或指令序列。本发明的计算机程序通常包含将由本地计算机翻译成机器可读格式,并因此变成可执行指令的众多指令。此外,这些程序包含局部地位于程序中或从存储器中或存储设备上找到变量和数据结构。另外,此处所述的各种各样的程序可以根据在本发明特定实施例中实现它们的应用来标识。但是,应该认识到,使用如下的任何具体程序术语只是为了方便,因此,本发明不应该局限于只用在由这样的术语标识和/或暗示的任何特定应用中。
示范性多核处理元件
图1例示了根据本发明一个实施例的多核处理元件100。多核处理元件100包括多个基本吞吐引擎105(BTE)。BTE105可以包含多个处理线程和核心高速缓存(例如,L1高速缓存)。位于每个BTE内的处理线程可以访问共享的多核处理元件存储器高速缓存110(例如,共享L2高速缓存)。
BTE105还可以访问多个收件箱115。下面参照图3进一步所述的收件箱115可以是存储器映射的地址空间。可以将收件箱115映射到位于每个BTE105内的处理线程。位于BTE内的每个线程可以含有存储器映射的收件箱和访问所有其它存储器映射的收件箱115。收件箱115构成BTE105使用的低等待时间和高带宽通信网络。
BTE可以将收件箱115用作相互通信和在BTE之间重新分配数据处理工作的网络。对于一些实施例,分离的发件箱(outbox)可以用在通信网络中,例如,接收BTE105的处理结果。对于其它实施例,收件箱115也可以用作发件箱,例如,一个BTE105将处理功能的结果直接写入将使用该结果的另一个BTE105的收件箱中。
可以将图像处理系统的总性能与BTE可以如何划分和重新分配工作联系一起。收件箱115的网络可以用于收集和向其它BTE分配工作而不用没有帧帧相干性的BTE通信数据分组使共享多核处理元件高速缓存110恶化。可以每帧呈现数百万个三角形的图像处理系统可以包括许多以这种方式连接的BTE105。
在本发明的一个实施例中,可以将一个BTE105的线程指定给工作负荷管理器。图像处理系统可以利用各种各样的软件和硬件部件从三维场景中呈现二维图像。正如下面参照图6进一步所述的那样,根据本发明的一个实施例,图像处理系统可以利用工作负荷管理器让图像处理系统发出的光线穿过空间索引。如下面参照图4进一步所述的空间索引可以实现成用于将相对较大的三维场景划分成较小有界体(bounding volume)的树型数据结构。将光线跟踪方法用于图像处理的图像处理系统可以利用空间索引迅速确定光线-有界体相交。在本发明的一个实施例中,工作负荷管理器可以利用空间索引进行定光线-有界体相交测试。
在本发明的一个实施例中,多核处理元件100上的多核处理元件BTE105的其它线程可以是向量吞吐引擎。在工作负荷管理器确定了光线-有界体相交之后,工作负荷管理器可以通过收件箱115向多个向量吞吐引擎之一发出(发送)光线。根据本发明的一个实施例,和如下面参照图6进一步所述,向量吞吐引擎接着可以确定光线是否与包含在有界体内的图元相交。向量吞吐引擎也可以进行与确定光线经过的像素的颜色有关的操作。
图2例示了根据本发明一个实施例的多核处理元件200的网络。图2还例示了多核处理元件100的BTE之一的线程是工作负荷管理器205的本发明一个实施例。根据本发明的一个实施例,多核处理元件200的网络中的每个多核处理元件2201-N可以包含一个工作负荷管理器2051-N。根据本发明的一个实施例,多核处理元件200的网络中的每个处理器220还可以包含多个向量吞吐引擎210。
根据本发明的一个实施例,工作负荷管理器2051-N可以使用高速总线225与其它多核处理元件220的其它工作负荷管理器2051-N和/或向量吞吐引擎210通信。每个向量吞吐引擎210可以使用高速总线225与其它向量吞吐引擎210或工作负荷管理器205通信。工作负荷管理器处理器205可以使用高速总线225收集和向其它工作负荷管理器处理器205分配图像处理相关任务,和/或向其它向量吞吐引擎210分配任务。使用高速总线225可以使工作负荷管理器2051-N通信而不会用与工作负荷管理器205通信有关的数据分组影响高速缓存230。
低等待时间高带宽通信网络
如上所述,可以将图像处理系统的总性能与BTE可以如何划分和重新分配工作联系在一起。根据本发明的一个实施例,称为存储器收件箱的高速缓存内的存储空间可以用于将工作分配给单个处理器线程。在利用每个含有多个线程的多个处理器的图像处理系统中,收件箱集合可以统称为低等待时间高带宽通信网络。
在像BTE105那样的多线程处理器中,可以将存储器收件箱指定给给定线程(此处称为拥有者线程(owner thread))。在本发明的一个实施例中,可以将收件箱的存储空间从共享存储器高速缓存110排它地指定给拥有者线程。通过排它地将高速缓存中的存储空间指定给拥有者线程,拥有者线程可以保持足够的存储空间来高速缓存它自己的指令和数据,而不会出现其它竟争线程取代拥有者线程的指令和数据。因此,在从较高层存储器中检索拥有者线程的数据和指令的时候,通过在高速缓存的指定收件箱部分中保持拥有者线程的数据和指令和降低拥有者线程延迟的可能性,存储器收件箱可以改善拥有者线程的执行。而且,通过将高速缓存中的存储空间指定给拥有者线程,可以只在分配给线程的收件箱中存储打算用于目标线程的数据或指令。因此,打算用于目标线程的数据或指令不会存储在整个共享存储器高速缓存110中,而是只存储在分配给目标线程的收件箱中。
而且,收件箱存储器可以被其它线程用于有效地与拥有者线程通信。例如,在另一个线程拥有将要提供给收件箱的拥有者线程的数据和/或指令的情况下,其它线程可以将该数据和/或指令发送到拥有者线程可以检索其中的数据和/或指令的收件箱。类似地,在一些情况下,拥有者线程可以将收件箱用作发件箱与其它线程沟通信息。例如,为了与另一个线程沟通信息,拥有者线程可以将信息放在收件箱中,并且将指示数据和/或指令的位置的通知发送给另一个线程,从而使该另一个线程可以检索信息。可选地,拥有者线程可以直接将信息提供给另一线程的收件箱。因此,在防止其它线程使用的数据和/指令被取代的同时,收件箱存储器可以用于简化发送线程和接收线程之间的通信。
图3A是例示根据本发明一个实施例的多核处理元件100中的存储器收件箱302、...、318的方块图。对存储器收件箱302、...、318的描绘是概念性的,因此不局限于任何特定的物理配置。正如所描绘的那样,在每个核心(例如,BTE105)中执行的线程(例如,线程T0-T7)可以通过共享L2高速缓存接口322访问共享L2高速缓存110。而且,L2高速缓存接口322也可以由线程T0、...、T7用于访问相应的存储器收件箱302、...、318。如上所述,在一些情况下,可以将每个收件箱302、...、318指定给相应线程T0-T7。因此,可以将收件箱0302指定给线程T0等。如下所述,通过将给定收件箱指定给给定线程,在其它线程的访问受到限制的同时,对于拥有者线程,不限制对指定收件箱的访问。下面将更详细描述示范性限制。
图3B是描绘将数据从存储器收件箱(例如,收件箱302、...、318)和共享L2高速缓存110发送到处理核心(例如,BTE105)和从处理核心(例如,BTE105)接收数据的路径的方块图。如上所述,可以通过共享L2高速缓存接口322访问存储器收件箱302、...、318和共享L2高速缓存110。当在BTE105中执行的线程从收件箱302、...、318或从共享L2高速缓存110中检索数据的情况下,可以将检索的数据放在BTE105的L1高速缓存312中。线程的指令可以从发出单元332发出。在一些情况下,可以将BTE105配置成同时执行多个线程。因此,可以将发出单元332配置成发出用于多个线程的指令。在一些情况下,BTE105可以提供可以用于在BTE105中同时执行线程的多个执行单元334、...、338。执行单元334、...、338可以包括定点执行单元334、浮点执行单元336、和分支执行单元338。
在一些情况下,线程可以更新或生成(例如,通过相同线程或另一个线程)以后将访问的数据。在以后要访问更新数据的情况下,线程可以将更新数据放在L1高速缓存312中。而且,如有需要,也可以通过共享L2高速缓存接口322将更新数据放在L2高速缓存110中或用于更新线程的收件箱302、...、318中。在一些情况下,如上所述,通过共享L2高速缓存接口322对给定收件箱(例如,收件箱0302)的直接访问可以局限于拥有给定收件箱的线程(例如,线程T0)。
在本发明的一个实施例中,可以将存储器收件箱内的存储空间映射到全局存储地址(例如,包括L1高速缓存312、L2高速缓存110、和主存储器的所有层次存储器,以及所有线程都可以使用相同全局存储地址访问给定存储器收件箱)。因此,在本发明的一个实施例中,为了访问收件箱存储空间,拥有者线程可以只读取所需信息和将所需信息写入与收件箱存储空间相对应的全局存储地址中。未拥有存储器收件箱和试图通过全局存储地址直接访问收件箱的线程可以访问被拒绝的收件箱。取而代之,可以将其它访问形式提供给其它未拥有线程,例如,通过发送到收件箱的分组化消息。
此外,在本发明的一个实施例中,存储在存储器收件箱中的信息可以是不可高速缓存的。例如,多核处理元件100可以自动高速缓存L1高速缓存312、L2高速缓存110、和其它存储层中的信息,以便在访问时可以从主存储器中自动取出向给定存储地址请求的信息并将它保存在高速缓存层312和110之一中。相反,给定收件箱中的可全局访问存储器只位于该收件箱中,并且在不复制到收件箱外部的新地址空间的情况下,不能在存储器分层结构的不同层(例如,主存储器、共享L2高速缓冲存储器110、或L1高速缓冲存储器)之间移动。因此,拥有者线程对收件箱的访问可以不用等待从存储器分层结构的另一个层中取出和/或在取出期间翻译的信息地迅速和直接地对收件箱存储器进行。收件箱存储器的不可高速缓存性也可以应用于如下所述的收件箱的分组化访问。而且在本发明的可替代实施例中,可以在存储器分层结构的其它层中高速缓存存储在收件箱中的信息。
存储器收件箱的指定
在本发明的一个实施例中,可以从共享存储器高速缓存110提供存储器收件箱(例如,可以为收件箱存储器115保留一部分L2高速缓存110)。图3C是描绘根据本发明一个实施例从共享L2高速缓存110划分出来的收件箱存储器115的方块图。
正如所描绘的那样,每个收件箱302、304等的尺寸和位置可以通过收件箱控制寄存器340控制。每个收件箱302、304等的状态(例如,启用或禁用)可以通过收件箱状态寄存器362指示和/或修改。在一个实施例中,对收件箱控制寄存器340的访问可以不受限制。可选地,在一些情况下,对收件箱控制寄存器340的访问可以局限于,例如,许可线程(例如,拥有者线程、拥有者线程的父辈、特别指定的控制线程、和/或操作系统内核线程)的子集。在一个实施例中,收件箱控制寄存器340可以包括开始地址寄存器342、348、...、354,尺寸寄存器344、350、...、356,和拥有者线程标识寄存器346、352、...、358。
在一个实施例中,开始地址寄存器342、348、...、354可以指示每个收件箱302、304等的开始地址。尺寸寄存器344、350、...、356可以指示相应收件箱302、304等的尺寸。收件箱的存储空间因此可以占据从相应开始地址开始和贯穿收件箱的指示尺寸的每个地址。尺寸可以以任何方式指示,例如,指示成用字节表示的绝对尺寸,或指示成固定尺寸的整数倍(例如,尺寸寄存器344、350、...、356中的尺寸可以指示成用千字节表示的尺寸)。
在一个实施例中,拥有者线程标识寄存器346、352、...、356可以标识哪个线程(例如,线程T0、T1、...、TN)拥有给定收件箱302、304等。虽然是针对线程和相应收件箱1、2、...、N描绘的,但本发明的实施例可以与任何类型的线程和/或收件箱标识符(例如,编号、地址等)一起使用。在本发明的一个实施例中,收件箱标识符寄存器可以用于使对相应收件箱内的存储地址的直接访问局限于拥有者线程。在一些情况下,也可以允许像,例如,拥有者线程的父线程、特定控制线程、和/或操作系统内核线程那样有限制地选择的其它线程直接访问。在一个实施例中,访问控制电路360可以用于提供受限访问。
通过将共享存储器高速缓存110的一部分指定给收件箱,可以形成低等待时间高带宽通信网络。共享存储器高速缓存110的其余部分可能仍然未指定,因此可用于存储与处理线程之间的通信无关的信息。共享存储器高速缓存110的其余部分可以用来存储图像处理系统用于进行光线跟踪(如下面参照图5进一步所述)的几何和数据结构。
只将收件箱用于处理线程之间的通信和利用共享存储器高速缓存110的其余部分存储几何和数据结构的好处是,无论有多少通信相关信息经过收件箱,都不会消耗掉整个存储器高速缓存。因此,正如下面进一步所述的那样,通信相关信息不会取代存储在共享存储器高速缓存110的其余部分内的几何和数据结构。因此,跟踪后续光线或呈现后续帧时很有可能被重用的数据(物体几何和数据结构)可以保留在高速缓存中,而跟踪后续光线或呈现后续帧时不可能被重用的数据(数据处理工作)不保留在高速缓存中。
示范性三维场景
图4是图像处理系统要呈现的示范性三维场景405。处在三维场景405内的可以是物体420。图4中的物体420具有不同几何形状。尽管在图4中只例示了四个物体420,典型三维场景中物体的数量可以更多或更少。通常,三维场景将含有比如图4所示多得多的物体。
从图4中可以看出,这些物体可以具有可变的几何形状和尺寸。例如,图4中的一个物体是锥形420A。图4中的其它物体是盒子420B-D。在许多现代图像处理系统中,常常将物体分解成较小几何形状(例如,方形、圆形、三角形等)。然后用大量较小的简单几何形状表示较大物体。这些较小几何形状常常被称为图元。
在场景405中还例示了光源425A-B。光源可以照亮位于场景405内的物体420。而且,取决于光源425和物体420在场景405内的位置,光源可以将阴影投射在场景405内的物体上。
三维场景405可以由图像处理系统呈现成二维画面。图像处理系统还可以使二维画面显示在监视器410上。监视器410可以使不同颜色的许多像素430呈现最终二维画面。
图像处理系统用于将三维场景420呈现成二维画面的一种方法叫做光线跟踪。光线跟踪由图像处理系统从观看者的视角向三维场景420“发出”或“发射”光线来完成。这些光线具有与光线相似的特性和表现。
在图4中可以看到一条源自观看者415的位置和穿过三维场景405的光线440。随着光线440从观看者415到达三维场景405,光线440经过图像处理系统将呈现最终二维画面的平面。在图4中,这个平面用监视器410表示。光线440经过平面或监视器410的点用像素435表示。
正如前面简要讨论过的那样,大多数图像处理系统利用数千个(即使不是数百万个的话)像素的网格430将最终场景呈现在监视器410上。每个独立的像素可以显示不同的颜色,以便在监视器410上呈现最终复合二维画面。利用光线跟踪图像处理方法从三维场景中呈现二维画面的图像处理系统计算发出的一条或数条光线在三维场景中遇到的颜色。然后,图像处理系统将光线遇到的颜色指定给光线在从观看者到三维场景的路径上经过的像素。
每个像素发出的光线的数量可以改变。一些像素可以对于要呈现的特定场景发出许多光线。在这种情况下,像素的最终颜色由为该像素发出的所有光线的每种颜色影响决定。其它像素可能只发出单条光线来确定二维画面中的像素的最后颜色。一些像素可能没有图像处理系统发出的任何光线,在这种情况下,它们的颜色可以通过图像处理系统内的算法确定、近似或指定。
为了确定二维画面中的像素435的最终颜色,图像处理系统必须确定光线440是否与场景内的物体相交。如果光线未与场景内的物体相交,可以指定默认背景色(例如,代表白天或晚上天空的蓝色或黑色)。相反,当光线440穿过三维场景时,光线440可能碰到物体。当光线碰到场景内的物体时,可以将物体的颜色指定给光线经过的像素。但是,物体的颜色必须在指定给像素之前被确定。
许多因素可以影响初级光线(original ray)440碰到的物体的颜色。例如,三维场景内的光源可以照亮物体。而且,物体的物理特性可以影响物体的颜色。例如,如果物体是反射或透明的,那么,其它非光源物体可以影响该物体的颜色。
为了确定来自三维场景内的其它物体的影响,可以从初级光线440与物体相交的点发出次级光线(secondary ray)。例如,一种类型的次级光线可以是阴影线。阴影线可以用于确定光对初级光线440与物体相交的点的影响。另一种类型的次级光线可以是透射线(transmitted ray)。透射线可以用于确定什么颜色或光可以透过物体的主体。而且,第三种类型的次级光线可以是反射线。反射线可以用于确定什么颜色或光被反射到物体上。
如上所述,一种类型的次级光线可以是阴影线。每条阴影线的轨迹可以从初级光线和物体的交点到三维场景405内的光源。如果光线在光线到达光源之前未遇到另一个物体地到达光源,那么,光源将照亮在初级光线碰到物体的点上初级光线碰到的物体。
例如,阴影线441A可以从初级光线440与物体420A相交的点发出,和可以沿着朝光源425A的方向穿行。阴影线441A没有遇到场景405内的任何其它物体420地到达光源425A。因此,光源425A将照亮初级光线440与物体420A相交的点上的物体420A。
其它阴影线在初级光线碰到物体的点与光源之间的路径可能被三维场景内的另一个物体阻挡。如果遮挡初级光线碰到的物体上的点与光源之间的路径的物体是不透明的,则光源将不照亮初级光线碰到物体的点处的物体。因此,光源可以不影响初级光线的颜色,从而也不影响呈现在二维画面上的像素的颜色。但是,如果物体是半透明的或透明的,那么光源将照亮在初级光线碰到物体的点处的物体。
例如,阴影线441B可以从初级光线440与物体420A相交的点发出,和可以沿着朝光源425B的方向穿行。在本例中,阴影线441B的路径被物体420D阻挡。如果物体420D是不透明的,那么光源425B将不照亮在初级光线440与物体420A相交的点处的物体420A。但是,如果物体420D是半透明的或透明的,那么光源425B将照亮在初级光线440与物体420A相交的点处的物体420A。
另一种类型的次级光线是透射线。如果初级光线之与相交的物体具有透明或半透明特性(例如,玻璃),图像处理系统可以发出透射线。透射线以与初级光线碰到物体的角度有关的角度穿过物体。例如,可以看出透射线444穿过初级光线440与之相交的物体420A。
另一种类型的次级光线是反射线。如果初级光线之与相交的物体具有反射特性(例如,抛光金属),那么图像处理系统将发出反射线来确定物体可以反射什么颜色或光。反射线以与初级光线与物体相交的角度有关的角度离开物体穿行。例如,图像处理系统可以发出反射线443来确定初级光线440与之相交的物体420A可以反射什么颜色或光。
所有次级光线(例如,阴影线、透射线、反射线)的颜色和光的总影响将导致初级光线经过的像素的最终颜色。
示范性KD树
进行光线跟踪时遇到的一个问题是迅速和有效地确定发出光线是否与要呈现的场景内的物体相交。本领域普通技术人员已知的使光线相交确定更有效的一种方法是使用空间索引。空间索引将三维场景或世界分割成可以包含或可以不包含图元的较小体积(相对于整个三维场景较小)。然后,图像处理系统可以利用这些较小体积的已知边界确定光线是否可以与包含在较小体积内的图元相交。如果光线与包含图元的体积相交,那么可以针对包含在那个体积内的图元的已知位置和尺度,利用光线的轨道进行光线相交测试。如果光线不与特定体积相交,那么不需要针对包含在那个体积内的图元进行光线-图元相交测试。而且,如果光线与不包含图元的有界体(bounding volume)相交,那么,也不需要针对那个有界体进行光线-图元相交测试。因此,通过减少需要的光线-图元相交测试的次数,使用空间索引极大地提高了光线跟踪图像处理系统的性能。不同空间索引加速数据结构的一些例子是八叉树、k维树(kd树)、和二进制空间划分树(BSP树)。虽然存在几种不同空间索引结构,但为了易于描述本发明的实施例,在如下的例子中将使用kd树。但本领域的普通技术人员可以容易地认识到,本发明的实施例可以应用于任何不同类型的空间索引。
kd树利用轴向排列有界体将整个场景或空间划分成较小体积。也就是说,kd树可以利用与已知轴平行的分割面分割场景包围的三维空间。分割面将较大空间划分成较小有界体。较小有界体一起构成场景中的整个空间。将较大有界体划分(分割)成两较小有界体的确定由图像处理系统利用kd树构造算法进行。
确定什么时候将有界体划分成较小有界体的一条准则可以是包括在有界体内的图元的数量。也就是说,只要有界体包含多于预定阈值的图元,树构造算法就可以通过画出更多的分割面继续分割体积。确定什么时候将有界体划分成较小有界体的另一条准则可以是包含在有界体内的空间大小。而且,继续划分有界体的判定也可以基于有多少图元可能与创建有界体的平面相交。
场景的划分可以用由节点、分支和叶组成的二进制树结构表示。树内的每个内部节点可以代表相对较大有界体,同时节点可以包含到子节点的分支,子节点可以代表利用分割面划分相对较大有界体之后所得的两个相对较小的划分体积。在轴向排列kd树中,每个内部节点可以只包含两个到其它节点的分支。内部节点可以包含到一个或两个叶节点的分支(即,指针)。叶节点是不进一步细分成较小体积和包含指向图标的指针的节点。内部节点也可以包含到进一步细分的其它内部节点的分支。内部节点也可以包含确定沿着什么轴画出分割面和沿着轴的哪里画出分割面所需的信息。
示范性有界体
图5A-5C例示了图像处理系统要呈现的二维空间和对应的kd树。为了简单起见,将二维场景用于例示kd树的构建,但是,kd树也可以用于代表三维场景。在图5A-5C的二维例示中,例示出分割线来取代如将在三维结构中使用的分割面,和例示出有界区来取代如将在三维结构中使用的有界体。但是,本领域的普通技术人员可以迅速认识到,这些概念可以容易地应用于包含物体的三维场景。
图5A例示了要呈现在显示在监视器510上的最终画面中的包含图元510的二维场景505。有界体1(BV1)包围代表场景的整个体积的最大体积。在相应kd树中,这可以用顶层节点550表示,顶层节点550也称为根节点或世界节点。在图像处理系统的一个实施例中,当有界体包含,例如,多于两个图元时,图像处理系统可以继续将有界体划分成较小有界体。如前所述,继续将有界体划分成较小有界体的判定可以基于许多因素,但是,为了易于说明起见,在本例中,继续划分有界体的判定只基于图元的数量。从图5A中可以看出,BV1包含六个图元,因此,kd树构造算法可以将BV1划分成较小有界体。
图5B例示了与例示在图5A中相同的二维场景505。但是,在图5B中,树构造算法已经将BV1划分成两个较小有界体BV2和BV3。BV1的划分是通过沿着x轴在点x1画出分割面SP1515完成的。BV1的这一划分也在kd树中反映为在内部或父节点BV1 550的下面、分别与BV2和BV3相对应的两个节点555和560。代表BV1的内部节点现在可以存储例如,但不局限于,指向BV1下面的两个节点(例如,BV2和BV3)的指针、沿着哪根轴画出分割面(例如,x轴)和沿着轴的哪里画出分割面(例如,在点x1上)那样的信息。
由于有界体BV3包含多于预定阈值的图元(例如,多于两个图元),kd树构造算法可以继续划分有界体BV3。但是,由于有界体BV2包含少于或等于预定阈值的图元(例如,只有两个图元510A),kd树构造算法可以不继续划分有界体BV2。像BV2那样不作任何进一步划分或细分的节点称为叶节点。
图5C例示了与例示在图5B中相同的二维场景505。但是,在图5C中,kd树构造算法已经将BV3划分成两个较小有界体BV4和BV5。kd树构造算法利用沿着y轴在点y1处的的分割面划分BV3。由于BV3已经划分成两个子节点,现在可以将它称为内部节点。BV3的划分也在kd树中反映为分别与BV4和BV5相对应的两个叶节点565和570。由于BV4和BV5所代表的体积不进一步划分成较小的有界体,BV4和BV5是叶节点。两个叶节点BV4和BV5位于代表在kd树中划分的有界体的内部节点BV3的下面。
代表BV3的内部节点可以存储例如,但不局限于,指向两个叶节点(即,BV4和BV5)的指针、沿着哪根轴画出分割面(即,y轴)和沿着轴的哪里画出分割面(例如,在点y1上)那样的信息。
由于位于场景内的所有有界体都包含少于或等于可以包围在有界体内的最大预定个数的图元,kd树构造算法现在可以停止划分有界体。叶节点可以包含指向包围在每个叶代表的有界体内的图元的指针。例如,叶节点BV2可以包含指向图元510A的指针,叶节点BV4可以包含指向图元510B的指针,和叶节点BV5可以包含指向图元510C的指针。
可以将最后的kd树结构或其它空间索引结构存储在共享存储器高速缓存110中。可以将kd树和包含kd树的相应数据的尺寸优化成存储在共享存储器高速缓存110中。
迭代光线跟踪算法
根据本发明的一个方面,将光线跟踪算法从递归算法转变成迭代算法使在多个处理元件之间有效分配与光线跟踪有关的工作负载成为可能。与递归光线跟踪算法不同,迭代光线跟踪算法可以允许分离处理元件进行与确定单个像素的颜色有关的操作和允许处理器资源(例如,存储器高速缓存)的有效使用。在多个处理元件之间有效分配工作负载可以提高光线跟踪图像处理系统的性能。
从向三维场景发出初级光线和在向三维场景发出后续的初级光线之前完成与发出的初级光线有关的所有光线跟踪操作(例如,跟踪所有次级光线和进行所有光线-物体相交测试)的意义上来看,进行光线跟踪的算法是递归的。
例如,图像处理系统可以利用递归光线跟踪算法从三维场景中呈现二维图像。利用递归光线跟踪算法的图像处理系统可以使用处理元件进行光线跟踪。处理器可以用于让光线穿过空间索引,和确定光线是否与该空间索引的有界体内的物体相交。如果光线与包含在有界体内的物体相交,图像处理系统可以利用相同处理器,向三维场景发出次级光线,以确定它们是否与物体相交,从而影响与初级光线相交的物体的颜色。在进行与确定次级光线是否与三维场景内的物体相交有关的操作的同时,处理器可以将定义初级光线的信息存储在处理器的存储器高速缓存中。
如果处理元件确定次级光线与三维场景内的物体相交,图像处理元件可以向场景发出更多次级光线,以确定那些次级光线是否与物体相交,和影响与初级光线相交的物体的颜色。当进行确定次级光线是否与三维场景内的物体相交的计算时,处理器可以将以前的次级光线信息存储在处理器的存储器高速缓存中。通过向场景发出越来越多的次级光线,图像处理系统可以最终确定从次级光线对与初级光线相交的物体的颜色的总影响。从与初级光线相交的物体的颜色和由次级光线引起的颜色影响中,可以最终确定初级光线经过的像素的颜色。
尽管递归光线跟踪算法确定初级光线经过的像素的颜色,但每当图像处理系统向三维场景发出更多次级光线时,递归光线跟踪图像处理系统将定义前一光线(例如,初级光线或前一次级光线)的信息放在处理元件的存储器高速缓存中。图像处理系统可以将光线信息存储在高速缓存中,以便释放进行与确定后续的次级光线是否与三维场景内的物体相交有关的计算所需的寄存器。因此,递归光线跟踪图像处理系统可以将大量(相对于高速缓存的尺寸)信息放在处理器的存储器高速缓存中用于单个像素。
当将大量光线信息放在处理器的存储器高速缓存中时,在处理器的存储器高速缓存中几乎没有什么空间可用于定义三维场景内的物体的信息(即,物体几何数据)。可能需要频繁地将这个信息从主存储器取到存储器高速缓存,以便进行确定初级光线或次级光线是否与三维场景内的物体相交的操作(从而使高速缓存“系统颠簸(thrashing)”)。因此,利用递归光线跟踪技术的图像处理系统的限制可能受到从主存储器中取出信息和将它放在处理器的存储器高速缓存中的访问时间的限制。
但是,根据本发明的一个实施例,可以将光线跟踪算法划分成迭代光线跟踪算法。迭代光线跟踪算法可以允许分离处理元件进行部分光线跟踪算法。通过允许分离处理元件进行部分光线跟踪算法,可以减少需要高速缓存的信息量(例如,初级光线和次级光线)。而且,根据本发明的实施例,迭代光线跟踪算法可以与低等待时间高带宽通信网络和共享存储器高速缓存110一起使用,以便提高光线跟踪图像处理系统的性能。
根据本发明的实施例,如上面参照图3A-3C所述的收件箱的低等待时间高带宽通信网络可以用于传递或发送当跟踪后续光线或呈现后续帧时很少使用的数据处理信息(例如,定义初级光线和次级光线的信息)。另外,根据本发明的实施例,光线跟踪图像处理系统可以利用共享相干存储器高速缓存存储当跟踪后续光线或对后续帧进行光线跟踪时图像处理系统可以使用的信息。
图6是例示根据本发明一个实施例、可以用在多处理器图像处理系统中的划分并因此迭代光线跟踪算法或方法600的流程图。方法600从图像处理系统向三维场景发出初级光线的步骤605开始。初级光线随着它穿入三维场景而经过一个像素。初级光线可以用于确定初级光线经过的像素的颜色。
接着,在步骤610中,图像处理系统可以利用工作负荷管理器205的处理元件穿过空间索引(例如,kd树)。空间索引可以存储在图像处理系统的共享存储器高速缓存110内。穿过kd树可以包括进行确定初级光线是否与空间索引内的节点定义的有界体相交的计算。而且,穿过空间索引可以包括采用到定义与光线相交的有界体的节点的分支。工作负荷管理器205可以使用发出光线(例如,初级光线)的坐标和轨道来确定光线是否与空间索引内的节点定义的有界体相交。工作负荷管理器205可以继续穿过空间索引,直到初级光线与只包含图元(即,叶节点)的有界体相交。
在步骤615中,在工作负荷管理器205使初级光线穿过叶节点之后,工作负荷管理器205可以将初级光线和定义叶节点的信息发送到向量吞吐引擎210。工作负荷管理器205可以将定义初级光线和叶节点的信息(例如,光线的轨道、初级光线经过的像素、叶节点定义的有界体等)发送到向量吞吐引擎210。工作负荷管理器205可以通过将定义光线和相交叶节点的信息写入向量吞吐引擎210的收件箱中将信息发送到向量吞吐引擎210。
通过将像素信息与定义初级光线的信息耦合,如果向量吞吐引擎210确定光线与物体相交,并因此确定像素的颜色,则无需将初级光线发送回到工作负荷管理器205。根据本发明的一个实施例,向量吞吐引擎210可以通过写入与像素相对应的帧缓冲器内的存储器位置中(例如,存储在共享存储器高速缓存110中),利用像素信息更新像素的颜色。通过在次级光线与三维场景内的物体相交时更新像素颜色,可以减少需要存储(例如,在高速缓冲存储器中)的与相同像素有关的光线的数量。
在工作负荷管理器205将初级光线信息发送到向量吞吐引擎210之后,图像处理系统可以向三维场景发出后续初级光线。在工作负荷管理器205向向量吞吐引擎210发送初级光线之后,工作负荷管理器205可以马上开始让这个后续发出的初级光线穿过空间索引。因此,工作负荷管理器205可以连续地让光线穿过空间索引,而不是像递归光线跟踪算法那样,一直等到初级光线是否与物体相交的确定完成之后。而且,工作负荷管理器205可以在向量吞吐引擎210确定以前发出的光线是否与通过叶节点定义的有界体内的物体相交时使光线穿过空间索引。根据本发明的一个实施例,向量吞吐引擎210可以负责进行光线-图元相交测试。也就是说,向量吞吐引擎210可以确定光线是否与包含在通过叶节点定义的有界体内的任何图元相交。
因此,在步骤620中,在其收件箱中接收到光线和叶节点信息的向量吞吐引擎210可以进行光线-图元相交测试,以确定光线是否与包含在通过叶节点定义的有界体内的物体相交。定义图元的几何结构可以存储在共享存储器高速缓存110内,因此无需从主存储器中取出。通过将图元的几何结构存储在共享存储器高速缓存110内,迭代光线跟踪算法无需像递归光线跟踪算法的情况那样从主存储器中取出几何结构。如果向量吞吐引擎210确定初级光线与包含在通过叶节点定义的有界体内的图元相交,向量吞吐引擎210可以转到步骤630。
在步骤630中,向量吞吐引擎210可以确定在初级光线与图元相交的点处的相交图元的颜色。例如,可以将图元的颜色存储在共享存储器高速缓存110中,和向量吞吐引擎210可以从共享存储器高速缓存210中读取颜色信息。
在确定了光线-图元交点上图元的颜色之后,向量吞吐引擎210可以更新光线经过的像素的颜色。这可以通过,例如,写入与初级光线经过的像素相对应的帧缓冲器内的存储器位置中来完成。通过在确定光线-图元相交并在确定与初级光线有关的所有次级光线的颜色影响之前更新像素信息,可以减少可能需要存储在存储器高速缓存中的信息量。相反,递归光线跟踪算法在来自次级光线的所有颜色影响被确定之前不将像素的颜色存储在帧缓冲器中,这增加了可能需要存储在处理器的存储器高速缓存中的信息量。
在更新了像素颜色之后,向量吞吐引擎210可以转到步骤S635,在步骤635中,向量吞吐引擎210可以生成次级光线。正如前面参照图4所述的那样,光线跟踪图像处理系统可以利用次级光线确定对相交物体,因此对初级光线经过的像素的附加颜色影响。次级光线可以是,例如,反射线、透射(折射)线、或阴影线。生成次级光线可以包括,例如,根据初级光线的轨道确定次级光线的轨道、相交物体的表面特性、和初级光线与相交物体的相交角度。
在生成次级光线之后,向量吞吐引擎210在步骤640中可以将次级光线发送到工作负荷管理器205。向量吞吐引擎210可以通过将定义次级光线的信息(例如,轨道、定义初级光线穿过的像素的信息等)放在工作负荷管理器205的收件箱115中将次级光线发送到工作负荷管理器205。根据本发明的一个实施例,向量吞吐引擎210可以将次级光线发送到使初级光线穿过空间索引的工作负荷管理器205。但是,根据本发明的另一个实施例,图像处理系统可以包含多个工作负荷管理器,和向量吞吐引擎210可以将次级光线发送到未使初级光线穿过空间索引的工作负荷管理器205。
在将次级光线发送到工作负荷管理器205之后,向量吞吐引擎210可以从可能正在等待进行光线-图元相交测试的收件箱中检索定义光线的其它信息。在向量吞吐引擎210的收件箱中等待的光线已经预先通过工作负荷管理器205穿过空间索引。因此,向量吞吐引擎210可以进行更多的光线-图元相交测试,以确定光线(即,初级或次级)是否与通过叶节点定义的有界体内的物体相交。因此,向量吞吐引擎210可以连续地进行与光线-图元相交测试、确定图元颜色、更新像素颜色、和生成次级光线有关的操作。
在从向量吞吐引擎210接收到次级光线之后,工作负荷管理器205可以执行如上所述的步骤610和615,以确定次级光线是否与叶节点相交。
返回到步骤625,如果向量吞吐引擎210确定光线未与通过叶节点定义的有界体内的图元相交,向量吞吐引擎210可以将三维场景的背景色指定给初级光线经过的像素。将背景色指定给像素是因为初级光线未与包含在三维场景内的任何图元相交。但是,根据本发明的其它实施例,如果光线未与包含在叶节点有界体内的任何图元相交,向量吞吐引擎210可以将光线发送回到工作负荷管理器205,以便工作负荷管理器205可以使光线再次穿过空间索引,以确定光线是否与包含图元的其它叶节点相交。
迭代光线跟踪算法的示范性使用
图7例示了根据本发明一个实施例的、从图像处理系统向三维场景505发出的示范性光线。为了简洁起见,三维场景505与用在图5A-5C中例示kd树的结构的三维场景相同。因此,与三维场景505相对应的kd树与参照图5A-5C构造的kd树相同。如图7所示,观看者705代表图像处理系统可以向三维场景505发出的数条初级光线7101-4的原点。由于每条初级光线7101-4都是向三维场景505发出的,初级光线可能首先经过像素网格(帧)715中的相应像素。尽管在图7中只例示了四个像素715和四条初级光线7101-4,但从三维场景中呈现二维图像可能需要多得多的像素,和可能发出多得多的初级光线。
第一初级光线7101可以由图像处理系统发出,经过第一像素7151。第一初级光线7101可以在交点I1上与有界体4(BV4)相交。为了便于理解,本例中的图像处理系统可以遵照下述模式:从像素网络715的顶端开始发出光线,和沿着像素网格往下移动、每个像素一条光线地继续发出光线,直到对像素网格中的每个像素都发出光线为止。
图像处理系统还可以发出分别经过第二像素7152和第三像素7153的第二初级光线7102和第三初级光线7103。第二初级光线7102和第三初级光线7103也可以分别在第二交点I2和第三交点I3上与BV4相交。因此,第一初级光线7101、第二初级光线7102和第三初级光线7103都与同一有界体相交。而且,第四初级光线7104可以由图像处理系统发出,和可能经过第四像素7154。与第一到第三初级光线7101-3对比,第四初级光线7104可以在交点I4上与有界体5(BV5)相交。
图8A例示了第一初级光线7101穿过空间索引805(例如,kd树)。而且,如阴影框205所指,图8A例示了进行与第一初级光线7101穿过空间索引805有关的操作的工作负荷管理器205。工作负荷管理器205可以采用到定义与光线相交的有界体的节点的分支使光线穿过空间索引805,直到到达叶节点(如图8A中的加黑分支和节点所示)。如图7所示,初级光线7101与BV4相交,因此,工作负荷管理器205使第一初级光线7101穿过定义BV4的叶节点。在使光线穿过叶节点之后,工作负荷管理器205可以向向量吞吐引擎210发送第一初级光线7101(例如,发送定义第一初级光线7101的信息和定义第一初级光线经过的像素7151的信息)和定义相交叶节点(即,BV4)的信息。
根据本发明的实施例,在工作负荷管理器205将第一初级光线7101发送到向量吞吐引擎210之后,工作负荷管理器205可以开始让第二初级光线7102穿过空间索引。因此,工作负荷管理器205可以在向量吞吐引擎210正在确定光线是否与通过穿过叶节点定义的有界体内的物体相交的同时,不断地使光线穿过空间索引805。
图8B例示了穿过有界体4(BV4)的第一初级光线7101。而且,如阴影框所指,图8B例示了在向量吞吐引擎接收到定义第一初级光线7101的信息和定义有界体BV4的信息之后进行光线-图元相交测试的向量吞吐引擎210。正如参照图6所述的那样,向量吞吐引擎210可以进行光线-图元相交测试,以确定初级光线7101是否与包含在有界体BV4内的图元相交。
向量吞吐引擎210可以针对有界体BV4内的第一物体720,和针对有界体BV4内的第二物体725利用第一初级光线7101进行测试。如图8B所示,向量吞吐引擎210可以确定第一初级光线7101与第一物体720相交。
正如前面参照方法600所述的那样,在确定了第一初级光线7101与物体相交之后,向量吞吐引擎210可以确定第一初级光线7101与第一物体720相交的点处第一物体720的颜色。在确定了交点处物体720的颜色之后,向量吞吐引擎210可以更新第一初级光线7101经过的像素7151的颜色(例如,通过写入与像素7151相对应的帧缓冲器存储器位置中)。
在确定了交点处物体720的颜色之后,向量吞吐引擎210可以生成次级光线。例如,如图8C所示,向量吞吐引擎210可以生成反射线730和透射(折射)线735。两条次级光线(730和735)都源自第一初级光线7101与物体720相交的点。如上所述,次级光线可以用于确定对第一初级光线7101与物体720相交的点处的物体的附加颜色影响。次级光线的生成可以包括确定每条次级光线的轨道和标记次级光线,以便来自次级光线的附加颜色影响可以用于更新第一初级光线7101经过的像素7151的颜色。
在生成次级光线(730和735)之后,向量吞吐引擎210可以通过收件箱将次级光线(730和735)发送到工作负荷管理器205。接收到次级光线(730和735)的工作负荷管理器205可以利用定义次级光线的信息(即,次级光线的轨道)穿过空间索引(spatial index)805。例如,图8D中的阴影框例示了可以使向量吞吐引擎210生成的次级光线(例如,730)穿过空间索引805的工作负荷管理器205。工作负荷管理器205可以让次级光线穿过叶节点。在次级光线穿过叶节点之后,工作负荷管理器205可以将次级光线和定义与次级光线相交的有界体的信息发送到向量吞吐引擎210,以确定次级光线是否和与次级光线相交的有界体内的物体相交。
当向量吞吐引擎210确定初级光线或次级光线碰到三维场景内的物体时,可以在帧缓冲器内更新初级光线经过的像素的颜色。根据本发明的实施例,可以跟踪与初级光线有关、并因此与初级光线经过的像素有关的所有次级光线通过三维场景以及它们的保存在帧缓冲器中的颜色影响,以确定像素的最终颜色。但是,根据本发明的其它实施例,可以跟踪与初级光线有关的有限条次级光线通过三维场景,以确定像素的最终颜色。通过限制跟踪通过三维场景、并因此对像素的颜色有影响的次级光线的数量,可以减少确定像素的最终颜色所需的处理量。
空间索引映射到处理器线程资源
如上所述,向量吞吐引擎(VTE)210可以负责例如进行光线-图元相交测试、更新像素颜色、和发出次级光线那样的操作。如图2所示,每个多核处理元件可以包含多个VTE 210和每个VTE 210可以包含多个处理线程(VTE线程)。当跟踪光线以便从三维场景中呈现二维图像时,可以跟踪许多(数千或数百万)条光线,以便呈现导致需要进行的许多VTE操作的单个图像。而且,图像处理系统可以是可能需要每秒呈现许多次帧(例如,每秒60帧)的较大系统(例如,视频游戏控制台等)的一部分。为了在所需时帧内进行足够次数的VTE操作,图像处理系统可以在多个VTE和VTE线程之间分配VTE工作负荷。
根据本发明的一个实施例,图像处理系统可以通过向每个VTE线程指定大量空间索引叶节点,在VTE线程之间分配工作负荷。
例如,VTE210可以包含四个VTE线程。图像处理系统中的每个VTE线程可以用VTE线程id标记标识。例如,第一VTE线程可以含有0000的VTE线程id标记,第二VTE线程可以含有0001的线程id标记,第三VTE线程可以含有0010的线程id标记,和第四VTE线程可以含有0011的线程id标记。这四个线程的每一个都可以负责大量空间索引叶节点。尽管这里的图像处理系统被描述成含有四个VTE线程,但在本发明的各种实施例中,图像处理系统可以包含更多或更少的VTE线程。
图9例示了根据本发明一个实施例,将空间索引900的叶节点映射到VTE线程,以便在图像处理系统中分配工作负荷的示范性映射。空间索引900可以由图像处理系统用于进行光线跟踪。空间索引900包含世界节点、多个内部节点、和多个叶节点。
叶节点到VTE线程的映射在图9中用围绕空间索引900的叶节点的曲边区域例示。如图9所示,第一VTE线程0000可以负责与9个叶节点的第一组有关的VTE操作,第二处理线程0001可以负责9个叶节点的第二组,第三处理线程0010可以负责9个叶节点的第三组,和第四处理线程0011可以负责9个叶节点的第四组。
叶节点可以映射到每个VTE线程,以便使VTE线程承受的工作负荷相对平衡。根据本发明的一个实施例,平衡工作负荷可以通过将数量大致相等的叶节点映射到VTE线程来完成。如图9所示,每个处理线程可以负责对数量相等的叶节点(9个)进行VTE操作。
根据本发明的另一个实施例,工作负荷在VTE线程之间的分配可以通过平衡每个VTE线程负责的图元的数量来完成。例如,第一VTE线程比第二VTE线程负责的叶节点数量要少;但是,包含在每个VTE线程负责的叶节点内的图元的总数大致相等。
图10是例示根据本发明一个实施例,在包含多个VTE线程的图像处理系统中进行光线跟踪的示范性方法1000的流程图。方法1000展示了在将叶节点映射到线程的图像处理系统中为穿过叶节点识别负责VTE线程的示范性方法。而且,方法1000展示了将VTE工作负荷重新分配给空闲VTE线程的示意性重新分配。
方法100可以从工作负荷管理器205让光线穿过空间索引900,直到到达叶节点的步骤1005开始。工作负荷管理器205可以通过采用到定义与光线相交的有界体的节点的分支使光线穿过。一旦工作负荷管理器205使光线穿过叶节点,工作负荷管理器205可以转到步骤1010。
在步骤1010中,工作负荷管理器205可以确定负责对穿过叶节点进行VTE操作的VTE线程。根据本发明的一个实施例,可以在空间索引内标识负责对叶节点进行VTE操作的线程。例如,空间索引可以包含用定义叶节点的信息标识负责VTE线程的信息(例如,存储在空间索引的叶节点中的、标识负责VTE线程的一组位)。但是,根据本发明的另一个实施例,可以在线程表中标识负责对穿过叶节点进行VTE操作的线程。
例如,图11例示了线程表1100。线程表1100可以含有与空间索引中的每个叶节点相对应的行。而且,线程表1100可以列出负责对于每个叶节点进行VTE操作的VTE线程。因此,工作负荷管理器205可以通过搜索线程表1100内包含穿过叶节点的项目来确定负责VTE线程。另外,正如下面进一步详述的那样,线程表110也可以包含指示每个VTE线程的状态(例如,空闲)的列。线程表1100可以存储在,例如,图像处理系统的主存储器或多核处理元件2201的高速缓冲存储器230中。
在确定了可以负责穿过叶节点的VTE线程之后,在步骤1015中,工作负荷管理器205可以将定义光线的信息(例如,光线的轨道)和定义穿过叶节点的信息(例如,叶节点定义的有界体的几何结构)发送到负责VTE线程。工作负荷管理器205可以通过,例如,将光线和叶节点信息放在与负责VTE线程相对应的收件箱(例如,收件箱302)中而将信息发送到负责VTE线程。
接着,在步骤1020中,VTE线程可以在它的收件箱中检验光线和叶节点信息。在步骤1020中检验了光线之后,在步骤1025中确定VTE线程是否已接收到光线信息。如果是,VTE线程可以转到步骤1030。在步骤1030中,VTE线程可以确定存在于其收件箱之中的光线的数量是否超过指示对工作负荷的所期望阈限的阈值。
阈值可以用于确定VTE线程自身进行VTE操作更有效,还是VTE线程将接收的光线发送给另一个(例如,空闲)VTE线程进行VTE操作更有效。如果VTE线程当前具有工作负荷,而另一个VTE线程可能不具有工作负荷(或可能具有较小工作负荷),并因此可能是空闲的(或较不繁忙),则将光线发送给另一个VTE线程更有效。
例如,可以将阈值设置成确定是否存在可用VTE线程和将光线发送到可用VTE线程所需的时间不超过最初VTE线程本身进行VTE操作的时间。如果未超过阈值,最初VTE线程可以转到步骤1045,利用工作负荷管理器205发送的光线和叶节点信息进行VTE操作。
但是,如果VTE线程收件箱中光线的数量超过阈值,VTE线程可以转到步骤1035,在步骤1035中,VTE线程可以搜索可用于进行VTE操作的另一个VTE线程。根据本发明的一个实施例,可用VTE线程可以是,例如,空闲(即,当前未进行VTE操作)的VTE线程。最初VTE线程可以通过检验例如线程表来确定哪个或哪些VTE线程是空闲的。VTE线程可以通过检查线程表1100中VTE线程的空闲位搜索空闲VTE线程。
在搜索了线程表1100之后,在步骤1040中,VTE线程可以确定其是否找到了空闲的VTE线程。如果VTE线程未找到空闲VTE线程,原始VTE线程自身可以对光线进行VTE操作。
但是,如果首先接收到光线的VTE线程找到空闲VTE线程,首先接收到光线的VTE线程可以转到步骤1050,并将光线和叶节点信息发送到空闲的VTE线程。例如,工作负荷管理器205可以使光线穿过通过叶节点id0000标识的叶节点。工作负荷管理器205可以从线程表1100确定VTE线程0000负责对叶节点0000进行VTE操作。因此,工作负荷管理器205可以将光线和叶节点信息发送到VTE线程0000。但是,VTE线程0000在步骤1030中可能确定其收件箱中需要VTE操作的光线的数量超过阈值。因此,VTE线程0000可以访问线程表1100,以确定图像处理系统中的另一个VTE线程是否空闲,因此能够对穿过叶节点0000的光线进行VTE操作。通过检查线程表1100中的空闲位,VTE线程0000可以确定VTE线程0011是空闲的。因此,VTE线程0000可以将光线发送到VTE线程0011。
通过将光线从忙于进行VTE操作的VTE线程转移到空闲的线程,可以实现图像处理系统资源的更有效利用。图像处理系统资源的更有效利用可以导致从三维场景中呈现二维图像所需的时间缩短,因此提高了图像处理系统的性能。
在将光线发送到空闲VTE线程之后,VTE线程可以转到步骤1045,对保留在其收件箱中的光线进行VTE操作。在对保留在其收件箱中的光线进行VTE操作之后,VTE线程可以转到步骤1020,以检验它的收件箱中的更多光线。如果在步骤1025中VTE确定在它的收件箱中没有光线,VTE线程可以转到步骤1055,在步骤1055中,VTE线程可以在线程表1100中声明它的空闲位。通过在线程表1100中声明它的空闲位,VTE向图像处理系统中可用于进行VTE操作的其它VTE线程发送信号。
空间索引重新映射到处理器线程资源
根据本发明的实施例,图像处理系统可以周期性地将叶节点重新映射到空间索引中的不同VTE线程资源。可以响应VTE线程承受的不平衡工作负荷的检测而将叶节点重新映射到VTE线程。图像处理系统可以监视所有VTE线程承受的工作负荷,并且响应于监视的工作负荷,重新映射每个VTE负责的叶节点。将叶节点重新映射到VTE线程以平衡工作负荷可以提高图像处理系统的性能。平衡工作负荷可以通过保证在其它VTE线程空闲的时候,一个VTE线程(或多个VTE线程)不进行大部分的VTE操作来提高图像处理系统的性能。
重新映射间隔可以随不同实施例相差很大。例如,重新映射间隔可以从频繁(例如,每帧多次)到相对不频繁(例如,每“N”帧一次,其中,N可以非常大)。对于一些实施例,重新映射间隔可以通过负载不平衡偏差(可能依赖于场景数据和用户输入)与重新映射本身的成本系统开销之比确定。这个系统开销可以包括必要性能测量(测量负载)、线程交换等。
根据本发明的实施例,承受较高工作负荷的VTE线程在重新映射之后可以负责较少叶节点。相反,承受较低工作负荷的VTE线程在重新映射之后可以负责较多叶节点。
图12是例示根据本发明一个实施例、进行光线跟踪和将叶节点重新映射到VTE线程的示范性方法1200的流程图。方法1200从图像处理系统创建叶节点到VTE线程的初始映射的步骤1205开始。叶节点到VTE线程的映射可以存储在,例如,如图11所示的线程表1100中。
如图9所示,图像处理系统最初可以将叶节点的四个组或区域映射到四个VTE线程(例如,VTE线程0000、0001、0010和0011)。在将叶节点映射到VTE线程之后,在步骤1210中,图像处理系统可以对一个帧(例如,帧N)进行光线跟踪。
在呈现帧之后(或在呈现帧期间),图像处理系统可以在步骤1215中监视VTE线程承受的工作负荷。图像处理系统可以通过监视各种性能参数来确定给予VTE线程的工作负荷。例如,可以通过检查线程的性能计数器确定给予VTE线程的工作负荷。性能计数器可以编译与处理元件内的性能事件有关的数据(例如,计数VTE线程处理的光线的数量)。
VTE线程承受的工作负荷也可以通过监视流过与VTE线程相对应的收件箱115的业务量来确定。
接着,在步骤1220中,图像处理系统可以确定VTE线程承受的工作负荷是否平衡。为了确定VTE线程承受的工作负荷是否平衡,图像处理系统可以比较每个VTE线程承受的工作负荷。相对于其它VTE线程的高性能计数器值或高收件箱业务量指示VTE线程正承受相对于其它VTE线程增加的工作负荷。
例如,如果VTE比其它VTE线程负责更多的叶节点,VTE线程可以承受相对于其它VTE线程增加的工作负荷。而且,例如,如果VTE线程负责共同包含相对于其它VTE线程负责的图元的数量更多的图元的叶节点,则VTE线程可以承受相对于其它VTE线程增加的工作负荷。
如果VTE线程承受的工作负荷平衡,图像处理系统可以返回到步骤1210,从三维场景中呈现后续帧(例如,帧N+1)。但是,如果VTE线程承受的工作负荷不平衡,图像处理系统可以转到步骤1225。在步骤1225中,图像处理系统可以将叶节点重新映射到VTE线程,以便努力平衡VTE线程承受的工作负荷。图像处理系统可以将叶节点重新映射到与在步骤1215中监视的工作负荷相对应的VTE线程。
在将叶节点重新映射到其它VTE线程之后,图像处理系统可以返回到方法1200的步骤1210,从三维场景中呈现新帧(例如,帧N+1)。
例如,在步骤1215中,当进行与例示在图9中的空间索引900中的叶节点有关的VTE操作时,图像处理系统可以确定VTE线程(例如,线程0000、0001、0010、和0011)承受的工作负荷不平衡。具体地说,图像处理系统可以确定VTE线程0010正承受相对于VTE线程0011较大的工作负荷。响应VTE线程正承受的不平衡工作负荷,根据本发明的一个实施例,图像处理系统可以将空间索引900中的叶节点重新映射到其它VTE线程。
例如,响应于VTE线程0010正承受比VTE线程0011相对较大的工作负荷,图像处理系统可以将VTE线程0010负责的大量叶节点(2)重新映射到VTE线程0010。
叶节点被重新映射到VTE线程的空间索引900例示在图13中。例如,对于要呈现的下一个帧(即,帧N+1),线程0011可以负责与VTE线程0011在前一帧中负责的叶节点的数量(9个)相比更多的叶节点(11个)。而且,与线程0010在呈现前一帧期间负责的叶节点的数量(9个)相比,线程0010在呈现下一帧的时候可以负责数量较少的叶节点(7个)。
通过重新映射每个VTE线程负责的叶节点,图像处理系统中的所有向量吞吐引擎可以承受平衡的工作负荷。VTE线程承受的平衡工作负荷可以提高光线跟踪图像处理系统的性能。
结论
通过将叶节点映射到VTE线程,可以实现图像处理系统中工作负荷的有效分配。另外,VTE线程可以利用线程表将来自承受增加的工作负荷的VTE线程的工作负荷重新分配给空闲的VTE线程。而且,可以监视VTE线程承受的工作负荷,以便确定在所有VTE线程之间工作负荷是否平衡。可以响应VTE线程之间的工作负荷的检测不平衡,周期性地将叶节点重新映射到其它VTE线程。通过监视VTE线程承受的工作负荷,和响应不平衡工作负荷将叶节点重新映射到不同VTE线程,可以保持工作负荷的有效分配。工作负荷的有效分配可以提高图像处理系统的性能。
虽然上文把注意力放在本发明的实施例,但也可以不偏离本发明基本范围地设想出其它和进一步的实施例,本发明的范围由所附权利要求书决定。
Claims (13)
1.一种进行光线跟踪的方法,包含:
向三维场景发出光线;
利用第一处理元件,采用到定义与光线相交的有界体的节点的分支,使光线穿过含有代表三维场景内的有界体的节点的空间索引、直到到达叶节点;
确定一个或多个处理线程的当前工作负荷;和
将定义光线的信息和定义叶节点的信息发送到当前工作负荷适合进行光线-图元相交测试的处理线程,以确定光线是否与包含在通过叶节点定义的有界体内的图元相交。
2.根据权利要求1所述的方法,其中,确定一个或多个处理线程的当前工作负荷包含:
搜索包含至少一个将叶节点映射到处理线程的项目的线程表。
3.根据权利要求1所述的方法,其中,确定一个或多个处理线程的当前工作负荷包含确定与第一处理线程相联系的收件箱中的光线的数量是否超过阈值水平。
4.根据权利要求3所述的方法,进一步包含,如果与第一处理线程相联系的收件箱中的光线的数量超过阈值水平:
将定义光线的信息和定义叶节点的信息发送到第二处理线程。
5.根据权利要求4所述的方法,进一步包含确定第二处理线程是否是空闲或未充分利用的至少一种。
6.根据权利要求5所述的方法,进一步包含通过检查与第二处理线程相联系的空闲值确定第二处理线程是空闲的。
7.根据权利要求6所述的方法,其中,空闲位包含在线程表中的项目中。
8.根据权利要求1所述的方法,进一步包含:
根据空间索引中的信息确定指定了叶节点的处理线程。
9.一种系统,包含:
一个或多个处理线程;
含有定义三维场景的有界体的节点的空间索引;和
被配置成进行如下操作的第一处理单元:
向三维场景发出光线;
采用到定义与光线相交的有界体的节点的分支,使光线穿过含有代表三维场景内的有界体的节点的空间索引,直到到达叶节点;
确定一个或多个处理线程的当前工作负荷;和
将定义光线的信息和定义叶节点的信息发送到当前工作负荷适合进行光线-图元相交测试的处理线程,以确定光线是否与包含在通过叶节点定义的有界体内的图元相交。
10.根据权利要求9所述的系统,进一步包含:
包含至少一个将叶节点映射到处理线程的项目的线程表;和
其中,第一处理元件被进一步配置成通过搜索线程表确定一个或多个处理线程的当前工作负荷。
11.根据权利要求9所述的系统,进一步包含:
第一处理线程;和
与第一处理线程相联系的收件箱;和
其中,确定一个或多个处理线程的当前工作负荷包含确定与第一处理线程相联系的收件箱中的光线的数量是否超过阈值水平。
12.根据权利要求11所述的系统,其中第一处理元件被进一步配置成:
如果与第一处理线程相联系的收件箱中的光线的数量超过阈值水平,则将定义光线的信息和定义叶节点的信息发送到第二处理线程。
13.一种包含程序的计算机可读介质,该程序在被执行时进行包含根据权利要求1到8中的任何一项所述的方法的步骤的操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/563,772 | 2006-11-28 | ||
US11/563,772 US7852336B2 (en) | 2006-11-28 | 2006-11-28 | Dynamic determination of optimal spatial index mapping to processor thread resources |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101192309A true CN101192309A (zh) | 2008-06-04 |
CN100568291C CN100568291C (zh) | 2009-12-09 |
Family
ID=39493184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101869692A Expired - Fee Related CN100568291C (zh) | 2006-11-28 | 2007-11-15 | 进行光线跟踪的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7852336B2 (zh) |
CN (1) | CN100568291C (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101982838A (zh) * | 2010-11-02 | 2011-03-02 | 长春理工大学 | 一种加速被面光源照射的3d虚拟场景的光线跟踪的方法 |
CN102074041A (zh) * | 2010-12-21 | 2011-05-25 | 长春理工大学 | 一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法 |
CN102282591A (zh) * | 2008-09-10 | 2011-12-14 | 柯斯提克绘图有限公司 | 光线跟踪系统架构和方法 |
CN102521870A (zh) * | 2011-11-22 | 2012-06-27 | 浙江大学 | 一种微多边形光线跟踪的着色重用方法 |
CN105279783A (zh) * | 2014-05-27 | 2016-01-27 | 三星电子株式会社 | 在光线跟踪系统中遍历加速结构的设备和方法 |
CN107833267A (zh) * | 2012-11-02 | 2018-03-23 | 想象技术有限公司 | 用于图形渲染的几何图形处理方法和图形渲染系统 |
CN115115761A (zh) * | 2021-03-23 | 2022-09-27 | 想象技术有限公司 | 光线跟踪系统中的相交测试 |
CN115115764A (zh) * | 2021-03-23 | 2022-09-27 | 想象技术有限公司 | 光线跟踪系统中的相交测试 |
Families Citing this family (21)
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 |
US9665970B2 (en) | 2006-09-19 | 2017-05-30 | Imagination Technologies Limited | Variable-sized concurrent grouping for multiprocessing |
US8674987B2 (en) | 2006-09-19 | 2014-03-18 | Caustic Graphics, Inc. | Dynamic ray population control |
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 |
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 |
US8237711B2 (en) * | 2007-11-19 | 2012-08-07 | Caustic Graphics, Inc. | Tracing of shader-generated ray groups using coupled intersection testing |
US8072454B1 (en) * | 2007-12-13 | 2011-12-06 | Nvidia Corporation | Parallel processing system, method, and computer program product for selecting a ray tracing entity from a group of ray tracing entities for processing |
US8963918B2 (en) * | 2008-09-30 | 2015-02-24 | Microsoft Corporation | Ray tracing on graphics hardware using kd-trees |
US9336624B2 (en) * | 2008-10-07 | 2016-05-10 | Mitsubishi Electric Research Laboratories, Inc. | Method and system for rendering 3D distance fields |
US8350846B2 (en) * | 2009-01-28 | 2013-01-08 | International Business Machines Corporation | Updating ray traced acceleration data structures between frames based on changing perspective |
GB2529075A (en) | 2011-06-16 | 2016-02-10 | Imagination Tech Ltd | Graphics processor with non-blocking concurrent architecture |
US10061618B2 (en) | 2011-06-16 | 2018-08-28 | Imagination Technologies Limited | Scheduling heterogenous computation on multithreaded processors |
US10970429B2 (en) * | 2013-01-07 | 2021-04-06 | Magma Giessereitechnologie Gmbh | Method and algorithm for simulating the influence of thermally coupled surface radiation in casting processes |
DK178380B1 (en) * | 2014-07-01 | 2016-01-25 | Magma Giessereitechnologie Gmbh | Method of beam tracking for use in a simulation or calculation process |
US10114681B2 (en) | 2016-03-30 | 2018-10-30 | Qualcomm Incorporated | Identifying enhanced synchronization operation outcomes to improve runtime operations |
US10043303B2 (en) * | 2016-03-30 | 2018-08-07 | Intel IP Corporation | Methods and apparatus for more efficient ray tracing of instanced geometry |
US10699465B1 (en) | 2018-12-28 | 2020-06-30 | Intel Corporation | Cluster of scalar engines to accelerate intersection in leaf node |
US11380041B2 (en) * | 2020-06-11 | 2022-07-05 | Nvidia Corporation | Enhanced techniques for traversing ray tracing acceleration structures |
US11508112B2 (en) * | 2020-06-18 | 2022-11-22 | Nvidia Corporation | Early release of resources in ray tracing hardware |
CN114998513B (zh) * | 2022-05-12 | 2024-01-30 | 中国人民解放军国防科技大学 | 基于kd树的带循环边界的地球模拟系统网格重映射方法 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5229938A (en) * | 1989-06-28 | 1993-07-20 | Conoco Inc. | Method for migrating seismic data by using ray tracing in determining two way travel times |
JPH06223198A (ja) * | 1993-01-26 | 1994-08-12 | Hitachi Ltd | 光線追跡による画像生成装置及び方法 |
GB9424273D0 (en) * | 1994-12-01 | 1995-01-18 | Wrigley Adrian M T | Improvements in and relating to image constrcution |
US5701404A (en) * | 1996-05-31 | 1997-12-23 | Softimage | Method and system for efficiently trimming a nurbs surface with a projected curve |
US6023279A (en) * | 1997-01-09 | 2000-02-08 | The Boeing Company | Method and apparatus for rapidly rendering computer generated images of complex structures |
US6373485B2 (en) * | 1998-02-17 | 2002-04-16 | Sun Microsystems, Inc. | Mitigating the effects of object approximations |
US6300965B1 (en) * | 1998-02-17 | 2001-10-09 | Sun Microsystems, Inc. | Visible-object determination for interactive visualization |
US6266053B1 (en) * | 1998-04-03 | 2001-07-24 | Synapix, Inc. | Time inheritance scene graph for representation of media content |
US6137856A (en) * | 1998-12-14 | 2000-10-24 | General Electric Company | Generic architectures for backprojection algorithm |
US6396492B1 (en) * | 1999-08-06 | 2002-05-28 | Mitsubishi Electric Research Laboratories, Inc | Detail-directed hierarchical distance fields |
US6556199B1 (en) * | 1999-08-11 | 2003-04-29 | Advanced Research And Technology Institute | Method and apparatus for fast voxelization of volumetric models |
US6556200B1 (en) * | 1999-09-01 | 2003-04-29 | Mitsubishi Electric Research Laboratories, Inc. | Temporal and spatial coherent ray tracing for rendering scenes with sampled and geometry data |
US6661794B1 (en) * | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
AU2001239926A1 (en) * | 2000-02-25 | 2001-09-03 | The Research Foundation Of State University Of New York | Apparatus and method for volume processing and rendering |
US6597359B1 (en) * | 2000-05-17 | 2003-07-22 | Raychip, Inc. | Hierarchical space subdivision hardware for ray tracing |
US7495664B2 (en) * | 2000-06-19 | 2009-02-24 | Mental Images Gmbh | Instant ray tracing |
US8248416B2 (en) * | 2000-06-19 | 2012-08-21 | Mental Images Gmbh | Efficient ray tracing without acceleration data structure |
US7499053B2 (en) * | 2000-06-19 | 2009-03-03 | Mental Images Gmbh | Real-time precision ray tracing |
WO2002001378A1 (en) * | 2000-06-23 | 2002-01-03 | Decis E-Direct, Inc. | Component models |
US6735758B1 (en) * | 2000-07-06 | 2004-05-11 | International Business Machines Corporation | Method and system for SMP profiling using synchronized or nonsynchronized metric variables with support across multiple systems |
US7389497B1 (en) * | 2000-07-06 | 2008-06-17 | International Business Machines Corporation | Method and system for tracing profiling information using per thread metric variables with reused kernel threads |
US6664961B2 (en) * | 2000-12-20 | 2003-12-16 | Rutgers, The State University Of Nj | Resample and composite engine for real-time volume rendering |
US8473922B2 (en) * | 2001-09-19 | 2013-06-25 | Hewlett-Packard Development Company, L.P. | Runtime monitoring in component-based systems |
US6868420B2 (en) * | 2002-07-31 | 2005-03-15 | Mitsubishi Electric Research Laboratories, Inc. | Method for traversing quadtrees, octrees, and N-dimensional bi-trees |
US20050071438A1 (en) * | 2003-09-30 | 2005-03-31 | Shih-Wei Liao | Methods and apparatuses for compiler-creating helper threads for multi-threading |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
US7483024B2 (en) * | 2003-12-31 | 2009-01-27 | Autodesk, Inc. | Accelerated ray-object intersection |
DE102004007835A1 (de) * | 2004-02-17 | 2005-09-15 | Universität des Saarlandes | Vorrichtung zur Darstellung von dynamischen komplexen Szenen |
US20060098009A1 (en) * | 2004-10-28 | 2006-05-11 | Miguel Zuniga | Method and apparatus for ray and range queries using wide object isolation techniques |
US7898520B2 (en) * | 2005-11-30 | 2011-03-01 | 3M Innovative Properties Company | Method and apparatus for backlight simulation |
US9323578B2 (en) * | 2006-01-19 | 2016-04-26 | International Business Machines Corporation | Analyzing wait states in a data processing system |
US8136111B2 (en) * | 2006-06-27 | 2012-03-13 | International Business Machines Corporation | Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system |
US20080024489A1 (en) * | 2006-07-28 | 2008-01-31 | Robert Allen Shearer | Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements |
US8243081B2 (en) * | 2006-08-22 | 2012-08-14 | International Business Machines Corporation | Methods and systems for partitioning a spatial index |
US7864174B2 (en) * | 2006-08-24 | 2011-01-04 | International Business Machines Corporation | Methods and systems for reducing the number of rays passed between processing elements in a distributed ray tracing system |
US7884819B2 (en) * | 2006-09-27 | 2011-02-08 | International Business Machines Corporation | Pixel color accumulation in a ray tracing image processing system |
US7737974B2 (en) * | 2006-09-27 | 2010-06-15 | International Business Machines Corporation | Reallocation of spatial index traversal between processing elements in response to changes in ray tracing graphics workload |
US20080079715A1 (en) * | 2006-09-28 | 2008-04-03 | Shearer Robert A | Updating Spatial Index Partitions Based on Ray Tracing Image Processing System Performance |
US20080079714A1 (en) * | 2006-09-28 | 2008-04-03 | Shearer Robert A | Workload Distribution Through Frame Division in a Ray Tracing Image Processing System |
US7940266B2 (en) * | 2006-10-13 | 2011-05-10 | International Business Machines Corporation | Dynamic reallocation of processing cores for balanced ray tracing graphics workload |
-
2006
- 2006-11-28 US US11/563,772 patent/US7852336B2/en not_active Expired - Fee Related
-
2007
- 2007-11-15 CN CNB2007101869692A patent/CN100568291C/zh not_active Expired - Fee Related
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102282591A (zh) * | 2008-09-10 | 2011-12-14 | 柯斯提克绘图有限公司 | 光线跟踪系统架构和方法 |
CN101982838A (zh) * | 2010-11-02 | 2011-03-02 | 长春理工大学 | 一种加速被面光源照射的3d虚拟场景的光线跟踪的方法 |
CN102074041A (zh) * | 2010-12-21 | 2011-05-25 | 长春理工大学 | 一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法 |
CN102074041B (zh) * | 2010-12-21 | 2012-10-10 | 长春理工大学 | 一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法 |
CN102521870A (zh) * | 2011-11-22 | 2012-06-27 | 浙江大学 | 一种微多边形光线跟踪的着色重用方法 |
CN102521870B (zh) * | 2011-11-22 | 2014-04-16 | 浙江大学 | 一种微多边形光线跟踪的着色重用方法 |
CN107833267B (zh) * | 2012-11-02 | 2021-11-05 | 想象技术有限公司 | 用于图形渲染的几何图形处理方法和图形渲染系统 |
CN107833267A (zh) * | 2012-11-02 | 2018-03-23 | 想象技术有限公司 | 用于图形渲染的几何图形处理方法和图形渲染系统 |
CN105279783A (zh) * | 2014-05-27 | 2016-01-27 | 三星电子株式会社 | 在光线跟踪系统中遍历加速结构的设备和方法 |
CN115115761A (zh) * | 2021-03-23 | 2022-09-27 | 想象技术有限公司 | 光线跟踪系统中的相交测试 |
CN115115764A (zh) * | 2021-03-23 | 2022-09-27 | 想象技术有限公司 | 光线跟踪系统中的相交测试 |
US11610361B2 (en) | 2021-03-23 | 2023-03-21 | Imagination Technologies Limited | Intersection testing in a ray tracing system using scaled ray components |
US11615577B2 (en) | 2021-03-23 | 2023-03-28 | Imagination Technologies Limited | Intersection testing in a ray tracing system using scaled minimum and maximum culling distances |
CN115115761B (zh) * | 2021-03-23 | 2023-10-17 | 想象技术有限公司 | 确定光线是否与三维轴对齐框相交的方法、装置和介质 |
CN115115764B (zh) * | 2021-03-23 | 2024-03-15 | 想象技术有限公司 | 光线跟踪系统中的相交测试的方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20080122845A1 (en) | 2008-05-29 |
US7852336B2 (en) | 2010-12-14 |
CN100568291C (zh) | 2009-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100568291C (zh) | 进行光线跟踪的方法和系统 | |
CN100570638C (zh) | 分发工作负载的方法和图像处理系统 | |
US7940266B2 (en) | Dynamic reallocation of processing cores for balanced ray tracing graphics workload | |
CN100557637C (zh) | 执行射线追踪的方法和系统 | |
KR102080851B1 (ko) | 레이 추적의 스케쥴링을 위한 장치 및 방법 | |
US8248401B2 (en) | Accelerated data structure optimization based upon view orientation | |
CN101506847B (zh) | 用于划分空间索引的方法和系统 | |
JP5476138B2 (ja) | 変化する視野に基づいてフレーム間の光線追跡のアクセラレーション・データ構造体を更新する方法 | |
US9043801B2 (en) | Two-tiered dynamic load balancing using sets of distributed thread pools | |
CN101490715B (zh) | 用于具有最小存储器带宽要求的优化的光线遍历算法的高速缓存利用的方法和装置 | |
US8773449B2 (en) | Rendering of stereoscopic images with multithreaded rendering software pipeline | |
US9911212B2 (en) | Resetting of dynamically grown accelerated data structure | |
CN100557638C (zh) | 执行射线追踪的方法和系统 | |
CN101183339B (zh) | 使存储器高速缓存中数据无效的方法与系统 | |
US8248412B2 (en) | Physical rendering with textured bounding volume primitive mapping | |
US20090256836A1 (en) | Hybrid rendering of image data utilizing streaming geometry frontend interconnected to physical rendering backend through dynamic accelerated data structure generator | |
US8826299B2 (en) | Spawned message state determination | |
CN104050705A (zh) | 处置光栅操作中的post-z覆盖数据 | |
US20080079731A1 (en) | Integrated Acceleration Data Structure for Physics and Ray Tracing Workload | |
WO2008037615A1 (en) | Workload distribution in a ray tracing image processing system | |
US10846908B2 (en) | Graphics processing apparatus based on hybrid GPU architecture | |
US11816792B2 (en) | Overlay trees for ray tracing | |
US10769750B1 (en) | Ray tracing device using MIMD based T and I scheduling | |
EP2690599B1 (en) | Method and apparatus for ray tracing | |
US20230097562A1 (en) | Acceleration structures with delta instances |
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: 20091209 Termination date: 20181115 |
|
CF01 | Termination of patent right due to non-payment of annual fee |