CN101192310A - 执行射线追踪的方法和系统 - Google Patents
执行射线追踪的方法和系统 Download PDFInfo
- Publication number
- CN101192310A CN101192310A CNA2007101870011A CN200710187001A CN101192310A CN 101192310 A CN101192310 A CN 101192310A CN A2007101870011 A CNA2007101870011 A CN A2007101870011A CN 200710187001 A CN200710187001 A CN 200710187001A CN 101192310 A CN101192310 A CN 101192310A
- Authority
- CN
- China
- Prior art keywords
- ray
- treatment element
- pel
- enclosure body
- color
- 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/10—Geometric effects
- G06T15/40—Hidden part removal
-
- 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
Abstract
本发明提供一种执行射线追踪的方法和系统。根据本发明的实施例,可以分割通常是递归的射线追踪算法,以形成迭代射线追踪算法。可以通过多个处理元件来执行所得的迭代射线追踪算法的各部分。此外,根据本发明的实施例,可以使用接收箱的网络在处理元件之间传送定义原始射线和次级射线的信息(不太可能被再次用于随后发出的射线以及随后渲染的帧的信息),并且共享存储器高速缓存可以存储关于三维场景的信息(比较可能被再次用于随后发出的射线和随后渲染的帧的信息)。使用多个处理元件以执行射线追踪,并且将比较可能被再次用于随后的射线和随后的帧的信息存储在共享存储器高速缓存中,射线追踪图像处理系统的性能可以得到改善。
Description
技术领域
本发明的实施例一般涉及图像处理领域。
背景技术
从三维场景渲染(render)二维图像的过程一般被称作图像处理。随着现代计算机工业的发展进步,图像处理也在发展进步。图像处理的发展进步中的一个特别的目标是使二维模拟或三维场景的渲染尽可能具有真实感。渲染具有真实感的图像的一个限制是现代监视器通过使用像素来显示图像。
像素是能够在监视器上被点亮的最小空间区域。多数现代计算机监视器将使用几十万或几百万个像素的组合来构成整个显示或渲染的场景。单个的像素被布置为栅格图案并且集合地覆盖监视器的整个观看区域。每个单个像素都可以被点亮以渲染用于观看的最终图片。
一种利用像素将真实世界三维场景渲染到二维监视器上的技术被称作光栅化。光栅化是这样一种过程,其取以向量格式(场景内的几何对象的数学表示)表示的二维图像,并且将该图像转换成用于在监视器上显示的各个像素。光栅化在快速渲染图形和使用相对低的计算能力量方面是有效的;然而,光栅化也具有一些缺点。例如,光栅化经常苦于缺少真实感,因为光栅化并不基于光的物理性质,而是基于场景中投影到二维平面上的三维几何对象的形状。此外,利用光栅化渲染场景所需的计算能力与要被渲染的场景的复杂度的增大直接成比例。随着图像处理变得更加具有真实感,所渲染的场景也变得更加复杂。因此,光栅化随着图像处理的发展进步而相形见绌,这是因为光栅化直接与复杂度成比例。
利用像素将真实世界三维场景渲染到二维监视器上的另一技术被称作射线追踪(ray tracing)。射线追踪技术追踪假想射线(与光线特性相似的射线)向要被渲染到计算机屏幕上的三维场景的传播。所述射线起源于坐在计算机屏幕后的观看者的眼睛(双眼),并且向着三维场景穿过组成计算机屏幕的像素。每条被追踪的射线前进进入该场景,并且可以与该场景内的对象相交。如果一条射线与场景内的一个对象相交,则使用该对象的特性和若干其它贡献因素来计算该射线所暴露于其中的颜色和光的量、或者颜色和光的缺少量。然后利用这些计算来确定所追踪的射线通过的像素的最终颜色。
追踪射线的处理对单个场景被执行多次。例如,可以对显示器中的每个像素追踪单条射线。一旦已经追踪了充分数量的射线以确定组成计算机屏幕的二维显示的全部像素的颜色时,可以在计算机屏幕上向观看者显示该三维场景的二维合成。
射线追踪一般地比光栅化更具真实感地渲染真实世界三维场景。这部分地由于以下事实:即射线追踪模拟了光如何在真实世界环境中传播和表现,而不是像光栅化那样简单地将三维形状投影到二维平面上。因此,使用射线追踪所渲染的图形更加准确地在监视器上描绘出我们的眼睛在真实世界中通常会看到什么。
此外,随着场景变得更加复杂,射线追踪对场景复杂度提高的处理也优于光栅化。射线追踪与场景复杂度对数地成比例。这是由于以下的事实:即相同数量的射线可以被投射到场景中,即使该场景变得更复杂。因此,射线追踪并不像光栅化那样随着场景变得更复杂而无法应对计算能力要求。
射线追踪的一个主要缺点是渲染场景需要大量计算,从而需要大的处理能力。这在需要快速渲染时导致问题,例如当图像处理系统例如在游戏机中为了动画目的而要渲染图形时。由于对射线追踪的计算要求提高,难以足够快速地渲染动画以便看上去具有真实感(具有真实感的动画大致为每秒二十到二十四帧)。
因此,需要更有效的技术和装置来执行射线追踪。
发明内容
本发明的实施例总体上提供用于执行射线追踪的方法和设备。
根据本发明的一个实施例,提供一种执行射线追踪的方法。该方法总体上包括:将射线发出到三维场景中;利用第一处理元件执行以下步骤:借助以下方式来追踪射线通过具有表示三维场景内的包围体的节点的空间索引:取分支到定义与射线相交的包围体的节点,直到到达第一叶子节点;以及将定义该射线和第一叶子节点的信息发送到第二处理元件;并且利用第二处理元件执行以下步骤:执行射线-图元相交测试以确定射线是否与所述第一叶子节点所定义的包围体内所包含的图元相交,生成至少一个次级射线;以及将所述次级射线发送到处理元件。
根据本发明另一个实施例,提供一种计算机可读介质。该计算机可读介质包括程序,所述程序在被执行时进行包括如下步骤地操作:将射线发出到三维场景中;利用第一处理元件执行以下步骤:借助以下方式来追踪射线通过具有表示三维场景内的包围体的节点的空间索引:取分支到定义与射线相交的包围体的节点,直到到达第一叶子节点;以及将定义该射线和第一叶子节点的信息发送到第二处理元件;并且利用第二处理元件执行以下步骤:执行射线-图元相交测试以确定射线是否与所述第一叶子节点所定义的包围体内所包含的图元相交,生成至少一个次级射线;以及将所述次级射线发送到处理元件。
根据本发明另一个实施例,提供一种系统。所述系统总体上包括:第一处理元件;第二处理元件;空间索引,具有定义三维场景的包围体的节点;和通信网络,耦接到所述第一处理元件和第二处理元件,其中所述第一处理元件被配置为通过取分支到定义与射线相交的包围体的节点直到到达叶子节点,使射线遍历空间索引,并且经由所述通信网络将所述射线发送到第二处理元件;以及其中,所述第二处理元件被配置为确定射线是否与所述叶子节点所定义的包围体内所包含的图元相交。
附图说明
图1是描绘了根据本发明的一个实施例的示例性计算机处理器的方框图。
图2示出了根据本发明的一个实施例的多核处理元件网络。
图3A-3C是示出了根据本发明的一个实施例的存储器接收箱的各方面的方框图。
图4是根据本发明的一个实施例的要由图像处理系统渲染的示例性三维场景。
图5A-5C示出了根据本发明的一个实施例的要由图像处理系统渲染的二维空间和由图像处理系统创建的相应空间索引(index)。
图6是示出了根据本发明的一个实施例的执行射线追踪的方法的流程图。
图7是根据本发明的一个实施例的要由图像处理系统渲染的示例性三维空间。
图8A-8D示出了根据本发明的一个实施例的执行射线追踪的方法。
具体实施方式
本发明提供了利用多个通用处理元件来执行射线追踪图像处理的方法和设备。根据本发明的一个实施例,射线追踪图像处理系统可以包括多个处理元件,它们可以执行与追踪射线通过三维场景有关的指令。第一部分处理元件可以使射线遍历表示该三维场景的空间索引。第二部分处理元件可以确定射线是否与包含在包围体(boundingvolume)内的对象相交,基于所相交的对象确定要分配给像素的颜色,并且生成次级射线。此外,根据本发明的一个实施例,为了执行射线追踪图像处理,该多个处理元件可以共享一个相干存储器高速缓存(memory cache),并且可以使用低延迟高带宽通信网络。所述共享相干存储器高速缓存可以用于存储定义了位于三维场景内的对象的几何信息,并且该低延迟高带宽通信网络可以用于在处理元件之间传递数据处理工作。
以下参照了本发明的实施例。然而应该理解,本发明不限于具体的所述实施例。相反,以下特征和要素的任何组合,不论它们是否关于不同的实施例,都被考虑用来实施和实践本发明。此外,在各种实施例中,本发明与现有技术相比提供了大量优点。然而,虽然本发明的实施例与其他可能的解决方案相比和/或与现有技术相比可以实现优点,但是特定优点是否通过给定的实施例来实现并不是对本发明的限制。因而,以下各方面、特征、实施例和优势仅是示例性的,并且不被认为是所附权利要求的要素或限制,除非在权利要求中明确记载。相似地,提到“本发明”时不应被解释为对在此公开的任何创造性主题的概括,并且不应被认为是所附权利要求的要素或限制,除非在权利要求中明确记载。
本发明的一个实施例被实施为用于计算机系统的程序产品,该计算机系统例如是以下所述的图像处理系统。该程序产品的(一个或多个)程序定义了各实施例(包括在此所描述的方法)的功能,并且可以被包含在各种计算机可读介质上。示例性计算机可读介质包括但不限于:(i)永久存储在不可写存储介质(例如计算机内的只读存储器装置,诸如CD-ROM驱动器可读的CD-ROM盘)中的信息;(ii)存储在可写存储介质(例如磁盘驱动器中的软盘或硬盘驱动器)中的可改变信息;以及(iii)诸如经由计算机或者电话网络之类通过通信介质传送到计算机的信息,其中所述通信介质包括无线通信。后者的实施例具体包括从因特网和其他网络下载的信息。这种计算机可读介质在承载有针对本发明的功能的计算机可读指令时表示本发明的实施例。
总体上,被执行以实施本发明的实施例的例程(routine)可以是操作系统或者具体应用、组件、程序、模块、对象、或者指令序列的一部分。本发明的计算机程序一般包括将由本地计算机翻译成机器可读格式从而成为可执行指令的大量指令。并且,程序包括变量和数据结构,它们或者驻留在程序本地,或者存在于存储器中或存储装置中。此外,此后描述的各种程序可以基于在本发明的具体实施例中实施它们的应用而被标识。然而,应该认可,随后的任何特定的程序命名法仅用于方便的目的,因而本发明不应被限制为仅在由这种命名法标识和/或暗示的任何具体应用中使用。
示例性多核处理元件
图1示出了根据本发明的一个实施例的多核处理元件100。该多核处理元件100包括多个基本吞吐引擎(basic throughput engine)105(BTE)。BTE 105可以包括多个处理线程和核高速缓存(例如L1高速缓存)。位于每个BTE内的处理线程可以具有对共享多核处理元件存储器高速缓存110(例如共享L2高速缓存)的访问入口。
BTE 105还可以具有对多个接收箱115的访问入口。以下关于图3进一步描述的接收箱115可以是存储器映射地址空间。接收箱115可以被映射到位于每个BTE 105内的处理线程。位于BTE内的每个线程可以具有存储器映射接收箱和对所有其他存储器映射接收箱115的访问入口。接收箱115组成BTE 105所使用的低延迟高带宽通信网络。
BTE可以使用接收箱115作为用于彼此通信的网络,并且在BTE之间重新分发数据处理工作。对于一些实施例,可以在通信网络中使用分立的发送箱,以便例如接收BTE 105进行的处理的结果。对于其他实施例,接收箱115还可以充当发送箱,例如一个BTE 105将处理功能的结果直接写入将使用该结果的另一BTE 105的接收箱中。
图像处理系统的总体性能(aggregate performance)可能依赖于BTE能多好地划分和重新分发工作。接收箱115的网络可以用于收集工作并且将工作分发给其他BTE,而不使帧之间不具相干性的BTE通信数据分组破坏共享多核处理元件高速缓存110。每帧可以渲染几百万个三角形的图像处理系统可以包括以这种方式连接的许多BTE105。
在本发明的一个实施例中,一个BTE 105的多个线程可以被分配给工作负载管理器。图像处理系统可以使用从三维场景渲染二维图像的各种软件和硬件组件。如关于图6在下文中进一步描述的,根据本发明的一个实施例,图像处理系统可以使用工作负载管理器,以利用图像处理系统所发出的射线来遍历空间索引。如关于图4在下文中进一步描述的,空间索引可以被实施为树型数据结构,用于将相对大的三维场景划分为更小的包围体。将射线追踪方法用于图像处理的图像处理系统可以使用空间索引来快速确定射线与包围体的相交。在本发明的一个实施例中,工作负载管理器可以通过使用空间索引来执行射线-包围体相交测试。
在本发明的一个实施例中,多核处理元件100上的多核处理元件BTE 105的其他线程可以是向量吞吐引擎(vector throughputengine)。在工作负载管理器确定射线与包围体的相交之后,工作负载管理器可以经由接收箱115将射线发出(发送)到多个向量吞吐引擎之一。根据本发明的一个实施例,并且如关于图6在下文中进一步描述的,向量吞吐引擎然后可以确定射线是否与包围体内所包含的图元(primitive)相交。向量吞吐引擎还可以执行与确定射线所穿过的像素的颜色相关的操作。
图2示出了根据本发明的一个实施例的多核处理元件200的网络。图2还示出本发明的一个实施例,其中多核处理元件100的BTE之一的线程是工作负载管理器205。根据本发明一个实施例,多核处理元件200的网络中的每个多核处理元件2201-N可以包含一个工作负载管理器2051-N。根据本发明的一个实施例,多核处理元件200的网络中的每个处理器220还可以包含多个向量吞吐引擎210。
根据本发明一个实施例,工作负载管理器2201-N可以使用高速总线225与其他工作负载管理器2201-N和/或其他多核处理元件220的向量吞吐引擎210进行通信。每个向量吞吐引擎210可以使用高速总线225与其他向量吞吐引擎210或工作负载管理器205进行通信。工作负载管理器处理器205可以使用高速总线225来收集图像处理相关的任务并且将图像处理相关的任务分发给其他工作负载管理器处理器205,且/或将任务分发给其他向量吞吐引擎210。使用高速总线225可以允许工作负载管理器2051-N进行通信,而不使和工作负载管理器205通信相关的数据分组影响高速缓存230。
低延迟高带宽通信网络
如上所述,图像处理系统的总体性能可能取决于BTE能多好地划分和重新分发工作。根据本发明的一个实施例,高速缓存内的被称为存储器接收箱的存储空间可以被用于将工作分发给单个处理器线程。在使用各自具有多个线程的多个处理器的图像处理系统中,接收箱的集合可以被一起称作低延迟高带宽通信网络。
在诸如BTE 105之类的多线程处理器中,存储器接收箱可以被分配给给定的线程(在此被称作所有者线程(owner thread))。在本发明的一个实施例中,用于接收箱的存储空间可以从共享存储器高速缓存110被排他地分配给所有者线程。通过将高速缓存中的存储空间排他地分配给所有者线程,所有者线程可以维持足够的存储空间,以高速缓存其自身的指令和数据,而不让具有其他竞争线程的其他线程取代(displace)所有者线程的指令和数据。因而,存储器接收箱可以通过将所有者线程的数据和指令保持在高速缓存的所分配的接收箱部分中,并且降低使所有者线程停止的可能性,同时从更高级存储器中检索用于所有者线程的数据和指令,从而改善所有者线程的执行。此外,通过将高速缓存中的存储空间分配给所有者线程,意图用于目标线程的数据或指令可以仅存储在分配给该线程的接收箱中。因而,意图用于目标线程的数据或指令并不存储在整个共享存储器高速缓存110中,而是仅存储在分配给目标线程的接收箱中。
此外,接收箱存储器可以由其他线程使用来有效地与所有者线程通信。例如,对于接收箱而言,当另一线程具有要被提供给所有者线程的数据和/或指令时,该另一线程可以将数据和/或指令发送给该接收箱,其中所有者线程能够从中检索数据和/或指令。类似地,在一些情况下,所有者线程可以使用接收箱作为与其他线程进行信息通信的发送箱。例如,为了与另一线程进行信息通信,所有者线程可以将信息置于接收箱中,并且将指示该数据和/或指令的位置的通知发送给该另一线程,从而允许该另一线程检索该信息。可选地,该所有者线程可以将该信息直接提供给该另一线程的接收箱。因而,可以使用接收箱存储器来简化发送和接收线程之间的通信,同时防止其他线程正在使用的数据和/或指令将其取代。
图3A是根据本发明一个实施例的多核处理器元件100中的存储器接收箱302...318的方框图。对存储器接收箱302...318的描绘是概念性的视图,因此不被限制于任何特定的物理配置。如所描绘的,在每个核(例如BTE 105)中执行的线程(例如线程T0-T7)可以经由共享L2高速缓存接口322而具有对共享L2高速缓存110的访问入口。此外,线程T0...T7也可以使用L2高速缓存接口322来访问相应的存储器接收箱302...318。如上所述,在一些情况下,每个接收箱302...318可以被分配给相应的线程T0...T7。因而,接收箱0 302可以被分配给线程T0,依此类推。如下所述,通过将给定的接收箱分配给给定的线程,对于所有者线程,对所分配的接收箱的访问可以是无限制的,而其他线程的访问可以被限制。在下文中更详细地描述示例性的限制。
图3B是描绘了向和从处理核(例如BTE 105)传输的、来自存储器接收箱(例如接收箱302...308)和共享L2高速缓存110的数据的路径的方框图。如上所述,存储器接收箱302...308和共享L2高速缓存110这二者都可以经由共享L2高速缓存接口322而被访问。当在BTE 105中正在被执行的线程从接收箱302...308或者从共享L2高速缓存110检索数据时,所检索的数据可以被置于BTE 105的L1高速缓存312中。用于该线程的指令可以从发布单元332被发布。在一些情况下,BTE 105可以被配置为并发地执行多个线程。因而,发布单元332可以被配置为发布用于多个线程的指令。在一些情况下,BTE 105可以提供多个执行单元334...338,它们可以被用于并发地执行BTE 105中的线程。执行单元334...338可以包括定点执行单元334、浮点执行单元336、以及分支执行单元338。
在一些情况下,线程可以更新或者产生要在之后被访问(例如由同一线程或由另一线程访问)的数据。当被更新的数据要在之后被访问时,该线程可以将被更新的数据置于L1高速缓存312中。此外,在需要的时候,被更新的数据也可以经由共享L2高速缓存接口322被置于L2高速缓存110或用于更新的线程的接收箱302...308中。在一些情况下,如上所述,经由共享L2高速缓存接口322对给定接收箱(例如接收箱0 302)的直接访问可以被限制为拥有该给定接收箱的线程(例如线程T0)。
在本发明一个实施例中,存储器接收箱内的存储空间可以被映射到全局存储器地址(例如,包括L1高速缓存312、L2高速缓存110、和主存储器的所有存储器级、以及所有线程都可以使用相同的全局存储器地址来访问给定的存储器接收箱)。因而,在本发明一个实施例中,为了访问接收箱存储空间,所有者线程可以仅在对应于该接收箱存储空间的全局存储器地址中读或写所需的信息。不具有该存储器接收箱、并且试图经由全局存储器地址直接访问该接收箱的线程对该接收箱的访问可能被拒绝。作为代替,其他形式的访问可以被提供给其他非所有者线程,例如经由发送到接收箱的分组化的消息。
并且,在本发明的一个实施例中,被存储在存储器接收箱中的信息可能是不可高速缓存的。例如,L1高速缓存312、L2高速缓存110、以及其他存储器级中的信息可以通过多核处理元件100而被自动高速缓存,使得在被访问的同时,从给定存储器地址请求的信息可以自动地从主存储器被抽取,并且保持在高速缓存级312、110之一中。相反,给定接收箱中的全局可寻址存储器可能仅位于该接收箱中,并且,在不被拷贝到接收箱之外的新地址空间的情况下,不能在不同级的存储器层级(例如主存储器、共享L2高速缓存存储器110、或L1高速缓存存储器)之间移动。因而,可以快速且直接地执行所有者线程对接收箱的访问,而不用等候信息从另一存储器层级被抽取和/或在抽取的过程中被翻译。接收箱存储器的不可高速缓存性对于下述的接收箱的分组化访问也可适用。此外,在本发明的替换实施例中,存储在接收箱中的信息可以被高速缓存在其他的存储器层级中。
存储器接收箱的分配
在本发明一个实施例中,可以从共享存储器高速缓存110提供存储器接收箱(例如可以为接收箱存储器115保留L2高速缓存110的一部分)。图3C是描绘了根据本发明的一个实施例的从共享L2高速缓存110划分的接收箱存储器115的方框图。
如所描绘的,每个接收箱302、304等的尺寸和位置等可以由接收箱控制寄存器340控制。每个接收箱302、304等的状态(例如有效或无效)可以经由接收箱状态寄存器362被指示和/或修改。在一个实施例中,对接收箱控制寄存器340的访问可以是无限制的。可选地,在一些情况下,对接收箱控制寄存器的访问例如可以被限制为例如所许可的线程的子集(例如所有者线程、所有者线程的父线程、具体指定的控制线程、和/或操作系统内核线程)。在一个实施例中,接收箱控制寄存器340可以包括开始地址寄存器342、348、...、354,尺寸寄存器344、350、...358,以及所有者线程标识寄存器346、352、...358。
在一个实施例中,开始地址寄存器342、348、...、354可以指示每个接收箱302、304等的开始地址。尺寸寄存器344、350、...356可以指示相应接收箱302、304等的尺寸。接收箱的存储空间因而可以占据从相应开始地址开始、并且贯穿所指示的接收箱尺寸的每个地址。可以按照任何方式指示尺寸,例如作为以字节表示的绝对尺寸,或者作为固定尺寸的整数倍(例如尺寸寄存器344、350、358中的尺寸可以以千字节指示尺寸)。
在一个实施例中,所有者线程标识寄存器346、352、...358可以标识哪个线程(例如线程T0、T1...TN)拥有给定的接收箱302、304等。虽然关于线程和相应的接收箱1、2...N进行了描绘,本发明的实施例可以使用任何类型的线程和/或接收箱标识符(例如号码、地址等)。在本发明的一个实施例中,接收箱标识符寄存器可以用于将对相应接收箱内的存储器地址的直接访问限制为所有者线程。在一些情况下,也可以通过其他线程的受限选择来允许直接访问,所述其他线程例如是所有者线程的父线程、指定的控制线程、和/或操作系统内核线程。在一个实施例中,访问控制电路360可以被用于提供受限的访问。
通过将共享存储器高速缓存110的各部分分配给接收箱,可以形成低延迟高带宽通信网络。共享存储器高速缓存110的剩余部分可以保持未分配,因而可用于存储与处理线程之间的通信无关的信息。共享存储高速缓存110的其余部分可以用于存储图像处理系统用来执行射线追踪(以下将参照图5进一步描述)的几何特征和数据结构。
仅使用接收箱用于处理线程之间的通信并且使用共享存储器高速缓存110的其余部分存储几何特征和数据结构的优点在于,无论多少与通信相关的信息通过接收箱,它也不会消耗整个存储器高速缓存。因而,如以下将进一步描述的,与通信相关的信息将不会取代存储在共享存储器高速缓存100的其余部分内的几何特征和数据结构。因此,在追踪后续的射线或者渲染后续的帧时可能被再使用的数据(对象几何特征和数据结构)可以保留在高速缓存中,而在追踪后续的射线或者渲染后续的帧(数据处理工作)时不太可能被再使用的数据将不保留在高速缓存中。
示例性三维场景
图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渲染成二维图片的一种方法被称作射线追踪。通过图像处理系统从观察者415的视角向三维场景420中“发出”或“射出”射线来完成射线追踪。所述射线具有与光线相似的特性和行为。
在图4中可以看到起源于观察者415的位置、并且穿过三维场景405的一条射线440。随着射线440从观察者415穿过到三维场景405,射线440通过图像处理系统将渲染出最终二维图片的平面。在图4中,此平面由监视器410表示。射线440通过该平面或监视器410的点由像素435表示。
如前文中简短讨论的,多数图像处理系统使用几千个(若非几百万个)像素的栅格430而在监视器410上渲染最终场景。每个单个像素可以显示不同颜色而在监视器410上渲染最终的合成二维图片。使用射线追踪图像处理方法从三维场景渲染二维图片的图像处理系统将计算发出的一条或多条射线在三维场景中所遇到的颜色。然后,该图像处理场景将射线遇到的颜色分配给该射线在其从观察者到三维场景的途中通过的像素。
每个像素所发出的射线的数量可以不同。一些像素可以具有对于要被渲染的特定场景而发出的许多射线。在这种情况下,该像素的最终颜色由针对该像素发出的所有射线对每个颜色的贡献来确定。其他像素可以仅具有单条射线,其被发出以便确定二维图片中的像素的所得颜色。一些像素可以不具有任何由图像处理系统发出的射线,在这种情况下,可以通过该图像处理系统内的算法来确定、近似、或分配它们的颜色。
为了确定二维图片中的像素435的最终颜色,图像处理系统必须确定射线440是否与场景内的对象相交。如果该射线没有与场景内的对象相交,则可以为它分配默认背景颜色(例如表示白天或夜晚天空的蓝色或黑色)。相反,在射线440穿过三维场景时,射线440可能会撞击到对象。当射线撞击到场景内的对象时,对象的颜色可以被分配给射线所通过的像素。然而,必须在将对象颜色分配给像素之前确定该对象的颜色。
许多因素都可以对原始射线440所撞击到的对象的颜色有所贡献。例如,三维场景内的光源可以照亮对象。此外,对象的物理特性可以对对象的颜色有所贡献。例如,如果对象是反射性的或者是透明的,则其他非光源对象可以对该对象的颜色有贡献。
为了确定来自三维场景内的其他对象的效果,可以从原始射线440与对象相交的点发出次级射线。例如,一种类型的次级射线可以是阴影射线。阴影射线可以用于确定光对原始射线440与对象相交的点的贡献。另一种类型的次级射线可以是透射射线。透射射线可以用于确定怎样的颜色或者光可能透射穿过对象的本体。此外,第三种类型的次级射线可以是反射射线。反射射线可以用于确定怎样的颜色或光被反射到对象上。
如上所述,一种类型的次级射线可以是阴影射线。可以从原始射线与对象的相交点到三维场景405内的光源来追踪每条阴影射线。如果射线到达光源而在该射线到达光源之前没有遇到另一对象,则光源将在原始射线撞击到对象的点上照亮原始射线所撞击到的对象。
例如,阴影射线441A可以从原始射线440与对象420A相交的点发出,并且可以在向着光源425A的方向上穿过。阴影射线441A到达光源425A而没有遇到场景405内的任何其他对象420。因此,光源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树
当执行射线追踪时遇到的一个问题是快速和有效地确定发出的射线是否与要被渲染的场景内的任何对象相交。本领域技术人员所公知的使射线相交的确定更有效的一种方法是使用空间索引(spatialindex)。空间索引将三维场景或世界分割为更小的体积(相对于整个三维场景更小),所述更小的体积可能包含也可能不包含图元。图像处理系统可以接着使用这些更小的体积的已知边界来确定射线是否会与包含在所述更小的体积内的图元相交。如果射线与包含图元的体积相交,则可以使用射线相对于已知位置的轨迹以及包含在该体积内的图元的尺寸来运行射线相交测试。如果射线不与特定体积相交,则没有必要对于包含在该体积内的图元运行射线-图元相交测试。此外,如果射线与不包含图元的包围体相交,则也没有必要对于该包围体运行射线-图元相交测试。因而,通过降低所必要的射线-图元相交测试的数量,使用空间索引大大地提高射线追踪图像处理系统的性能。不同空间索引加速度数据结构的一些示例包括八叉树、k维树(kd树)、以及二叉空间划分树(BSP树)。虽然存在若干不同的空间索引结构,为了易于描述本发明的实施例,在以下的示例中将使用kd树。然而,本领域中的技术人员将容易认可,本发明的实施例可以被应用于任何不同类型的空间索引。
kd树使用轴对齐包围体以将整个场景或空间分割为更小的体积。即,kd树可以通过利用与已知的轴平行的分割平面来划分场景所环绕的三维空间。分割平面将较大的空间分割成较小的包围体。较小的包围体共同组成场景中的整个空间。可以由图像处理系统通过使用kd树构造算法来确定将较大包围体分割(划分)成两个较小包围体。
用于确定何时将包围体分割成更小体积的一个准则可以是包围体内所包含的图元的数量。即,只要包围体包含的图元数量多于预定阈值,则树构造算法可以通过绘出更多的分割平面来继续划分体积。用于确定何时将包围体分割成更小体积的另一准则可以是包含在包围体内的空间的量。此外,对继续分割包围体的决定还可以基于多少图元会与产生包围体的平面相交。
对场景的分割可以利用由节点、分支、和叶子组成的二叉树结构表示。树内的每个内部节点可以表示相对大的包围体,而该节点可以包含到子节点的分支,所述子节点可以表示通过分割平面分割相对大的包围体之后得到的两个相对小的分割体积。在轴对齐kd树中,每个内部节点可以仅包含到其他节点的两个分支。内部节点可以包含到一个或两个叶子节点的分支(即指针)。叶子节点是不再被进一步次划分成更小体积、并且包含到图元的指针的节点。内部节点也可以包含到被进一步次划分的其他内部节点的分支。内部节点还可以包含确定沿着什么轴画出分割平面、以及沿着该轴在哪里画出分割平面所需的信息。
示例性包围体
图5A-5C示出了要由图像处理系统渲染的二维空间和相应的kd树。为了简单起见,使用二维场景来说明kd树的构建,然而kd树还可以用来表示三维场景。在图5A-5C的二维图示中,示出了分割线而不是分割平面,并且示出了包围区域而不是三维结构中将用到的包围体。然而,本领域技术人员会很快认可,这种概念可以容易地应用于包含对象的三维场景。
图5A示出了要在监视器510上显示的最终图片中要被渲染的、包含图元510的二维场景505。表示场景的整个体积的最大的体积被包围体1(BV1)环绕。在相应的kd树中,这可以由顶层节点550表示,这也被称为根节点或世界节点。在图像处理系统的一个实施例中,当包围体例如包含多于两个图元时,图像处理系统可以将该包围体继续分割成更小的包围体。如前文所述,对将包围体继续分割成更小的包围体的决定可以基于许多因素,然而,为了说明的简单,在此示例中,对继续分割包围体的决定仅基于图元的数量。如从图5A中可以看出的,BV1包含六个图元,因此kd树构造算法可以将BV1分割成更小的包围体。
图5B示出了与图5A中所示的相同的二维场景505。然而,在图5B中,树构造算法已经将BV1分割成两个更小的包围体BV2和BV3。通过在点x1沿着y轴画出分割平面SP1 515而完成对BV1的分割。对BV1的此分割还反映在kd树中作为内部节点或父节点BV1 550之下的分别对应于BV2和BV3的两个节点555和560。表示BV1的内部节点现在可以存储信息,所述信息诸如是但不限于对BV1之下的两个节点(例如BV2和BV3)的指针、沿着哪个轴画出了分割平面(例如y轴)、以及沿着该轴在哪里画出了分割平面(例如在点x1处)。
Kd树构造算法可以继续分割包围体BV3,因为它包含多于预定阈值数量的图元(例如多于两个图元)。然而,kd树构造算法不能继续分割包围体BV2,因为包围体BV2包含的图元数量少于或等于该图元数量(例如仅有两个图元510A)。没有被分割或进一步再次划分的节点诸如BV2被称为叶子节点。
图5C示出了与图5B示出的相同的二维场景505。然而,在图5C中,kd树构造算法已将BV3分割成了两个更小的包围体BV4和BV5。Kd构造算法已使用在点y1处沿x轴的分割平面分割了BV3。由于BV3已被分割成两个子节点,因此它现在可以被称作内部节点。对BV3的分割也被反映在kd树中,作为分别对应于BV4和BV5的两个叶子节点565和570。BV4和BV5是叶子节点,因为它们所表示的体积不被进一步划分成更小的包围体。这两个叶子节点BV4和BV5在kd树中位于表示被分割的包围体的内部节点BV3之下。
表示BV3的内部节点可以存储信息,诸如但不限于对两个叶子节点(例如BV4和BV5)的指针、沿着哪个轴画出了分割平面(即x轴)、以及沿着该轴在哪里画出了分割平面(即在点y1处)。
Kd树构造算法现在可以停止分割包围体,因为位于场景内的所有包围体包含的图元数量少于或等于可以在包围体内所包含的最大预定图元数量。叶子节点可以包含对包围体内含有的由每个叶子所表示的图元的指针。例如,叶子节点BV2可以包含对图元510A的指针,叶子节点BV4可以包含对图元510B的指针,并且叶子节点BV5可以包含对图元510C的指针。
所得到的kd树结构或者其他空间索引结构可以被存储在共享存储器高速缓存110中。kd树和包含该kd树的相应的数据的尺寸可以为了在共享存储器高速缓存110中存储而被最优化。
迭代射线追踪算法
根据本发明一个实施例,将射线追踪算法从递归算法变换成叠代算法可以使得能够在多个处理元件之间有效地分发与射线追踪有关的工作负载。叠代射线追踪算法与递归射线追踪算法相反,可以允许各个处理元件执行与确定单个像素的颜色有关的操作,并且允许有效使用处理器资源(例如存储器高速缓存)。在多个处理元件之间有效地分发工作负载可以改善射线追踪图像处理系统性能。
用于执行射线追踪的算法在以下方面的意义上可以是递归的:它将原始射线发射到三维场景中,并且在将随后的原始射线发出到该三维场景中之前完成与已发出的原始射线有关的所有射线追踪操作(例如,追踪所有次级射线,并且执行所有射线-对象相交测试)。
例如,图像处理系统可以使用递归射线追踪算法,以从三维场景渲染二维图像。使用递归射线追踪算法的图像处理系统可以使用处理元件以执行射线追踪。处理器可以被用来使射线遍历空间索引,并且确定该射线是否与空间索引的包围体内的任何对象相交。如果射线与包围体内所包含的对象相交,则图像处理系统可以使用同一处理器将次级射线发出到三维场景中以确定它们是否与任何对象相交并且因此对该原始射线所相交的对象贡献颜色。在执行与确定次级射线是否与三维场景内的对象相交有关的操作的同时,处理器可以在处理器的存储器高速缓存中存储定义该原始射线的信息。
如果处理元件确定次级射线与三维场景内的对象相交,则图像处理元件可以将更多的次级射线发出到该场景中,以确定这些次级射线是否与对象相交并且对与原始射线相交的对象贡献颜色。当执行计算以确定次级射线是否与三维场景内的对象相交时,处理器可以将先前的次级射线信息存储在存储器的存储器高速缓存中。通过向场景中发出越来越多的次级射线,图像处理系统可以最终确定次级射线对与原始射线相交的对象的总的颜色贡献。可以从与原始射线相交的对象的颜色、以及由于次级射线引起的颜色贡献最终确定原始射线所通过的像素的颜色。
虽然递归射线追踪算法确定原始射线所通过的像素的颜色,每当图像处理系统将更多的次级射线发出到三维场景中时,递归射线追踪图像处理系统将定义先前射线(例如原始射线或者先前的次级射线)的信息置于处理元件的存储器高速缓存中。图像处理系统可以将射线信息存储在高速缓存中,以便释放执行与确定随后的次级射线是否与三维场景内的对象相交有关的计算可能需要的寄存器。因此,递归射线追踪图像处理系统可能将大量(与高速缓存的大小相比)信息置于用于单个像素的处理器的存储器高速缓存中。
通过将大量射线信息存储在处理器的存储器高速缓存中,在处理器的存储器高速缓存中只有很少或没有空间用于定义三维场景内的对象的信息(即对象几何数据)。此信息可能需要频繁地从主存储器中被抽取到存储器高速缓存中,以便执行操作以确定原始或次级射线是否与三维场景内的对象相交(从而“反复使用(thrash)”高速缓存)。因此,使用递归射线追踪技术的图像处理系统的极限会被从主存储器抽取信息、并且将其置于处理器的存储器高速缓存中的访问时间所限制。
然而,根据本发明的实施例,射线追踪算法可以被分割为迭代射线追踪算法。迭代射线追踪算法可以允许各个处理元件执行射线追踪算法的各部分。通过允许各个处理元件执行射线追踪算法的各部分,需要被高速缓存的信息量(例如原始射线和次级射线)可以降低。此外,根据本发明的实施例,迭代射线追踪算法可以与低延迟高带宽通信网络和共享存储器高速缓存110结合使用,以便改善射线追踪图像处理系统的性能。
如上文参照图3A-3C所述,根据本发明的实施例,接收箱的低延迟高带宽通信网络可以被用于传递或发送在追踪随后的射线或者渲染随后的帧时几乎没用的数据处理信息(例如定义原始射线和次级射线的信息)。另外,根据本发明的实施例,射线追踪图像处理系统可以使用共享相干存储器高速缓存来存储图像处理系统在追踪随后的射线或者对随后的帧执行射线追踪时会使用到的信息。
图6是示出了根据本发明的一个实施例的、可被用于多处理器图像处理系统中的被分割因而迭代的射线追踪算法或方法600的流程图。方法600开始于步骤605,其中图像处理系统将原始射线发出到三维场景中。原始射线可以在其穿过进入三位场景中时通过像素。原始射线可以被用于确定原始射线所通过的像素的颜色。
接着,在步骤S610,图像处理系统可以使用工作负载管理器205处理元件来遍历空间索引(例如kd树)。空间索引可以被存储在图像处理系统的共享存储器高速缓存110内。遍历kd树可以包括执行用于确定原始射线是否与空间索引内的节点所定义的包围体相交的计算。此外,遍历空间索引可以包括取分支到定义了与射线相交的包围体的节点。工作负载管理器205可以使用发出的射线(例如原始射线)的坐标和轨迹来确定该射线是否与空间索引中的节点所定义的包围体相交。工作负载管理器205可以继续遍历空间索引,直到原始射线与仅包含图元的包围体(即叶子节点)相交。
在步骤S615,在工作负载管理器205将原始射线遍历到叶子节点之后,工作负载管理器205可以将原始射线和定义叶子节点的信息发送到向量吞吐引擎210。工作负载管理器205可以将定义原始射线和叶子节点的信息(例如射线的轨迹、原始射线所穿过的像素、叶子节点所定义的包围体等)发送到向量吞吐引擎210。工作负载管理器205可以通过将定义该射线和相交的叶子节点的该信息写入向量吞吐引擎210的接收箱中,而将该信息发送给向量吞吐引擎210。
通过将像素信息与定义原始射线的信息耦合在一起,如果向量吞吐引擎210确定该射线与对象相交并且因此确定像素的颜色,则不需要将原始射线发送回工作负载管理器205。根据本发明一个实施例,向量吞吐引擎210可以通过对帧缓冲器内的对应于像素的存储器位置进行写入(例如存储在共享存储器高速缓存110中)而使用像素信息来更新该像素的颜色。通过在次级射线与三维场景内的对象相交时更新像素颜色,需要被存储(例如在高速缓存存储器中)的关于同一像素的射线的数量可以减少。
在工作负载管理器205将原始射线信息发送到向量吞吐引擎210之后,图像处理系统可以将随后的原始射线发出到三维场景中。在工作负载管理器205已将原始射线发送到向量吞吐引擎210之后,工作负载管理器205可以立即开始使此随后发出的原始射线遍历空间索引。因而,工作负载管理器205可以连续地使射线遍历空间索引,而不是如递归射线追踪算法中那样等候直到完成对原始射线是否与对象相交的确定。此外,当向量吞吐引擎210正在确定先前发出的射线是否与叶子节点所定义的包围体内的对象相交时,工作负载管理器205可以使射线遍历空间索引。根据本发明一个实施例,向量吞吐引擎210可以负责执行射线-图元相交测试。即,向量吞吐引擎210可以确定射线是否与包含在叶子节点所定义的包围体内的任何图元相交。
因此,在步骤620中,在其接收箱中接收射线和叶子节点信息的向量吞吐引擎210可以执行射线-图元相交测试,以确定射线是否与叶子节点所定义的包围体内的任何图元相交。定义了图元的几何特征可以被存储在共享存储器高速缓存110内,因而不会需要从主存储器抽取出。通过将用于图元的几何特征存储在共享存储高速缓存110中,迭代射线追踪算法不会像递归射线追踪算法那样需要从主存储器抽取该几何特征。如果向量吞吐引擎210确定原始射线与包含在叶子节点所定义的包围体内的图元相交,则向量吞吐引擎210可以前进到步骤630。
在步骤630,向量吞吐引擎210可以确定在原始射线与图元相交的点处的相交的图元的颜色。例如,图元的颜色可以被存储在共享存储高速缓存110中,并且向量吞吐引擎210可以从共享存储高速缓存210中读取颜色信息。
在确定了图元在射线-图元交叉点处的颜色之后,向量吞吐引擎210可以更新射线穿过的像素的颜色。这可以通过对帧缓冲器内对应于原始射线所穿过的像素的存储器位置进行写入来完成。通过在确定了射线-图元相交时并且在对与原始射线有关的所有次级射线确定颜色贡献之前更新像素信息,可能需要被存储在存储器高速缓存中的信息的量可以减少。相反,直到已经确定了次级射线的所有颜色贡献之前,递归射线追踪算法不能将像素的颜色存储在帧缓冲器中,这增大了可能需要被存储在处理器的存储器高速缓存中的信息的量。
在更新像素颜色之后,向量吞吐引擎210可以前进到步骤635,在该步骤中,向量吞吐引擎210可以生成次级射线。如先前参照图4所述的,射线追踪图像处理系统可以使用次级射线来确定对相交的对象、因而对原始射线穿过的像素的另外的颜色贡献。次级射线例如可以是反射射线、透射(折射)射线、或者阴影射线。生成次级射线例如可以包括基于原始射线的轨迹、相交的对象的表面特性、以及原始射线与相交的对象的相交角度来确定次级射线的轨迹。
在生成次级射线之后,向量吞吐引擎210可以在步骤640中将次级射线发送到工作负载管理器205。向量吞吐引擎210可以通过将定义次级射线的信息(例如轨迹、定义原始射线穿过的像素的信息等)置于工作负载管理器205的接收箱115中,将次级射线发送到工作负载管理器205。根据本发明一个实施例,向量吞吐引擎210可以将次级射线发送到使原始射线遍历空间索引的工作负载管理器205。然而,根据本发明的另一实施例,该图像处理系统可以包含多个工作负载管理器,并且向量吞吐引擎210可以将次级射线发送到不使原始射线遍历空间索引的工作负载管理器。
在将次级射线发送到工作负载管理器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被发出到三维场景中时,原始射线会首先穿过像素栅格(帧)715中的相应像素。虽然在图7中仅示出了四个像素715和四条原始射线7101-4,然而为了从三维场景渲染出最终的二维图像,可能需要多得多的像素,并且可能会发出多得多的原始射线。
第一原始射线7101可以由图像处理系统发出,并且穿过第一像素7151。第一原始射线7101可以在相交点I1处与包围体4(BV4)相交。为了有助于理解,此示例中的图像处理系统可以遵循这样的模式:从像素栅格715的顶部开始发出射线,并且持续发出射线,每个像素一条射线,向下移动像素栅格,直到已经对于像素栅格中的每个像素发出了射线。
还可以由图像处理系统发出第二原始射线7102和第三原始射线7103,它们可以分别穿过第二像素7152和第三像素7153。第二原始射线7102和第三原始射线7103也可以分别在第二相交点I2和第三相交点I3处与BV4相交。因而,第一原始射线7101、第二原始射线7102、以及第三原始射线7103都与同一包围体相交。此外,第四原始射线7104可以由图像处理系统发出,并且可以穿过第四像素7154。第四原始射线7104与第一组的三条原始射线7101-3相反,可以在相交点I4处与包围体5(BV5)相交。
图8A示出了第一原始射线7101遍历空间索引805(例如kd树)。此外,如画阴影的方框205所指示,图8A示出了执行与第一原始射线7101遍历空间索引805有关的操作的工作负载管理器205。工作负载管理器205可以通过取分支到定义与射线相交的包围体的节点直到到达叶子节点(如图8A中由加黑的分支和节点示出的),使射线遍历空间索引805。如图7中所示,原始射线7101与BV4相交,因此,工作负载管理器205将使第一原始射线7101遍历到定义BV4的叶子节点。在使射线遍历到叶子节点之后,工作负载管理器205可以将第一原始射线7101(例如定义第一原始射线7101的信息和定义第一原始射线所穿过的像素7151的信息)和定义相交的叶子节点(即BV4)的信息发送到向量吞吐引擎210。
根据本发明的实施例,在工作负载管理器205将第一原始射线7101发送到向量吞吐引擎210之后,工作负载管理器205可以开始使第二原始射线7102遍历空间索引。因而,工作负载管理器205可以不断地使射线遍历空间索引805,同时向量吞吐引擎210确定射线是否与所遍历到的叶子节点所定义的包围体内的对象相交。
图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可以确定第一对象720在第一原始射线7101与第一对象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可以使用定义次级射线的信息(即次级射线的轨迹)以遍历空间索引805。例如,图8D中的画阴影的方框示出了可以利用向量吞吐引擎210所生成的次级射线(例如730)遍历空间索引805的工作负载管理器205。工作负载管理器205可以将该次级射线遍历到叶子节点。在次级射线已经被遍历到叶子节点之后,工作负载管理器205可以将次级射线和定义与次级射线相交的包围体的信息发送到向量吞吐引擎210,以确定次级射线是否与该次级射线所相交的包围体内的任何对象相交。
当向量吞吐引擎210确定原始射线或者次级射线撞击到三维场景内的对象时,可以在帧缓冲器内更新原始射线所穿过的像素的颜色。根据本发明的实施例,关于原始射线并且因而关于原始射线所穿过的像素的所有次级射线可以被追踪穿过该三维场景,并且其颜色贡献可以被保存在帧缓冲器中,以确定像素的最终颜色。然而,根据本发明的其他实施例,与原始射线有关的有限数量的次级射线可以被追踪穿过该三维场景,以确定像素的颜色。通过限制被追踪穿过该三维场景、因而对像素颜色有贡献的次级射线的数量,确定像素的最终颜色所必需的处理的量可以降低。
结论
通过使用上述方法分割通常是递归的射线追踪算法,可以形成迭代射线追踪算法。可以通过多个通用处理元件来执行所得的迭代射线追踪算法的各部分。此外,通过使用接收箱的网络,不太可能被再次用于随后发出的射线或者随后渲染的帧的信息(例如原始射线和次级射线)使用接收箱而不是存储器高速缓存在处理元件之间被传送。因此,存储器高速缓存可以存储比较可能被再次用于随后发出的射线和随后渲染的帧的信息(例如空间索引数据结构、对象几何信息等)。通过将比较可能被再次用于随后发出的射线的信息存储在存储器高速缓存中,射线追踪图像处理系统的性能可以得到改善。
虽然前述针对的是本发明的实施例,但是可以设计出本发明的其他以及进一步实施例,而不偏离本发明的基本范围,并且本发明的范围由以下的权利要求来确定。
Claims (16)
1.一种执行射线追踪的方法,包括:
将射线发出到三维场景中;
利用第一处理元件执行以下步骤:
借助以下方式来追踪射线通过具有表示三维场景内的包围体的节点的空间索引:取分支到定义与射线相交的包围体的节点,直到到达第一叶子节点;以及
将定义该射线和第一叶子节点的信息发送到第二处理元件;并且
利用第二处理元件执行以下步骤:
执行射线-图元相交测试以确定射线是否与所述第一叶子节点所定义的包围体内所包含的图元相交,
生成至少一个次级射线;以及
将所述次级射线发送到处理元件。
2.如权利要求1所述的方法,还包括:如果所述射线与包围体内所包含的图元相交,则利用第二处理元件,确定所述图元的颜色,并且根据所述图元的颜色更新所述射线所穿过的像素的颜色值。
3.如权利要求2所述的方法,其中将次级射线发送到处理元件的步骤包括:将所述次级射线发送到第一处理元件。
4.如权利要求3所述的方法,还包括:利用第一处理元件,借助取分支到定义与所述次级射线相交的包围体的节点直到到达第二叶子节点,来追踪次级射线通过空间索引;以及
将定义该次级射线和第二叶子节点的信息发送到第二处理元件;以及
利用第二处理元件,执行射线-图元相交测试以确定次级射线是否与所述第二叶子节点所定义的包围体内所包含的图元相交。
5.如权利要求4所述的方法,还包括:如果所述次级射线与所述第二叶子节点所定义的包围体内所包含的第二图元相交,则利用第二处理元件,确定所述第二图元的颜色,并且根据所述第二图元的颜色更新原始射线所穿过的像素的颜色值。
6.如权利要求5所述的方法,其中更新原始射线所穿过的像素的颜色的步骤包括:将颜色信息写入到对应于该像素的帧缓冲器位置。
7.如权利要求1所述的方法,其中所述空间索引被存储在第一处理元件和第二处理元件之间共享的存储器高速缓存内。
8.一种系统,包括:
第一处理元件;
第二处理元件;
空间索引,具有定义三维场景的包围体的节点;和
通信网络,耦接到所述第一处理元件和第二处理元件,
其中所述第一处理元件被配置为通过取分支到定义与射线相交的包围体的节点直到到达叶子节点,使射线遍历空间索引,并且经由所述通信网络将所述射线发送到第二处理元件;以及
其中,所述第二处理元件被配置为确定射线是否与所述叶子节点所定义的包围体内所包含的图元相交。
9.如权利要求8所述的系统,其中所述第二处理元件还被配置为:
如果射线与叶子节点所定义的包围体内所包含的图元相交,则确定图元的颜色;以及
更新射线所穿过的像素的颜色值。
10.如权利要求9所述的系统,其中所述第二处理元件还被配置为:
生成至少一条次级射线;
经由所述通信网络将所述次级射线发送到第一处理元件。
11.如权利要求10所述的系统,其中所述第一处理元件还被配置为:
通过取分支到与所述次级射线相交的节点直到到达第二叶子节点,使所述次级射线遍历空间索引;以及
经由所述通信网络将所述次级射线发送到第二处理元件。
12.如权利要求11所述的系统,其中所述第二处理元件还被配置为:
确定次级射线是否与第二叶子节点内所包含的第二图元相交;以及
如果次级射线与第二叶子节点内所包含的第二图元相交,则更新射线所穿过的像素的颜色值。
13.如权利要求8所述的系统,其中所述第一处理元件和所述第二处理元件处于同一芯片上。
14.如权利要求8所述的系统,还包括与第一处理元件和第二处理元件耦接的共享存储器高速缓存。
15.如权利要求14所述的系统,其中空间索引被存储在所述共享存储器高速缓存中。
16.一种包含程序的计算机可读介质,在执行所述程序时,进行前述方法权利要求中的任何方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/563,978 US8139060B2 (en) | 2006-11-28 | 2006-11-28 | Ray tracing image processing system |
US11/563,978 | 2006-11-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101192310A true CN101192310A (zh) | 2008-06-04 |
CN100557637C CN100557637C (zh) | 2009-11-04 |
Family
ID=39493183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101870011A Active CN100557637C (zh) | 2006-11-28 | 2007-11-14 | 执行射线追踪的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8139060B2 (zh) |
CN (1) | CN100557637C (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826215A (zh) * | 2010-04-19 | 2010-09-08 | 浙江大学 | 实时二级光线跟踪的并行渲染方法 |
CN102439632A (zh) * | 2009-05-28 | 2012-05-02 | 斯里考纳特斯公司 | 光线跟踪内核及具有该光线跟踪内核的光线跟踪芯片 |
CN102439862A (zh) * | 2009-05-29 | 2012-05-02 | 斯里考纳特斯公司 | 光线跟踪设备和方法 |
CN103578131A (zh) * | 2012-07-24 | 2014-02-12 | 辉达公司 | 用于实施光线跟踪的系统、方法和计算机程序产品 |
CN103765481A (zh) * | 2011-08-05 | 2014-04-30 | 柯斯提克绘图公司 | 用于3-d场景加速结构创建和更新的系统和方法 |
CN106529082A (zh) * | 2016-12-02 | 2017-03-22 | 上海无线电设备研究所 | 一种快速计算电大尺寸目标电磁散射特征的方法 |
CN108369747A (zh) * | 2015-12-19 | 2018-08-03 | 英特尔公司 | 用于在光线追踪架构中提取和使用路径着色一致性的方法和装置 |
CN110458934A (zh) * | 2013-03-14 | 2019-11-15 | 想象技术有限公司 | 用隐式几何体进行3d图形渲染 |
CN111899585A (zh) * | 2020-07-23 | 2020-11-06 | 国网上海市电力公司 | 一种电缆附件制作仿真培训系统及方法 |
CN111986304A (zh) * | 2019-05-23 | 2020-11-24 | 辉达公司 | 使用射线追踪和光栅化的结合来渲染场景 |
CN113628315A (zh) * | 2020-05-08 | 2021-11-09 | 辉达公司 | 射线锥追踪和纹理过滤的技术 |
CN114331800A (zh) * | 2020-09-30 | 2022-04-12 | 想象技术有限公司 | 用于光线跟踪的相交测试 |
US11734871B2 (en) | 2021-09-24 | 2023-08-22 | Apple Inc. | Ray intersection testing with quantization and interval representations |
TWI822330B (zh) * | 2021-09-24 | 2023-11-11 | 美商蘋果公司 | 用量化及區間表示之射線相交測試 |
US11830124B2 (en) | 2021-09-24 | 2023-11-28 | Apple Inc. | Quantized ray intersection testing with definitive hit detection |
US11861787B2 (en) | 2013-03-14 | 2024-01-02 | Imagination Technologies Limited | 3-D graphics rendering with implicit geometry |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7969434B2 (en) | 2006-09-19 | 2011-06-28 | Caustic Graphics, Inc. | Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering |
US8674987B2 (en) | 2006-09-19 | 2014-03-18 | Caustic Graphics, Inc. | Dynamic ray population control |
US8018457B2 (en) * | 2006-09-19 | 2011-09-13 | Caustic Graphics, Inc. | Ray tracing system architectures and methods |
US7830379B2 (en) * | 2006-09-19 | 2010-11-09 | Caustic Graphics, Inc. | Architectures for parallelized intersection testing and shading for ray-tracing rendering |
US9478062B2 (en) | 2006-09-19 | 2016-10-25 | Imagination Technologies Limited | Memory allocation in distributed memories for multiprocessing |
US9665970B2 (en) | 2006-09-19 | 2017-05-30 | Imagination Technologies Limited | Variable-sized concurrent grouping for multiprocessing |
US7932905B2 (en) * | 2007-10-15 | 2011-04-26 | Caustic Graphics, Inc. | Method, apparatus, and computer readable medium for light energy accounting in ray tracing |
US8237711B2 (en) * | 2007-11-19 | 2012-08-07 | Caustic Graphics, Inc. | Tracing of shader-generated ray groups using coupled intersection testing |
US8127235B2 (en) | 2007-11-30 | 2012-02-28 | International Business Machines Corporation | Automatic increasing of capacity of a virtual space in a virtual world |
US20090164919A1 (en) | 2007-12-24 | 2009-06-25 | Cary Lee Bates | Generating data for managing encounters in a virtual world environment |
JP5159375B2 (ja) | 2008-03-07 | 2013-03-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メタバースにおけるオブジェクトの真贋判断システム、方法及びそのコンピュータ・プログラム |
US8421801B2 (en) * | 2008-09-09 | 2013-04-16 | Caustic Graphics, Inc. | Ray tracing using ray-specific clipping |
EP3675048A1 (en) * | 2008-09-22 | 2020-07-01 | Imagination Technologies Limited | Systems and methods for a ray tracing shader api |
US9483864B2 (en) * | 2008-12-05 | 2016-11-01 | International Business Machines Corporation | System and method for photorealistic imaging using ambient occlusion |
US8248415B2 (en) * | 2009-01-28 | 2012-08-21 | International Business Machines Corporation | User-defined non-visible geometry featuring ray filtering |
US9269184B2 (en) * | 2009-05-21 | 2016-02-23 | Sony Computer Entertainment America Llc | Method and apparatus for rendering image based projected shadows with multiple depth aware blurs |
US8325186B2 (en) * | 2009-05-21 | 2012-12-04 | Sony Computer Entertainment America Llc | Method and apparatus for rendering shadows |
KR101653203B1 (ko) * | 2010-02-01 | 2016-09-02 | 삼성전자주식회사 | 영상 처리 장치 및 방법 |
US9205328B2 (en) | 2010-02-18 | 2015-12-08 | Activision Publishing, Inc. | Videogame system and method that enables characters to earn virtual fans by completing secondary objectives |
US9682324B2 (en) | 2010-05-12 | 2017-06-20 | Activision Publishing, Inc. | System and method for enabling players to participate in asynchronous, competitive challenges |
KR101697238B1 (ko) * | 2010-08-26 | 2017-01-17 | 삼성전자주식회사 | 영상 처리 장치 및 방법 |
JP2012181825A (ja) * | 2011-02-09 | 2012-09-20 | Canon Inc | 画像処理装置およびその方法 |
WO2012174334A1 (en) | 2011-06-16 | 2012-12-20 | Caustic Graphics, Inc. | Graphics processor with non-blocking concurrent architecture |
US10061618B2 (en) | 2011-06-16 | 2018-08-28 | Imagination Technologies Limited | Scheduling heterogenous computation on multithreaded processors |
US10137376B2 (en) | 2012-12-31 | 2018-11-27 | Activision Publishing, Inc. | System and method for creating and streaming augmented game sessions |
KR20150039496A (ko) * | 2013-10-02 | 2015-04-10 | 삼성전자주식회사 | 이전 렌더링의 결과를 이용하여 광선을 추적하는 방법 및 장치 |
US10376792B2 (en) | 2014-07-03 | 2019-08-13 | Activision Publishing, Inc. | Group composition matchmaking system and method for multiplayer video games |
US10242485B2 (en) * | 2014-09-04 | 2019-03-26 | Nvidia Corporation | Beam tracing |
US11351466B2 (en) | 2014-12-05 | 2022-06-07 | Activision Publishing, Ing. | System and method for customizing a replay of one or more game events in a video game |
US10118099B2 (en) | 2014-12-16 | 2018-11-06 | Activision Publishing, Inc. | System and method for transparently styling non-player characters in a multiplayer video game |
US10486068B2 (en) | 2015-05-14 | 2019-11-26 | Activision Publishing, Inc. | System and method for providing dynamically variable maps in a video game |
US10315113B2 (en) | 2015-05-14 | 2019-06-11 | Activision Publishing, Inc. | System and method for simulating gameplay of nonplayer characters distributed across networked end user devices |
US10286314B2 (en) | 2015-05-14 | 2019-05-14 | Activision Publishing, Inc. | System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session |
US10668367B2 (en) | 2015-06-15 | 2020-06-02 | Activision Publishing, Inc. | System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game |
US10471348B2 (en) | 2015-07-24 | 2019-11-12 | Activision Publishing, Inc. | System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks |
US10099140B2 (en) | 2015-10-08 | 2018-10-16 | Activision Publishing, Inc. | System and method for generating personalized messaging campaigns for video game players |
US11185784B2 (en) | 2015-10-08 | 2021-11-30 | Activision Publishing, Inc. | System and method for generating personalized messaging campaigns for video game players |
US10376781B2 (en) | 2015-10-21 | 2019-08-13 | Activision Publishing, Inc. | System and method of generating and distributing video game streams |
US10232272B2 (en) | 2015-10-21 | 2019-03-19 | Activision Publishing, Inc. | System and method for replaying video game streams |
US10245509B2 (en) | 2015-10-21 | 2019-04-02 | Activision Publishing, Inc. | System and method of inferring user interest in different aspects of video game streams |
US10694352B2 (en) | 2015-10-28 | 2020-06-23 | Activision Publishing, Inc. | System and method of using physical objects to control software access |
US10300390B2 (en) | 2016-04-01 | 2019-05-28 | Activision Publishing, Inc. | System and method of automatically annotating gameplay of a video game based on triggering events |
US10226701B2 (en) | 2016-04-29 | 2019-03-12 | Activision Publishing, Inc. | System and method for identifying spawn locations in a video game |
US10179289B2 (en) | 2016-06-21 | 2019-01-15 | Activision Publishing, Inc. | System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching |
US10573065B2 (en) | 2016-07-29 | 2020-02-25 | Activision Publishing, Inc. | Systems and methods for automating the personalization of blendshape rigs based on performance capture data |
US10463964B2 (en) | 2016-11-17 | 2019-11-05 | Activision Publishing, Inc. | Systems and methods for the real-time generation of in-game, locally accessible heatmaps |
US10709981B2 (en) | 2016-11-17 | 2020-07-14 | Activision Publishing, Inc. | Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps |
US10500498B2 (en) | 2016-11-29 | 2019-12-10 | Activision Publishing, Inc. | System and method for optimizing virtual games |
US10055880B2 (en) | 2016-12-06 | 2018-08-21 | Activision Publishing, Inc. | Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional |
US10861079B2 (en) | 2017-02-23 | 2020-12-08 | Activision Publishing, Inc. | Flexible online pre-ordering system for media |
US10818060B2 (en) | 2017-09-05 | 2020-10-27 | Activision Publishing, Inc. | Systems and methods for guiding motion capture actors using a motion reference system |
US10974150B2 (en) | 2017-09-27 | 2021-04-13 | Activision Publishing, Inc. | Methods and systems for improved content customization in multiplayer gaming environments |
US10561945B2 (en) | 2017-09-27 | 2020-02-18 | Activision Publishing, Inc. | Methods and systems for incentivizing team cooperation in multiplayer gaming environments |
US11040286B2 (en) | 2017-09-27 | 2021-06-22 | Activision Publishing, Inc. | Methods and systems for improved content generation in multiplayer gaming environments |
US10537809B2 (en) | 2017-12-06 | 2020-01-21 | Activision Publishing, Inc. | System and method for validating video gaming data |
US10463971B2 (en) | 2017-12-06 | 2019-11-05 | Activision Publishing, Inc. | System and method for validating video gaming data |
US10981051B2 (en) | 2017-12-19 | 2021-04-20 | Activision Publishing, Inc. | Synchronized, fully programmable game controllers |
US10765948B2 (en) | 2017-12-22 | 2020-09-08 | Activision Publishing, Inc. | Video game content aggregation, normalization, and publication systems and methods |
US11278813B2 (en) | 2017-12-22 | 2022-03-22 | Activision Publishing, Inc. | Systems and methods for enabling audience participation in bonus game play sessions |
US10596471B2 (en) | 2017-12-22 | 2020-03-24 | Activision Publishing, Inc. | Systems and methods for enabling audience participation in multi-player video game play sessions |
US11794038B2 (en) | 2018-02-20 | 2023-10-24 | The Trustees Of The University Of Pennsylvania | Proton beam system and methods for irradiating a target |
US11192028B2 (en) | 2018-11-19 | 2021-12-07 | Activision Publishing, Inc. | Systems and methods for the real-time customization of video game content based on player data |
US11263670B2 (en) | 2018-11-19 | 2022-03-01 | Activision Publishing, Inc. | Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user |
US20200196011A1 (en) | 2018-12-15 | 2020-06-18 | Activision Publishing, Inc. | Systems and Methods for Receiving Digital Media and Classifying, Labeling and Searching Offensive Content Within Digital Media |
US11679330B2 (en) | 2018-12-18 | 2023-06-20 | Activision Publishing, Inc. | Systems and methods for generating improved non-player characters |
US11305191B2 (en) | 2018-12-20 | 2022-04-19 | Activision Publishing, Inc. | Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay |
US11344808B2 (en) | 2019-06-28 | 2022-05-31 | Activision Publishing, Inc. | Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions |
US11097193B2 (en) | 2019-09-11 | 2021-08-24 | Activision Publishing, Inc. | Methods and systems for increasing player engagement in multiplayer gaming environments |
US11423605B2 (en) | 2019-11-01 | 2022-08-23 | Activision Publishing, Inc. | Systems and methods for remastering a game space while maintaining the underlying game simulation |
US11712627B2 (en) | 2019-11-08 | 2023-08-01 | Activision Publishing, Inc. | System and method for providing conditional access to virtual gaming items |
US11537209B2 (en) | 2019-12-17 | 2022-12-27 | Activision Publishing, Inc. | Systems and methods for guiding actors using a motion capture reference system |
US11420122B2 (en) | 2019-12-23 | 2022-08-23 | Activision Publishing, Inc. | Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay |
US11563774B2 (en) | 2019-12-27 | 2023-01-24 | Activision Publishing, Inc. | Systems and methods for tracking and identifying phishing website authors |
US20220051467A1 (en) * | 2020-08-17 | 2022-02-17 | Intel Corpoation | Apparatus and method for efficient graphics processing including ray tracing |
US11524234B2 (en) | 2020-08-18 | 2022-12-13 | Activision Publishing, Inc. | Multiplayer video games with virtual characters having dynamically modified fields of view |
US11351459B2 (en) | 2020-08-18 | 2022-06-07 | Activision Publishing, Inc. | Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values |
US11724188B2 (en) | 2020-09-29 | 2023-08-15 | Activision Publishing, Inc. | Methods and systems for selecting a level of detail visual asset during the execution of a video game |
US11717753B2 (en) | 2020-09-29 | 2023-08-08 | Activision Publishing, Inc. | Methods and systems for generating modified level of detail visual assets in a video game |
US11833423B2 (en) | 2020-09-29 | 2023-12-05 | Activision Publishing, Inc. | Methods and systems for generating level of detail visual assets in a video game |
US11439904B2 (en) | 2020-11-11 | 2022-09-13 | Activision Publishing, Inc. | Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games |
US11853439B2 (en) | 2020-12-30 | 2023-12-26 | Activision Publishing, Inc. | Distributed data storage system providing enhanced security |
US11794107B2 (en) | 2020-12-30 | 2023-10-24 | Activision Publishing, Inc. | Systems and methods for improved collision detection in video games |
CN113205580A (zh) * | 2021-05-10 | 2021-08-03 | 万翼科技有限公司 | 图元渲染方法、装置、设备及存储介质 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5305430A (en) * | 1990-12-26 | 1994-04-19 | Xerox Corporation | Object-local sampling histories for efficient path tracing |
US5579455A (en) * | 1993-07-30 | 1996-11-26 | Apple Computer, Inc. | Rendering of 3D scenes on a display using hierarchical z-buffer visibility |
US5613049A (en) * | 1994-10-26 | 1997-03-18 | The Boeing Company | Method for creating spatially balanced bounding volume hierarchies for use in a computer generated display of a complex structure |
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 |
US6373485B2 (en) * | 1998-02-17 | 2002-04-16 | Sun Microsystems, Inc. | Mitigating the effects of object approximations |
US6489955B1 (en) * | 1999-06-07 | 2002-12-03 | Intel Corporation | Ray intersection reduction using directionally classified target lists |
US6577769B1 (en) * | 1999-09-18 | 2003-06-10 | Wildtangent, Inc. | Data compression through adaptive data size reduction |
US7133041B2 (en) * | 2000-02-25 | 2006-11-07 | The Research Foundation Of State University Of New York | Apparatus and method for volume processing and rendering |
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 |
US7495664B2 (en) * | 2000-06-19 | 2009-02-24 | Mental Images Gmbh | Instant 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 |
US7348975B2 (en) * | 2004-12-28 | 2008-03-25 | Intel Corporation | Applications of interval arithmetic for reduction of number of computations in ray tracing problems |
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 |
US7782318B2 (en) * | 2006-11-22 | 2010-08-24 | International Business Machines Corporation | Method for reducing network bandwidth by delaying shadow ray generation |
-
2006
- 2006-11-28 US US11/563,978 patent/US8139060B2/en active Active
-
2007
- 2007-11-14 CN CNB2007101870011A patent/CN100557637C/zh active Active
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9311739B2 (en) | 2009-05-28 | 2016-04-12 | Siliconarts, Inc. | Ray tracing core and ray tracing chip having the same |
CN102439632A (zh) * | 2009-05-28 | 2012-05-02 | 斯里考纳特斯公司 | 光线跟踪内核及具有该光线跟踪内核的光线跟踪芯片 |
US9965889B2 (en) | 2009-05-28 | 2018-05-08 | Siliconarts, Inc. | Ray tracing core and ray tracing chip having the same |
CN102439632B (zh) * | 2009-05-28 | 2015-09-09 | 斯里考纳特斯公司 | 光线跟踪内核及具有该光线跟踪内核的光线跟踪芯片 |
CN102439862A (zh) * | 2009-05-29 | 2012-05-02 | 斯里考纳特斯公司 | 光线跟踪设备和方法 |
CN101826215A (zh) * | 2010-04-19 | 2010-09-08 | 浙江大学 | 实时二级光线跟踪的并行渲染方法 |
US9430864B2 (en) | 2011-08-05 | 2016-08-30 | Imagination Technologies Limited | Systems and methods for 3-D scene acceleration structure creation and updating |
CN103765481B (zh) * | 2011-08-05 | 2016-06-29 | 想象技术有限公司 | 用于3-d场景加速结构创建和更新的系统和方法 |
US11481954B2 (en) | 2011-08-05 | 2022-10-25 | Imagination Technologies Limited | Systems and methods for 3-D scene acceleration structure creation and updating |
CN103765481A (zh) * | 2011-08-05 | 2014-04-30 | 柯斯提克绘图公司 | 用于3-d场景加速结构创建和更新的系统和方法 |
US10217267B2 (en) | 2011-08-05 | 2019-02-26 | Imagination Technologies Limited | Systems and methods for 3-D scene acceleration structure creation and updating |
US10930052B2 (en) | 2011-08-05 | 2021-02-23 | Imagination Technologies Limited | Systems and methods for 3-D scene acceleration structure creation and updating |
CN103578131A (zh) * | 2012-07-24 | 2014-02-12 | 辉达公司 | 用于实施光线跟踪的系统、方法和计算机程序产品 |
CN110458934A (zh) * | 2013-03-14 | 2019-11-15 | 想象技术有限公司 | 用隐式几何体进行3d图形渲染 |
US11861787B2 (en) | 2013-03-14 | 2024-01-02 | Imagination Technologies Limited | 3-D graphics rendering with implicit geometry |
CN110458934B (zh) * | 2013-03-14 | 2023-12-19 | 想象技术有限公司 | 用隐式几何体进行3d图形渲染 |
CN108369747A (zh) * | 2015-12-19 | 2018-08-03 | 英特尔公司 | 用于在光线追踪架构中提取和使用路径着色一致性的方法和装置 |
CN106529082A (zh) * | 2016-12-02 | 2017-03-22 | 上海无线电设备研究所 | 一种快速计算电大尺寸目标电磁散射特征的方法 |
CN111986304B (zh) * | 2019-05-23 | 2023-07-07 | 辉达公司 | 使用射线追踪和光栅化的结合来渲染场景 |
CN111986304A (zh) * | 2019-05-23 | 2020-11-24 | 辉达公司 | 使用射线追踪和光栅化的结合来渲染场景 |
CN113628315A (zh) * | 2020-05-08 | 2021-11-09 | 辉达公司 | 射线锥追踪和纹理过滤的技术 |
CN113628315B (zh) * | 2020-05-08 | 2024-02-23 | 辉达公司 | 射线锥追踪和纹理过滤的技术 |
CN111899585B (zh) * | 2020-07-23 | 2022-04-15 | 国网上海市电力公司 | 一种电缆附件制作仿真培训系统及方法 |
CN111899585A (zh) * | 2020-07-23 | 2020-11-06 | 国网上海市电力公司 | 一种电缆附件制作仿真培训系统及方法 |
CN114331800A (zh) * | 2020-09-30 | 2022-04-12 | 想象技术有限公司 | 用于光线跟踪的相交测试 |
US11734871B2 (en) | 2021-09-24 | 2023-08-22 | Apple Inc. | Ray intersection testing with quantization and interval representations |
TWI822330B (zh) * | 2021-09-24 | 2023-11-11 | 美商蘋果公司 | 用量化及區間表示之射線相交測試 |
US11830124B2 (en) | 2021-09-24 | 2023-11-28 | Apple Inc. | Quantized ray intersection testing with definitive hit detection |
Also Published As
Publication number | Publication date |
---|---|
CN100557637C (zh) | 2009-11-04 |
US8139060B2 (en) | 2012-03-20 |
US20080122841A1 (en) | 2008-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100557637C (zh) | 执行射线追踪的方法和系统 | |
CN100557638C (zh) | 执行射线追踪的方法和系统 | |
CN100570638C (zh) | 分发工作负载的方法和图像处理系统 | |
US7782318B2 (en) | Method for reducing network bandwidth by delaying shadow ray generation | |
US7893936B2 (en) | Generating efficient spatial indexes for predictably dynamic objects | |
US7719532B2 (en) | Efficient and flexible data organization for acceleration data structure nodes | |
US7808500B2 (en) | Method for improving spatial index efficiency by jittering splitting planes | |
US8085267B2 (en) | Stochastic addition of rays in a ray tracing image processing system | |
US8022950B2 (en) | Stochastic culling of rays with increased depth of recursion | |
US9043801B2 (en) | Two-tiered dynamic load balancing using sets of distributed thread pools | |
US7940265B2 (en) | Multiple spacial indexes for dynamic scene management in graphics rendering | |
US7852336B2 (en) | Dynamic determination of optimal spatial index mapping to processor thread resources | |
CN101276479B (zh) | 图像处理方法和系统 | |
JP5043939B2 (ja) | 3次元シーンの境界ボリュームを定めるノードを有する空間インデックスを用いる光線追跡のための操作を行なうプログラムを含むコンピュータ可読媒体及びシステム | |
US8018453B2 (en) | Deferred acceleration data structure optimization for improved performance | |
US7796128B2 (en) | Dynamically load balancing game physics using real-time object scaling | |
CN101506847B (zh) | 用于划分空间索引的方法和系统 | |
US8826299B2 (en) | Spawned message state determination | |
US8339398B2 (en) | Integrated acceleration data structure for physics and ray tracing workload | |
US20080192051A1 (en) | Expanding Empty Nodes in an Acceleration Data Structure | |
US8102389B2 (en) | Box casting using an integrated acceleration data structure |
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 | ||
ASS | Succession or assignment of patent right |
Owner name: ACTIVISION PUBLISHING COMPANY Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION Effective date: 20130618 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20130618 Address after: American California Patentee after: ACTIVISION PUBLISHING, INC. Address before: American New York Patentee before: International Business Machines Corp. |