CN100557637C - 执行射线追踪的方法和系统 - Google Patents

执行射线追踪的方法和系统 Download PDF

Info

Publication number
CN100557637C
CN100557637C CNB2007101870011A CN200710187001A CN100557637C CN 100557637 C CN100557637 C CN 100557637C CN B2007101870011 A CNB2007101870011 A CN B2007101870011A CN 200710187001 A CN200710187001 A CN 200710187001A CN 100557637 C CN100557637 C CN 100557637C
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.)
Active
Application number
CNB2007101870011A
Other languages
English (en)
Other versions
CN101192310A (zh
Inventor
埃里克·O.·梅耶德里奇
杰弗里·D.·布朗
拉塞尔·D.·胡弗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Activision Publishing Inc
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101192310A publication Critical patent/CN101192310A/zh
Application granted granted Critical
Publication of CN100557637C publication Critical patent/CN100557637C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-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...18的方框图。对存储器接收箱302...318的描绘是概念性的视图,因此不被限制于任何特定的物理配置。如所描绘的,在每个核(例如BTE 105)中执行的线程(例如线程T0-T7)可以经由共享L2高速缓存接口322而具有对共享L2高速缓存110的访问入口。此外,线程T0...T7也可以使用L2高速缓存接口322来访问相应的存储器接收箱302...318。如上所述,在一些情况下,每个接收箱302...318可以被分配给相应的线程T0...T7。因而,接收箱0302可以被分配给线程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轴画出分割平面SP1515而完成对BV1的分割。对BV1的此分割还反映在kd树中作为内部节点或父节点BV1550之下的分别对应于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 (13)

1.一种执行射线追踪的方法,包括:
将射线发出到三维场景中;
利用第一处理元件执行以下步骤:
借助以下方式来追踪射线通过具有表示三维场景内的包围体的节点的空间索引:取分支到定义与射线相交的包围体的节点,直到到达第一叶子节点;以及
将定义该射线和第一叶子节点的信息发送到第二处理元件;并且
利用第二处理元件执行以下步骤:
执行射线-图元相交测试以确定射线是否与所述第一叶子节点所定义的包围体内所包含的图元相交;
响应于确定射线与所述第一叶子节点所定义的包围体内所包含的图元相交;
生成至少一个次级射线;以及
将所述次级射线发送到第一处理元件。
2.如权利要求1所述的方法,还包括:如果所述射线与包围体内所包含的图元相交,则利用第二处理元件,确定所述图元的颜色,并且根据所述图元的颜色更新所述射线所穿过的像素的颜色值。
3.如权利要求1所述的方法,还包括:利用第一处理元件,借助取分支到定义与所述次级射线相交的包围体的节点直到到达第二叶子节点,来追踪次级射线通过空间索引;以及
将定义该次级射线和第二叶子节点的信息发送到第二处理元件;以及
利用第二处理元件,执行射线-图元相交测试以确定次级射线是否与所述第二叶子节点所定义的包围体内所包含的图元相交。
4.如权利要求3所述的方法,还包括:如果所述次级射线与所述第二叶子节点所定义的包围体内所包含的第二图元相交,则利用第二处理元件,确定所述第二图元的颜色,并且根据所述第二图元的颜色更新射线所穿过的像素的颜色值。
5.如权利要求4所述的方法,其中更新射线所穿过的像素的颜色的步骤包括:将颜色信息写入到对应于该像素的帧缓冲器位置。
6.如权利要求1所述的方法,其中所述空间索引被存储在第一处理元件和第二处理元件之间共享的存储器高速缓存内。
7.一种执行射线追踪的系统,包括:
第一处理元件;
第二处理元件;
空间索引,具有定义三维场景的包围体的节点;和
通信网络,耦接到所述第一处理元件和第二处理元件,
其中所述第一处理元件被配置为通过取分支到定义与射线相交的包围体的节点直到到达叶子节点,使射线遍历空间索引,并且经由所述通信网络将所述射线发送到第二处理元件;以及
其中,所述第二处理元件被配置为确定射线是否与所述叶子节点所定义的包围体内所包含的图元相交,如果射线与所述叶子节点所定义的包围体内所包含的图元相交,则生成至少一条次级射线,并经由所述通信网络将所述次级射线发送到第一处理元件。
8.如权利要求7所述的系统,其中所述第二处理元件还被配置为:
如果射线与叶子节点所定义的包围体内所包含的图元相交,则确定图元的颜色;以及
更新射线所穿过的像素的颜色值。
9.如权利要求7所述的系统,其中所述第一处理元件还被配置为:
通过取分支到与所述次级射线相交的节点直到到达第二叶子节点,使所述次级射线遍历空间索引;以及
经由所述通信网络将所述次级射线发送到第二处理元件。
10.如权利要求9所述的系统,其中所述第二处理元件还被配置为:
确定次级射线是否与第二叶子节点内所包含的第二图元相交;以及
如果次级射线与第二叶子节点内所包含的第二图元相交,则更新射线所穿过的像素的颜色值。
11.如权利要求7所述的系统,其中所述第一处理元件和所述第二处理元件处于同一芯片上。
12.如权利要求7所述的系统,还包括与第一处理元件和第二处理元件耦接的共享存储器高速缓存。
13.如权利要求12所述的系统,其中空间索引被存储在所述共享存储器高速缓存中。
CNB2007101870011A 2006-11-28 2007-11-14 执行射线追踪的方法和系统 Active CN100557637C (zh)

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 CN101192310A (zh) 2008-06-04
CN100557637C true 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 (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10099140B2 (en) 2015-10-08 2018-10-16 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
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
US10137376B2 (en) 2012-12-31 2018-11-27 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
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
US10213682B2 (en) 2015-06-15 2019-02-26 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
US10226703B2 (en) 2016-04-01 2019-03-12 Activision Publishing, Inc. System and method of generating and providing interactive annotation items based on triggering events in a video game
US10226701B2 (en) 2016-04-29 2019-03-12 Activision Publishing, Inc. System and method for identifying spawn locations in a video game
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
US10284454B2 (en) 2007-11-30 2019-05-07 Activision Publishing, Inc. Automatic increasing of capacity of a virtual space in a virtual world
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
US10286326B2 (en) 2014-07-03 2019-05-14 Activision Publishing, Inc. Soft reservation system and method for multiplayer video games
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
US10376781B2 (en) 2015-10-21 2019-08-13 Activision Publishing, Inc. System and method of generating and distributing video game streams
US10376793B2 (en) 2010-02-18 2019-08-13 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US10421019B2 (en) 2010-05-12 2019-09-24 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
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
US10463971B2 (en) 2017-12-06 2019-11-05 Activision Publishing, Inc. System and method for validating video gaming data
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
US10486068B2 (en) 2015-05-14 2019-11-26 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10537809B2 (en) 2017-12-06 2020-01-21 Activision Publishing, Inc. System and method for validating video gaming data
US10561945B2 (en) 2017-09-27 2020-02-18 Activision Publishing, Inc. Methods and systems for incentivizing team cooperation in multiplayer gaming environments
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
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
US10627983B2 (en) 2007-12-24 2020-04-21 Activision Publishing, Inc. Generating data for managing encounters in a virtual world environment
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
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
US10765948B2 (en) 2017-12-22 2020-09-08 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US10818060B2 (en) 2017-09-05 2020-10-27 Activision Publishing, Inc. Systems and methods for guiding motion capture actors using a motion reference system
US10861079B2 (en) 2017-02-23 2020-12-08 Activision Publishing, Inc. Flexible online pre-ordering system for media
US10974150B2 (en) 2017-09-27 2021-04-13 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
US10981069B2 (en) 2008-03-07 2021-04-20 Activision Publishing, Inc. Methods and systems for determining the authenticity of copied objects in a virtual environment
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
US11097193B2 (en) 2019-09-11 2021-08-24 Activision Publishing, Inc. Methods and systems for increasing player engagement in multiplayer gaming environments
US11115712B2 (en) 2018-12-15 2021-09-07 Activision Publishing, Inc. Systems and methods for indexing, searching for, and retrieving digital media
US11185784B2 (en) 2015-10-08 2021-11-30 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
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
US11278813B2 (en) 2017-12-22 2022-03-22 Activision Publishing, Inc. Systems and methods for enabling audience participation in bonus game play sessions
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
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
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
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
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
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
US11524234B2 (en) 2020-08-18 2022-12-13 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically modified fields of view
US11537209B2 (en) 2019-12-17 2022-12-27 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11563774B2 (en) 2019-12-27 2023-01-24 Activision Publishing, Inc. Systems and methods for tracking and identifying phishing website authors
US11679330B2 (en) 2018-12-18 2023-06-20 Activision Publishing, Inc. Systems and methods for generating improved non-player characters
US11712627B2 (en) 2019-11-08 2023-08-01 Activision Publishing, Inc. System and method for providing conditional access to virtual gaming items
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
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
US11794107B2 (en) 2020-12-30 2023-10-24 Activision Publishing, Inc. Systems and methods for improved collision detection in video games
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
US11853439B2 (en) 2020-12-30 2023-12-26 Activision Publishing, Inc. Distributed data storage system providing enhanced security
US11972086B2 (en) 2019-03-18 2024-04-30 Activision Publishing, Inc. Automatic increasing of capacity of a virtual space in a virtual world

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
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
US8421801B2 (en) * 2008-09-09 2013-04-16 Caustic Graphics, Inc. Ray tracing using ray-specific clipping
EP2329457B1 (en) * 2008-09-22 2018-12-12 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
US8325186B2 (en) * 2009-05-21 2012-12-04 Sony Computer Entertainment America Llc Method and apparatus for rendering shadows
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
KR101004110B1 (ko) * 2009-05-28 2010-12-27 주식회사 실리콘아츠 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
KR101076807B1 (ko) * 2009-05-29 2011-10-25 주식회사 실리콘아츠 레이 트레이싱 장치 및 방법
KR101653203B1 (ko) * 2010-02-01 2016-09-02 삼성전자주식회사 영상 처리 장치 및 방법
CN101826215B (zh) * 2010-04-19 2012-05-09 浙江大学 实时二级光线跟踪的并行渲染方法
KR101697238B1 (ko) * 2010-08-26 2017-01-17 삼성전자주식회사 영상 처리 장치 및 방법
JP2012181825A (ja) * 2011-02-09 2012-09-20 Canon Inc 画像処理装置およびその方法
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
CN105957134B (zh) * 2011-08-05 2019-11-08 想象技术有限公司 用于3-d场景加速结构创建和更新的方法和装置
US9117254B2 (en) * 2012-07-24 2015-08-25 Nvidia Corporation System, method, and computer program product for performing ray tracing
GB2549020B (en) * 2013-03-14 2017-11-08 Imagination Tech Ltd 3-D Graphics rendering with implicit geometry
US10970912B2 (en) 2013-03-14 2021-04-06 Imagination Technologies Limited 3-D graphics rendering with implicit geometry
KR20150039496A (ko) * 2013-10-02 2015-04-10 삼성전자주식회사 이전 렌더링의 결과를 이용하여 광선을 추적하는 방법 및 장치
US10242485B2 (en) * 2014-09-04 2019-03-26 Nvidia Corporation Beam tracing
US10262456B2 (en) * 2015-12-19 2019-04-16 Intel Corporation Method and apparatus for extracting and using path shading coherence in a ray tracing architecture
CN106529082A (zh) * 2016-12-02 2017-03-22 上海无线电设备研究所 一种快速计算电大尺寸目标电磁散射特征的方法
US11794038B2 (en) 2018-02-20 2023-10-24 The Trustees Of The University Of Pennsylvania Proton beam system and methods for irradiating a target
US10853994B1 (en) * 2019-05-23 2020-12-01 Nvidia Corporation Rendering scenes using a combination of raytracing and rasterization
CN113628315B (zh) * 2020-05-08 2024-02-23 辉达公司 射线锥追踪和纹理过滤的技术
CN111899585B (zh) * 2020-07-23 2022-04-15 国网上海市电力公司 一种电缆附件制作仿真培训系统及方法
US20220051467A1 (en) * 2020-08-17 2022-02-17 Intel Corpoation Apparatus and method for efficient graphics processing including ray tracing
CN114331801B (zh) * 2020-09-30 2024-04-02 想象技术有限公司 用于光线跟踪的相交测试
CN113205580A (zh) * 2021-05-10 2021-08-03 万翼科技有限公司 图元渲染方法、装置、设备及存储介质
US11734871B2 (en) 2021-09-24 2023-08-22 Apple Inc. Ray intersection testing with quantization and interval representations
US11830124B2 (en) 2021-09-24 2023-11-28 Apple Inc. Quantized ray intersection testing with definitive hit detection
GB202318608D0 (en) * 2021-09-24 2024-01-17 Apple Inc Ray intersection testing with quantization and interval representations

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1410948A (zh) * 2002-09-23 2003-04-16 清华大学 平面和球面非线性折射和反射的实时光线跟踪方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
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
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
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
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1410948A (zh) * 2002-09-23 2003-04-16 清华大学 平面和球面非线性折射和反射的实时光线跟踪方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于体单元的光线跟踪算法. 曹莹,顾耀林,王骏.江南大学学报(自然科学版),第1卷第4期. 2002 *

Cited By (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10284454B2 (en) 2007-11-30 2019-05-07 Activision Publishing, Inc. Automatic increasing of capacity of a virtual space in a virtual world
US10627983B2 (en) 2007-12-24 2020-04-21 Activision Publishing, Inc. Generating data for managing encounters in a virtual world environment
US10981069B2 (en) 2008-03-07 2021-04-20 Activision Publishing, Inc. Methods and systems for determining the authenticity of copied objects in a virtual environment
US11957984B2 (en) 2008-03-07 2024-04-16 Activision Publishing, Inc. Methods and systems for determining the authenticity of modified objects in a virtual environment
US10376793B2 (en) 2010-02-18 2019-08-13 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US10421019B2 (en) 2010-05-12 2019-09-24 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
US10137376B2 (en) 2012-12-31 2018-11-27 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US10905963B2 (en) 2012-12-31 2021-02-02 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US11446582B2 (en) 2012-12-31 2022-09-20 Activision Publishing, Inc. System and method for streaming game sessions to third party gaming consoles
US10286326B2 (en) 2014-07-03 2019-05-14 Activision Publishing, Inc. Soft reservation system and method for multiplayer video games
US10857468B2 (en) 2014-07-03 2020-12-08 Activision Publishing, Inc. Systems and methods for dynamically weighing match variables to better tune player matches
US10376792B2 (en) 2014-07-03 2019-08-13 Activision Publishing, Inc. Group composition matchmaking system and method for multiplayer video games
US10322351B2 (en) 2014-07-03 2019-06-18 Activision Publishing, Inc. Matchmaking system and method for multiplayer video games
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
US10668381B2 (en) 2014-12-16 2020-06-02 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer 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
US11857876B2 (en) 2015-05-14 2024-01-02 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US11524237B2 (en) 2015-05-14 2022-12-13 Activision Publishing, Inc. Systems and methods for distributing the generation of nonplayer characters across networked end user devices for use in simulated NPC gameplay sessions
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
US11420119B2 (en) 2015-05-14 2022-08-23 Activision Publishing, Inc. Systems and methods for initiating conversion between bounded gameplay sessions and unbounded gameplay sessions
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
US10486068B2 (en) 2015-05-14 2019-11-26 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US11224807B2 (en) 2015-05-14 2022-01-18 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US11896905B2 (en) 2015-05-14 2024-02-13 Activision Publishing, Inc. Methods and systems for continuing to execute a simulation after processing resources go offline
US10213682B2 (en) 2015-06-15 2019-02-26 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
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
US10835818B2 (en) 2015-07-24 2020-11-17 Activision Publishing, Inc. Systems and methods for customizing weapons and sharing customized weapons via social networks
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
US11679333B2 (en) 2015-10-21 2023-06-20 Activision Publishing, Inc. Methods and systems for generating a video game stream based on an obtained game log
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
US10232272B2 (en) 2015-10-21 2019-03-19 Activision Publishing, Inc. System and method for replaying video game streams
US11310346B2 (en) 2015-10-21 2022-04-19 Activision Publishing, Inc. System and method of generating and distributing video game streams
US10898813B2 (en) 2015-10-21 2021-01-26 Activision Publishing, Inc. Methods and systems for generating and providing virtual objects and/or playable recreations of gameplay
US10376781B2 (en) 2015-10-21 2019-08-13 Activision Publishing, Inc. System and method of generating and distributing 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
US11439909B2 (en) 2016-04-01 2022-09-13 Activision Publishing, Inc. Systems and methods of generating and sharing social messages based on triggering events in a video game
US10226703B2 (en) 2016-04-01 2019-03-12 Activision Publishing, Inc. System and method of generating and providing interactive annotation items based on triggering events in a video game
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
US10807003B2 (en) 2016-04-29 2020-10-20 Activision Publishing, Inc. Systems and methods for determining distances required to achieve a line of site between nodes
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
US11189084B2 (en) 2016-07-29 2021-11-30 Activision Publishing, Inc. Systems and methods for executing improved iterative optimization processes to personify blendshape rigs
US10586380B2 (en) 2016-07-29 2020-03-10 Activision Publishing, Inc. Systems and methods for automating the animation of blendshape rigs
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
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
US10702779B2 (en) 2016-11-17 2020-07-07 Activision Publishing, Inc. Bandwidth and processing efficient heatmaps
US11213753B2 (en) 2016-11-17 2022-01-04 Activision Publishing, Inc. Systems and methods for the generation of heatmaps
US11207596B2 (en) 2016-11-17 2021-12-28 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
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
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10987588B2 (en) 2016-11-29 2021-04-27 Activision Publishing, Inc. System and method for optimizing virtual games
US10991110B2 (en) 2016-12-06 2021-04-27 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
US10650539B2 (en) 2016-12-06 2020-05-12 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
US11423556B2 (en) 2016-12-06 2022-08-23 Activision Publishing, Inc. Methods and systems to modify two dimensional facial images in a video to generate, in real-time, facial images that appear three dimensional
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
US11741530B2 (en) 2017-02-23 2023-08-29 Activision Publishing, Inc. Flexible online pre-ordering system for media
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
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation 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
US10974150B2 (en) 2017-09-27 2021-04-13 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
US10537809B2 (en) 2017-12-06 2020-01-21 Activision Publishing, Inc. System and method for validating video gaming data
US11117055B2 (en) 2017-12-06 2021-09-14 Activision Publishing, Inc. Systems and methods for validating leaderboard gaming data
US10463971B2 (en) 2017-12-06 2019-11-05 Activision Publishing, Inc. System and method for validating video gaming data
US11911689B2 (en) 2017-12-19 2024-02-27 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US11666831B2 (en) 2017-12-22 2023-06-06 Activision Publishing, Inc. Systems and methods for determining game events based on a crowd advantage of one or more players in the course of a multi-player video game play session
US10765948B2 (en) 2017-12-22 2020-09-08 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US11806626B2 (en) 2017-12-22 2023-11-07 Activision Publishing, Inc. Systems and methods for incentivizing player participation in bonus game play sessions
US11148063B2 (en) 2017-12-22 2021-10-19 Activision Publishing, Inc. Systems and methods for providing a crowd advantage to one or more players in the course of a multi-player video game play session
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
US10864443B2 (en) 2017-12-22 2020-12-15 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
US11413536B2 (en) 2017-12-22 2022-08-16 Activision Publishing, Inc. Systems and methods for managing virtual items across multiple video game environments
US11883745B2 (en) 2018-11-19 2024-01-30 Activision Publishing, Inc. Systems and methods for providing a tailored video game based on a player defined time period
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
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
US11704703B2 (en) 2018-11-19 2023-07-18 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
US11115712B2 (en) 2018-12-15 2021-09-07 Activision Publishing, Inc. Systems and methods for indexing, searching for, and retrieving 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
US11972086B2 (en) 2019-03-18 2024-04-30 Activision Publishing, Inc. Automatic increasing of capacity of a virtual space in a virtual world
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
US11709551B2 (en) 2019-12-17 2023-07-25 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11537209B2 (en) 2019-12-17 2022-12-27 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11839814B2 (en) 2019-12-23 2023-12-12 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
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
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
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
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
US11794104B2 (en) 2020-11-11 2023-10-24 Activision Publishing, Inc. Systems and methods for pivoting player-controlled avatars in video games
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

Also Published As

Publication number Publication date
CN101192310A (zh) 2008-06-04
US8139060B2 (en) 2012-03-20
US20080122841A1 (en) 2008-05-29

Similar Documents

Publication Publication Date Title
CN100557637C (zh) 执行射线追踪的方法和系统
CN100557638C (zh) 执行射线追踪的方法和系统
CN100570638C (zh) 分发工作负载的方法和图像处理系统
US7893936B2 (en) Generating efficient spatial indexes for predictably dynamic objects
US7782318B2 (en) Method for reducing network bandwidth by delaying shadow ray generation
US7719532B2 (en) Efficient and flexible data organization for acceleration data structure nodes
US9043801B2 (en) Two-tiered dynamic load balancing using sets of distributed thread pools
US8085267B2 (en) Stochastic addition of rays in a ray tracing image processing system
US8022950B2 (en) Stochastic culling of rays with increased depth of recursion
US7808500B2 (en) Method for improving spatial index efficiency by jittering splitting planes
US7852336B2 (en) Dynamic determination of optimal spatial index mapping to processor thread resources
US7940265B2 (en) Multiple spacial indexes for dynamic scene management in graphics rendering
JP5043939B2 (ja) 3次元シーンの境界ボリュームを定めるノードを有する空間インデックスを用いる光線追跡のための操作を行なうプログラムを含むコンピュータ可読媒体及びシステム
CN101276479B (zh) 图像处理方法和系统
US7796128B2 (en) Dynamically load balancing game physics using real-time object scaling
US8018453B2 (en) Deferred acceleration data structure optimization for improved performance
CN101506847B (zh) 用于划分空间索引的方法和系统
US8826299B2 (en) Spawned message state determination
US8339398B2 (en) Integrated acceleration data structure for physics and ray tracing workload
US20120236001A1 (en) Tree Insertion Depth Adjustment Based on View Frustrum and Distance Culling
US20080192051A1 (en) Expanding Empty Nodes in an Acceleration Data Structure
US8102389B2 (en) Box casting using an integrated acceleration data structure
US20080079715A1 (en) Updating Spatial Index Partitions Based on Ray Tracing Image Processing System Performance

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.