專利名稱:執行射線追蹤的方法和系統的制作方法
執行射線追蹤的方法和系統
沖支術領域
本發明的實施例一般涉及圖像處理領域。
背景技術:
從三維場景渲染(render )二維圖像的過程一般被稱作圖像處理。 隨著現代計算機工業的發展進步,圖像處理也在發展進步。圖像處理 的發展進步中的一個特別的目標是使二維模擬或三維場景的渲染盡 可能具有真實感。渲染具有真實感的圖像的一個限制是現代監視器通 過使用像素來顯示圖像。
像素是能夠在監視器上被點亮的最小空間區域。多數現代計算機 監視器將使用幾十萬或幾百萬個像素的組合來構成整個顯示或渲染 的場景。單個的像素被布置為柵格圖案并且集合地覆蓋監視器的整個 觀看區域。每個單個像素都可以被點亮以渲染用于觀看的最終圖片。
一種利用像素將真實世界三維場景渲染到二維監視器上的技術 被稱作光柵化。光柵化是這樣一種過程,其取以向量格式(場景內的 幾何對象的數學表示)表示的二維圖像,并且將該圖像轉換成用于在 監視器上顯示的各個像素。光柵化在快速渲染圖形和使用相對低的計 算能力量方面是有效的;然而,光柵化也具有一些缺點。例如,光柵 化經常苦于缺少真實感,因為光柵化并不基于光的物理性質,而是基 于場景中投影到二維平面上的三維幾何對象的形狀。此外,利用光柵 化渲染場景所需的計算能力與要被渲染的場景的復雜度的增大直接 成比例。隨著圖像處理變得更加具有真實感,所渲染的場景也變得更 加復雜。因此,光柵化隨著圖像處理的發展進步而相形見絀,這是因 為光柵化直接與復雜度成比例。
利用像素將真實世界三維場景渲染到二維監視器上的另一技術
被稱作射線追蹤(ray tracing)。射線追蹤技術追蹤假想射線(與光 線特性相似的射線)向要被渲染到計算機屏幕上的三維場景的傳播。 所述射線起源于坐在計算機屏幕后的觀看者的眼睛(雙眼),并且向 著三維場景穿過組成計算機屏幕的像素。每條被追蹤的射線前進進入
該場景,并且可以與該場景內的對象相交。如果一條射線與場景內的 一個對象相交,則使用該對象的特性和若干其它貢獻因素來計算該射
線所暴露于其中的顏色和光的量、或者顏色和光的缺少量。然后利用 這些計算來確定所追蹤的射線通過的像素的最終顏色。
追蹤射線的處理對單個場景被執行多次。例如,可以對顯示器中 的每個像素追蹤單條射線。 一旦已經追蹤了充分數量的射線以確定組 成計算機屏幕的二維顯示的全部像素的顏色時,可以在計算機屏幕上 向觀看者顯示該三維場景的二維合成。
射線追蹤一般地比光柵化更具真實感地渲染真實世界三維場景。 這部分地由于以下事實即射線追蹤模擬了光如何在真實世界環境中 傳播和表現,而不是像光柵化那樣筒單地將三維形狀投影到二維平面 上。因此,使用射線追蹤所渲染的圖形更加準確地在監視器上描繪出 我們的眼睛在真實世界中通常會看到什么。
此外,隨著場景變得更加復雜,射線追蹤對場景復雜度提高的處 理也優于光柵化。射線追蹤與場景復雜度對數地成比例。這是由于以 下的事實即相同數量的射線可以被投射到場景中,即使該場景變得 更復雜。因此,射線追蹤并不像光柵化那樣隨著場景變得更復雜而無 法應對計算能力要求。
射線追蹤的一個主要缺點是渲染場景需要大量計算,從而需要大
的處理能力。這在需要快速渲染時導致問題,例如當圖像處理系統例 如在游戲機中為了動畫目的而要渲染圖形時。由于對射線追蹤的計算 要求提高,難以足夠快速地渲染動畫以便看上去具有真實感(具有真 實感的動畫大致為每秒二十到二十四幀)。
因此,需要更有效的技術和裝置來執行射線追蹤。
發明內容
本發明的實施例 一般提供了用于執行射線追蹤的方法和設備。 根據本發明的一個實施例,提供一種執行射線追蹤的方法,所述
方法一般包括生成一組進入三維場景的初級射線;以第一次序聚集 次級射線,其中所述次級射線是當初級射線與場景內的對象相交時生 成的;將所述次級射線重新排序為新的次序;以及按照新的次序使次 級射線遍歷通過空間索引,其中空間索引具有節點,所述節點表示場 景內的包圍體。
根據本發明的另一個實施例,提供一種計算機可讀介質。所述計 算機可讀介質包含在被執行時進行一般包括以下步驟的操作生成一 組進入三維場景的初級射線;以第一次序聚集次級射線,其中所述次 級射線是當初級射線與場景內的對象相交時生成的;將所述次級射線 重新排序為至少第一組和第二組,其中第一組內的次級射線共享相似 的特性;以及將第一組中的次級射線一起發送到處理元件用于空間索 引遍歷,其中空間索引包含節點,所述節點表示三維場景內的包圍體。
根據本發明的另 一個實施例,提供一種系統。所述系統一般包括 第一處理元件,其被配置為生成進入三維場景的初級射線;第二處理 元件,其被配置為以第一次序聚集次級射線,其中所述次級射線是 當初級射線與三維場景內的對象相交時生成的;將被聚集的次級射線 重新排序為新的次序;并且以新的次序將次級射線發送到第一處理元 件;并且其中,第一處理元件還被配置為按照所述新的次序^f吏次級射 線遍歷通過空間索引,所述空間索引具有節點,所述節點表示三維場 景中的包圍體。
圖1是描繪了根據本發明的一個實施例的示例性計算機處理器 的方框圖。
圖2示出了根據本發明的一個實施例的多核處理元件網絡。
圖3A-3C是示出了根據本發明的一個實施例的存儲器接收箱的
各方面的方框圖。
圖4是根據本發明的一個實施例的要由圖像處理系統渲染的示 例性三維場景。
圖5A-5C示出了根據本發明的一個實施例的要由圖像處理系統 渲染的二維空間和由圖像處理系統創建的相應空間索引(index)。
圖6是示出了根據本發明的一個實施例的執行射線追蹤的方法 的流程圖。
圖7是根據本發明的一個實施例的要由圖像處理系統渲染的示 例性三維空間。
圖8A-8D示出了根據本發明的一個實施例的執行射線追蹤的方法。
圖9是示出根據本發明的一個實施例的對射線進行重新排序的 示例性方法的流程圖。
圖IO是示出根據本發明的一個實施例的包含三維場景內的對象 的示例性包圍體。
圖11示出根據本發明的一個實施例的射線追蹤圖像處理系統中 的示例性發送箱。
具體實施例方式
根據本發明的實施例,可以在由向量吞吐引擎生成次級射線之后 對這些次級射線進行聚集(pool)。在聚集次級射線之后,可以根據 軌跡和起源位置的相似度而對它們進行重新排序。可以按照新的次序 將次級射線發送到工作負載管理器用于空間索引遍歷。次級射線的重 新排序可以使遍歷空間索引的相似部分的射線彼此緊接地(或者只隔 很短的時間)被遍歷。因此,空間索引的必要部分可以保持在工作負 載管理器的存儲器高速緩存之內,從而降低高速緩存不命中(cache miss)的數量以及使次級射線遍歷空間索引所需的時間量。使次級射 線遍歷空間索引所需的時間的減少可以改善圖像處理系統的總體性 能。
以下參照了本發明的實施例。然而應該理解,本發明不限于具體 的所述實施例。相反,以下特征和要素的任何組合,不論它們是否關 于不同的實施例,都被考慮用來實施和實踐本發明。此外,在各種實 施例中,本發明與現有技術相比提供了大量優點。然而,雖然本發明 的實施例與其他可能的解決方案相比和/或與現有技術相比可以實現 優點,但是特定優點是否通過給定的實施例來實現并不是對本發明的 限制。因而,以下各方面、特征、實施例和優勢僅是示例性的,并且 不被認為是所附權利要求的要素或限制,除非在權利要求中明確記 栽。相似地,提到"本發明"時不應被解釋為對在此公開的任何創造性 主題的概括,并且不應被認為是所附權利要求的要素或限制,除非在 權利要求中明確記栽。
本發明的一個實施例被實施為用于計算機系統的程序產品,該計 算機系統例如是以下所述的圖像處理系統。該程序產品的(一個或多 個)程序定義了各實施例(包括在此所描述的方法)的功能,并且可 以被包含在各種計算機可讀介質上。示例性計算機可讀介質包括但不
限于(i)永久存儲在不可寫存儲介質(例如計算機內的只讀存儲器 裝置,諸如CD-ROM驅動器可讀的CD-ROM盤)中的信息;(ii) 存儲在可寫存儲介質(例如磁盤驅動器中的軟盤或硬盤驅動器)中的 可改變信息;以及(iii)諸如經由計算機或者電話網絡之類通過通信 介質傳送到計算機的信息,其中所述通信介質包括無線通信。后者的 實施例具體包括從因特網和其他網絡下載的信息。這種計算機可讀介 質在承載有針對本發明的功能的計算機可讀指令時表示本發明的實 施例。
總體上,被執行以實施本發明的實施例的例程(routine)可以 是操作系統或者具體應用、組件、程序、模塊、對象、或者指令序列 的 一部分。本發明的計算機程序 一般包括將由本地計算機翻譯成機器 可讀格式從而成為可執行指令的大量指令。并且,程序包括變量和數 據結構,它們或者駐留在程序本地,或者存在于存儲器中或存儲裝置 中。此外,此后描述的各種程序可以基于在本發明的具體實施例中實
施它們的應用而被標識。然而,應該認可,隨后的任何特定的程序命 名法僅用于方便的目的,因而本發明不應被限制為僅在由這種命名法 標識和/或暗示的任何具體應用中使用。
示例性多核處理元件
圖1示出了根據本發明的一個實施例的多核處理元件100。該多 核處理元件100包括多個基本吞吐引擎(basic throughput engine )105 (BTE) 。 BTE 105可以包括多個處理線程和核高速緩存(例如LI 高速緩存)。位于每個BTE內的處理線程可以具有對共享多核處理 元件存儲器高速緩存110 (例如共享L2高速緩存)的訪問入口 。
BTE 105還可以具有對多個接收箱115的訪問入口。以下關于圖 3進一步描述的接收箱115可以是存儲器映射地址空間。接收箱115 可以被映射到位于每個BTE 105內的處理線程。位于BTE內的每個 線程可以具有存儲器映射接收箱和對所有其他存儲器映射接收箱115 的訪問入口 。接收箱115組成BTE 105所使用的低延遲高帶寬通信網 絡。
BTE可以使用接收箱115作為用于彼此通信的網絡,并且在BTE 之間重新分發數據處理工作。對于一些實施例,可以在通信網絡中使 用分立的發送箱,以便例如接收BTE105進行的處理的結果。對于其 他實施例,接收箱115還可以充當發送箱,例如一個BTE105將處理 功能的結果直接寫入將使用該結果的另一 BTE 105的接收箱中。
圖像處理系統的總體性能(aggregate performance )可能依賴于 BTE能多好地劃分和重新分發工作。接收箱115的網絡可以用于收集 工作并且將工作分發給其他BTE,而不使幀之間不具相千性的BTE 通信數據分組破壞共享多核處理元件高速緩存110。每幀可以浚染幾 百萬個三角形的圖像處理系統可以包括以這種方式連接的許多BTE 105。
在本發明的一個實施例中, 一個BTE 105的多個線程可以被分 配給工作負載管理器。圖像處理系統可以使用從三維場景渲染二維圖
像的各種軟件和硬件組件。如關于圖6在下文中進一步描述的,根據 本發明的一個實施例,圖像處理系統可以使用工作負栽管理器,以利 用圖像處理系統所發出的射線來遍歷空間索引。如關于圖4在下文中 進一步描述的,空間索引可以被實施為樹型數據結構,用于將相對大 的三維場景劃分為更小的包圍體。將射線追蹤方法用于圖像處理的圖 像處理系統可以使用空間索引來快速確定射線與包圍體的相交。在本 發明的一個實施例中,工作負栽管理器可以通過使用空間索引來執行 射線-包圍體相交測試。
在本發明的一個實施例中,多核處理元件100上的多核處理元件 BTE 105的其他線程可以是向量吞吐引擎(vector throughput engine)。在工作負栽管理器確定射線與包圍體的相交之后,工作負 載管理器可以經由接收箱115將射線發出(發送)到多個向量吞吐引 擎之一。根據本發明的一個實施例,并且如關于圖6在下文中進一步 描述的,向量吞吐引擎然后可以確定射線是否與包圍體內所包含的圖 元(primitive)相交。向量吞吐引擎還可以執行與確定射線所穿過的 像素的顏色相關的操作。
圖2示出了根據本發明的一個實施例的多核處理元件200的網 絡。圖2還示出本發明的一個實施例,其中多核處理元件100的BTE 之一的線程是工作負載管理器205。根據本發明一個實施例,多核處 理元件200的網絡中的每個多核處理元件22(h-n可以包含一個工作負 載管理器205n。根據本發明的一個實施例,多核處理元件200的網 絡中的每個處理器220還可以包含多個向量吞吐引擎210。
根據本發明一個實施例,工作負栽管理器220"n可以使用高速 總線225與其他工作負載管理器220^和/或其他多核處理元件220 的向量吞吐引擎210進行通信。每個向量吞吐引擎210可以使用高速 總線225與其他向量吞吐引擎210或工作負栽管理器205進行通信, 工作負載管理器處理器205可以使用高速總線225來收集圖像處理相 關的任務并且將圖像處理相關的任務分發給其他工作負載管理器處 理器205,且/或將任務分發給其他向量吞吐引擎210。使用高速總線225可以允許工作負載管理器205^進行通信,而不使和工作負栽管 理器205通信相關的數據分組影響高速緩存230。
低延遲高帶寬通信網絡
如上所述,圖像處理系統的總體性能可能取決于BTE能多好地 劃分和重新分發工作。根據本發明的一個實施例,高速緩存內的被稱 為存儲器接收箱的存儲空間可以被用于將工作分發給單個處理器線 程。在使用各自具有多個線程的多個處理器的圖像處理系統中,接收 箱的集合可以被一起稱作低延遲高帶寬通信網絡。
在諸如BTE 105之類的多線程處理器中,存儲器接收箱可以被 分配給給定的線程(在此被稱作所有者線程(owner thread))。在 本發明的一個實施例中,用于接收箱的存儲空間可以從共享存儲器高 速緩存IIO被排他地分配給所有者線程。通過將高速緩存中的存儲空 間排他地分配給所有者線程,所有者線程可以維持足夠的存儲空間, 以高速緩存其自身的指令和數據,而不讓具有其他竟爭線程的其他線 程取代(displace)所有者線程的指令和數據。因而,存儲器接收箱 可以通過將所有者線程的數據和指令保持在高速緩存的所分配的接 收箱部分中,并且降低使所有者線程停止的可能性,同時從更高級存 儲器中檢索用于所有者線程的數據和指令,從而改善所有者線程的執 行。此外,通過將高速緩存中的存儲空間分配給所有者線程,意圖用 于目標線程的數據或指令可以僅存儲在分配給該線程的接收箱中。因 而,意圖用于目標線程的數據或指令并不存儲在整個共享存儲器高速 緩存110中,而是僅存儲在分配給目標線程的接收箱中。
此外,接收箱存儲器可以由其他線程使用來有效地與所有者線程 通信。例如,對于接收箱而言,當另一線程具有要被提供給所有者線 程的數據和/或指令時,該另一線程可以將數據和/或指令發送給該接 收箱,其中所有者線程能夠從中檢索數據和/或指令。類似地,在一些 情況下,所有者線程可以使用接收箱作為與其他線程進行信息通信的 發送箱。例如,為了與另一線程進行信息通信,所有者線程可以將信息置于接收箱中,并且將指示該數據和/或指令的位置的通知發送給該 另一線程,從而允許該另一線程檢索該信息。可選地,該所有者線程 可以將該信息直接提供給該另一線程的接收箱。因而,可以使用接收 箱存儲器來簡化發送和接收線程之間的通信,同時防止其他線程正在 使用的數據和/或指令將其取代。
圖3A是根據本發明一個實施例的多核處理器元件100中的存儲 器接收箱302...318的方框圖。對存儲器接收箱302...318的描繪是概 念性的視圖,因此不被限制于任何特定的物理配置。如所描繪的,在 每個核(例如BTE105)中執行的線程(例如線程T0-T7)可以經由 共享L2高速緩存接口 322而具有對共享L2高速緩存110的訪問入口 。 此外,線程T0...T7也可以4吏用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的Ll 高速緩存312中。用于該線程的指令可以從發布單元332被發布。在 一些情況下,BTE 105可以被配置為并發地執行多個線程。因而,發 布單元332可以被配置為發布用于多個線程的指令。在一些情況下, BTE 105可以提供多個執行單元334...338,它們可以-汰用于并發地執 行BTE 105中的線程。執行單元334...338可以包括定點執行單元334、 浮點執行單元336、以及分支執行單元338。在一些情況下,線程可以更新或者產生要在之后被訪問(例如由 同一線程或由另一線程訪問)的數據。當被更新的數據要在之后被訪
問時,該線程可以將被更新的數據置于Ll高速緩存312中。此外, 在需要的時候,被更新的數據也可以經由共享L2高速緩存接口 322 被置于L2高速緩存110或用于更新的線程的接收箱302...308中。在 一些情況下,如上所述,經由共享L2高速緩存接口 322對給定接收 箱(例如接收箱0 302)的直接訪問可以被限制為擁有該給定接收箱 的線程(例如線程TO)
在本發明一個實施例中,存儲器接收箱內的存儲空間可以被映射 到全局存儲器地址(例如,包括L1高速緩存312、 L2高速緩存110、 和主存儲器的所有存儲器級、以及所有線程都可以使用相同的全局存 儲器地址來訪問給定的存儲器接收箱)。因而,在本發明一個實施例 中,為了訪問接收箱存儲空間,所有者線程可以僅在對應于該接收箱 存儲空間的全局存儲器地址中讀或寫所需的信息。不具有該存儲器接 收箱、并且試圖經由全局存儲器地址直接訪問該接收箱的線程對該接 收箱的訪問可能被拒絕。作為代替,其他形式的訪問可以被提供給其 他非所有者線程,例如經由發送到接收箱的分組化的消息。
并且,在本發明的一個實施例中,被存儲在存儲器接收箱中的信 息可能是不可高速緩存的。例如,Ll高速緩存312、 L2高速緩存110、 以及其他存儲器級中的信息可以通過多核處理元件IOO而被自動高速 緩存,使得在被訪問的同時,從給定存儲器地址請求的信息可以自動 地從主存儲器被抽取,并且保持在高速緩存級312、 110之一中。相 反,給定接收箱中的全局可尋址存儲器可能僅位于該接收箱中,并且, 在不被拷貝到接收箱之外的新地址空間的情況下,不能在不同級的存 儲器層級(例如主存儲器、共享L2高速緩存存儲器110、或Ll高速 緩存存儲器)之間移動。因而,可以快速且直接地執行所有者線程對 接收箱的訪問,而不用等候信息從另一存儲器層級被抽取和/或在抽取 的過程中被翻譯。接收箱存儲器的不可高速緩存性對于下述的接收箱 的分組化訪問也可適用。此外,在本發明的替換實施例中,存儲在接
收箱中的信息可以被高速緩存在其他的存儲器層級中。 存儲器接收箱的分配
在本發明一個實施例中,可以從共享存儲器高速緩存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可以 標識哪個線程(例如線程TO、 Tl...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中的其他對象是盒子420^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的點由 l象素435表示。
如前文中簡短討論的,多數圖像處理系統使用幾千個(若非幾百 萬個)像素的柵格430而在監視器410上渲染最終場景。每個單個像 素可以顯示不同顏色而在監視器410上渲染最終的合成二維圖片。使 用射線追蹤圖像處理方法從三維場景渲染二維圖片的圖像處理系統 將計算發出的一條或多條射線在三維場景中所遇到的顏色。然后,該 圖像處理場景將射線遇到的顏色分配給該射線在其從觀察者到三維 場景的途中通過的像素。
每個像素所發出的射線的數量可以不同。一些像素可以具有對于 要被瑄染的特定場景而發出的許多射線。在這種情況下,該像素的最 終顏色由針對該像素發出的所有射線對每個顏色的貢獻來確定。其他 像素可以僅具有單條射線,其被發出以便確定二維圖片中的像素的所 得顏色。 一些像素可以不具有任何由圖像處理系統發出的射線,在這 種情況下,可以通過該圖像處理系統內的算法來確定、近似、或分配
它們的顏色。
為了確定二維圖片中的像素435的最終顏色,圖像處理系統必須 確定射線440是否與場景內的對象相交。如果該射線沒有與場景內的 對象相交,則可以為它分配默認背景顏色(例如表示白天或夜晚天空 的藍色或黑色)。相反,在射線440穿過三維場景時,射線440可能 會撞擊到對象。當射線撞擊到場景內的對象時,對象的顏色可以被分 配給射線所通過的像素。然而,必須在將對象顏色分配給像素之前確 定該對象的顏色。
許多因素都可以對原始射線440所撞擊到的對象的顏色有所貢 獻。例如,三維場景內的光源可以照亮對象。此外,對象的物理特性 可以對對象的顏色有所貢獻。例如,如果對象是反射性的或者是透明 的,則其他非光源對象可以對該對象的顏色有貢獻。
為了確定來自三維場景內的其他對象的效果,可以從原始射線 440與對象相交的點發出次級射線。例如, 一種類型的次級射線可以 是陰影射線。陰影射線可以用于確定光對原始射線440與對象相交的 點的貢獻。另一種類型的次級射線可以是透射射線。透射射線可以用 于確定怎樣的顏色或者光可能透射穿過對象的本體。此外,第三種類 型的次級射線可以是反射射線。反射射線可以用于確定怎樣的顏色或 光被反射到對象上。
如上所述, 一種類型的次級射線可以是陰影射線。可以從原始射 線與對象的相交點到三維場景405內的光源來追蹤每條陰影射線。如 果射線到達光源而在該射線到達光源之前沒有遇到另一對象,則光源 將在原始射線撞擊到對象的點上照亮原始射線所撞擊到的對象。
例如,陰影射線44U可以從原始射線440與對象420a相交的點 發出,并且可以在向著光源425a的方向上穿逸。陰影射線44lA到達 光源425A而沒有遇到場景405內的任何其他對象420。因此,光源425A 將在原始射線440與對象42(U相交的點處照亮對象420A。
其他陰影射線的路徑可以在原始射線撞擊到對象的點和被三維 場景內的另一對象阻擋的光源之間。如果阻擋對象上原始射線所撞擊
的點和光源之間的路徑的對象是不透明的,則光源將不在原始射線撞 擊該對象的點處照亮該對象。因而,光源可能對原始射線的顏色沒有 貢獻,并且因此也對要在二維圖片中被渲染的像素的顏色沒有貢獻。 然而,如果該對象是半透明或透明的,則光源可以在原始射線撞擊該 對象的點處照亮該對象。
例如,陰影射線441b可以從原始射幾440與對象420a相交的點 處發出,并且可以在向著光源425b的方向上穿近。在此示例中,陰影 射線44lB的路徑被對象420D阻擋。如果對象420D是不透明的,則光 源425b將不在原始射殘440與對象420A相交的點處照亮對象42(U。 然而,如果對象420D對陰影射線是半透明或透明的,則光源425b可 以在原始射線440與對象420A相交的點處照亮對象420A。
另一類型的次級射線是透射射線。如果原始射線相交的對象具有 透明或者半透明特性(例如玻璃),則圖像處理系統可以發出透射射 線。透射射線以與原始射線撞擊對象的角度有關的角度穿過該對象。 例如,可以看到透射射線444穿過原始射線440所相交的對象420A。
另一類型的次級射線是反射射線。如果與原始射線相交的對象具 有反射特性(例如金屬拋光面),則圖像處理系統將發出反射射線, 以確定對象可能反射怎樣的顏色或光。反射射線以與原始射線和對象 相交的角度有關的角度遠離對象而穿過。例如,圖像處理系統可以發 出反射射線443,以確定原始射線440所相交的對象420a會反射怎祥 的顏色或光。
所有次級射線(例如陰影射線、透射射線、反射射線等)對顏色 和光的總貢獻將得出原始射線所通過的像素的最終顏色。
示例性KD樹
當執行射線追蹤時遇到的一個問題是快速和有效地確定發出的 射線是否與要被渲染的場景內的任何對象相交。本領域技術人員所公 知的使射線相交的確定更有效的一種方法是使用空間索引(spatial index)。空間索引將三維場景或世界分割為更小的體積(相對于整個
三維場景更小),所述更小的體積可能包含也可能不包含圖元。圖像 處理系統可以接著使用這些更小的體積的已知邊界來確定射線是否 會與包含在所述更小的體積內的圖元相交。如果射線與包含圖元的體 積相交,則可以使用射線相對于已知位置的軌跡以及包含在該體積內 的圖元的尺寸來運行射線相交測試。如果射線不與特定體積相交,則 沒有必要對于包含在該體積內的圖元運行射線-圖元相交測試。此外, 如果射線與不包含圖元的包圍體相交,則也沒有必要對于該包圍體運 行射線-圖元相交測試。因而,通過降低所必要的射線-圖元相交測試 的數量,使用空間索引大大地提高射線追蹤圖像處理系統的性能。不 同空間索引加速度數據結構的一些示例包括八叉樹、k維樹(kd樹)、
以及二叉空間劃分樹(BSP樹)。雖然存在若干不同的空間索引結構, 為了易于描述本發明的實施例,在以下的示例中將使用kd樹。然而, 本領域中的技術人員將容易認可,本發明的實施例可以被應用于任何 不同類型的空間索引。
kd樹使用軸對齊包圍體以將整個場景或空間分割為更小的體 積。即,kd樹可以通過利用與已知的軸平行的分割平面來劃分場景所 環繞的三維空間。分割平面將較大的空間分割成較小的包圍體。較小 的包圍體共同組成場景中的整個空間。可以由圖像處理系統通過使用 kd樹構造算法來確定將較大包圍體分割(劃分)成兩個較小包圍體。
用于確定何時將包圍體分割成更小體積的一個準則可以是包圍 體內所包含的圖元的數量。即,只要包圍體包含的圖元數量多于預定 閾值,則樹構造算法可以通過繪出更多的分割平面來繼續劃分體積。 用于確定何時將包圍體分割成更小體積的另一準則可以是包含在包 圍體內的空間的量。此外,對繼續分割包圍體的決定還可以基于多少 圖元會與產生包圍體的平面相交。
對場景的分割可以利用由節點、分支、和葉子組成的二叉樹結構 表示。樹內的每個內部節點可以表示相對大的包圍體,而該節點可以 包含到子節點的分支,所述子節點可以表示通過分割平面分割相對大 的包圍體之后得到的兩個相對小的分割體積。在軸對齊kd樹中,每
個內部節點可以僅包含到其他節點的兩個分支。內部節點可以包含到 一個或兩個葉子節點的分支(即指針)。葉子節點是不再被進一步次 劃分成更小體積、并且包含到圖元的指針的節點。內部節點也可以包 含到被進一步次劃分的其他內部節點的分支。內部節點還可以包含確 定沿著什么軸畫出分割平面、以及沿著該軸在哪里畫出分割平面所需 的信息。
示例性包圍體
圖5A-5C示出了要由圖像處理系統渲染的二維空間和相應的kd 樹。為了簡單起見,使用二維場景來說明kd樹的構建,然而kd樹還 可以用來表示三維場景。在圖5A-5C的二維圖示中,示出了分割線而 不是分割平面,并且示出了包圍區域而不是三維結構中將用到的包圍 體。然而,本領域技術人員會很快認可,這種概念可以容易地應用于 包含對象的三維場景。
圖5A示出了要在監視器510上顯示的最終圖片中要被渲染的、 包含圖元510的二維場景505。表示場景的整個體積的最大的體積被 包圍體1(BVJ環繞。在相應的kd樹中,這可以由頂層節點550表 示,這也被稱為根節點或世界節點。在圖像處理系統的一個實施例中, 當包圍體例如包含多于兩個圖元時,圖像處理系統可以將該包圍體繼 續分割成更小的包圍體。如前文所述,對將包圍體繼續分割成更小的 包圍體的決定可以基于許多因素,然而,為了說明的簡單,在此示例 中,對繼續分割包圍體的決定僅基于圖元的數量。如從圖5A中可以 看出的,BVi包含六個圖元,因此kd樹構造算法可以將BVt分割成 更小的包圍體。
圖5B示出了與圖5A中所示的相同的二維場景505。然而,在 圖5B中,樹構造算法已經將BV!分割成兩個更小的包圍體BV2和 BV3。通過在點xr沿著y軸畫出分割平面SPi 515而完成對BVi的分 割。對BVi的此分割還反映在kd樹中作為內部節點或父節點BVi 550 之下的分別對應于BV2和BV3的兩個節點555和560。表示BVi的內
部節點現在可以存儲信息,所述信息諸如是但不限于對BVi之下的兩 個節點(例如BV2和BV3)的指針、沿著哪個軸畫出了分割平面(例 如y軸)、以及沿著該軸在哪里畫出了分割平面(例如在點&處)。
Kd樹構造算法可以繼續分割包圍體BV3,因為它包含多于預定 閾值數量的圖元(例如多于兩個圖元)。然而,kd樹構造算法不能繼 續分割包圍體BV2,因為包圍體BV2包含的圖元數量少于或等于該圖 元數量(例如僅有兩個圖元510A)。沒有被分割或進一步再次劃分的 節點諸如BV2被稱為葉子節點。
圖5C示出了與圖5B示出的相同的二維場景505。然而,在圖 5C中,kd樹構造算法已將BV3分割成了兩個更小的包圍體BV4和 BV5。 Kd構造算法已使用在點^處沿x軸的分割平面分割了 BV3。 由于BV3已被分割成兩個子節點,因此它現在可以被稱作內部節點。 對BV3的分割也被反映在kd樹中,作為分別對應于BV4和BV5的兩 個葉子節點565和570。 BV4和BVs是葉子節點,因為它們所表示的 體積不被進一步劃分成更小的包圍體。這兩個葉子節點BV4和BV5 在kd樹中位于表示被分割的包圍體的內部節點BV3之下。
表示BV3的內部節點可以存儲信息,諸如但不限于對兩個葉子 節點(例如BV4和BVs)的指針、沿著哪個軸畫出了分割平面(即x 軸)、以及沿著該軸在哪里畫出了分割平面(即在點y,處)。
Kd樹構造算法現在可以停止分割包圍體,因為位于場景內的所 有包圍體包含的圖元數量少于或等于可以在包圍體內所包含的最大 預定圖元數量。葉子節點可以包含對包圍體內含有的由每個葉子所表 示的圖元的指針。例如,葉子節點BV2可以包含對圖元510A的指針, 葉子節點BV4可以包含對圖元510b的指針,并且葉子節點BVs可以 包含對圖元510c的指針。
所得到的kd樹結構或者其他空間索引結構可以被存儲在共享存 儲器高速緩存IIO中。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中的多個原 始射線71(h.4的原點。當每條原始射線710w被發出到三維場景中時, 原始射線會首先穿過像素柵格(幀)715中的相應像素。雖然在圖7 中僅示出了四個像素715和四條原始射線71(h-4,然而為了從三維場 景渲染出最終的二維圖像,可能需要多得多的像素,并且可能會發出 多得多的原始射線。
第一原始射線71(h可以由圖像處理系統發出,并且穿過第一像 素715^第一原始射線71(h可以在相交點^處與包圍體4 (BV4)相 交。為了有助于理解,此示例中的圖像處理系統可以遵循這樣的模式 從像素柵格715的頂部開始發出射線,并且持續發出射線,每個像素 一條射線,向下移動像素柵格,直到已經對于像素柵格中的每個像素 發出了射線。
還可以由圖像處理系統發出第二原始射線7102和第三原始射線 7103,它們可以分別穿過第二像素7152和第三像素7153。第二原始射 線7102和第三原始射線7103也可以分別在笫二相交點12和第三相交 點I3處與BV4相交。因而,第一原始射線71(h、第二原始射線7102、 以及第三原始射線7103都與同一包圍體相交。此外,第四原始射線 7104可以由圖像處理系統發出,并且可以穿過第四像素7154。第四原 始射線7104與第一組的三條原始射線71(h.3相反,可以在相交點14處 與包圍體5 (BV5)相交。
圖8A示出了第一原始射線710,遍歷空間索引805(例如kd樹)。 此外,如畫陰影的方框205所指示,圖8A示出了執行與第一原始射 線71(h遍歷空間索引805有關的操作的工作負載管理器205。工作負 載管理器205可以通過取分支到定義與射線相交的包圍體的節點直到 到達葉子節點(如圖8A中由加黑的分支和節點示出的),使射線遍 歷空間索引805。如圖7中所示,原始射線71(h與BV4相交,因此, 工作負栽管理器205將使第一原始射線71(h遍歷到定義BV4的葉子節 點。在使射線遍歷到葉子節點之后,工作負栽管理器205可以將第一 原始射線71(h(例如定義第一原始射線71(h的信息和定義第一原始射 線所穿過的像素715i的信息)和定義相交的葉子節點(即BV4)的信 息發送到向量呑吐引擎210。
根據本發明的實施例,在工作負載管理器205將第一原始射線 71(h發送到向量吞吐引擎210之后,工作負載管理器205可以開始使 第二原始射線7102遍歷空間索引。因而,工作負載管理器205可以不 斷地使射線遍歷空間索引805,同時向量吞吐引擎210確定射線是否 與所遍歷到的葉子節點所定義的包圍體內的對象相交。
圖8B示出了穿過包圍體4 (BV4)的第一原始射線71(h。此外, 如畫陰影的方框所指示,圖8B示出了在已經接收到定義第一原始射 線71(h的信息和定義包圍體BV4的信息之后,執行射線-圖元相交測 試的向量吞吐引擎210。如參照圖6所描述的,向量吞吐引擎210可 以執行射線-圖元相交測試,以確定原始射線71(h是否與包圍體BV4 之內所包含的圖元相交。
向量吞吐引擎210可以對包圍體BV4內的第一對象720、以及對
包圍體BV4內的第二對象725執行與第 一原始射線71(h之間的相交測 試。如圖8B中所示,向量吞吐引擎210可以確定第一原始射線71(h 與第一對象720相交。
如之前對于方法600所描述的,在確定第一原始射線71(h與對 象相交之后,向量吞吐引擎210可以確定第一對象720在第一原始射 線71(h與第一對象720相交的點處的顏色。在確定對象720在相交點 處的顏色之后,向量吞吐引擎210可以更新第一原始射線71(h所穿過 的像素715i的顏色(例如通過向對應于像素715!的幀緩沖存儲器位 置進行寫入)。
在確定對象720在該相交點處的顏色之后,向量吞吐引擎210 可以生成次級射線。例如,如圖8C中所示,向量吞吐引擎210可以 生成反射射線730和透射(折射)射線735。這兩條次級射線(730 和735 )均開始于第一原始射線71(h與對象720相交的點。如上所述, 次級射線可以用于確定對該對象在第一原始射線71(h與對象720相交 的點處的附加顏色貢獻。生成次級射線的步驟包括確定每條次級射線 的軌跡,并且跟隨次級射線,使得來自次級射線的額外顏色貢獻可以 用于更新第一原始射線71(h所穿過的像素715i的顏色。
在生成次級射線(730和735)之后,向量吞吐引擎210可以將 所述次級射線(730和735)經由接收箱發送到工作負栽管理器205。 接收次級射線(730和735)的工作負載管理器205可以使用定義次 級射線的信息(即次級射線的軌跡)以遍歷空間索引805。例如,圖 8D中的畫陰影的方框示出了可以利用向量吞吐引擎210所生成的次 級射線(例如730)遍歷空間索引805的工作負載管理器205。工作 負載管理器205可以將該次級射線遍歷到葉子節點。在次級射線已經 被遍歷到葉子節點之后,工作負載管理器205可以將次級射線和定義 與次級射線相交的包圍體的信息發送到向量吞吐引擎210,以確定次 級射線是否與該次級射線所相交的包圍體內的任何對象相交。
當向量吞吐引擎210確定原始射線或者次級射線撞擊到三維場 景內的對象時,可以在幀緩沖器內更新原始射線所穿過的像素的顏色。根據本發明的實施例,關于原始射線并且因而關于原始射線所穿 過的像素的所有次級射線可以被追蹤穿過該三維場景,并且其顏色貢 獻可以被保存在幀緩沖器中,以確定像素的最終顏色。然而,根據本 發明的其他實施例,與原始射線有關的有限數量的次級射線可以被追 蹤穿過該三維場景,以確定像素的顏色。通過限制被追蹤穿過該三維 場景、因而對像素顏色有貢獻的次級射線的數量,確定像素的最終顏
色所必需的處理的量可以降低。
用于優化的空間索引遍歷的自適應射線數據重新排序
如上所述,向量吞吐引擎(VTE) 210可以在射線與三維場景內 的對象(圖元)相交之后生成次級射線。由VTE 210生成的次級射線 在三維場景內可以具有各種軌跡或起源位置。所述軌跡和起源位置例
如可以取決于所相交的對象的位置、與對象相交的射線的軌跡、所相 交的對象的表面特性、和/或三維場景內的光源的位置。在生成次級射 線之后,如上所述,VTE210可以將次級射線發送到工作負載管理器 205,其中工作負載管理器205可以使次級射線遍歷空間索引,以確 定次級射線是否與三維場景內的對象相交。
工作負載管理器205可以通過取分支到表示三維場景內的包圍 體的節點而使次級射線遍歷空間索引。整個空間索引可以被存儲在系 統存儲器中,同時空間索引的各部分可以被存儲在可由工作負載管理 器205訪問的高速緩存存儲器(例如共享L2高速緩存110)內。由 于高速緩存的大小限制,工作負載管理器205僅能夠在給定時間在其 高速緩存中存儲空間索引信息的一部分。例如,當工作負載管理器205 開始使后續的射線遍歷通過空間索引時,只有空間索引的最近使用的 部分可以存在于工作負栽管理器205的高速緩存中。如果VTE 210 在生成次級射線時將其發送到工作負載管理器,則它們可能在三維場 景內具有各種(不同的)軌跡和/或位置。由于軌跡和/或位置不同, 次級射線可能被遍歷到空間索引的與先前射線不同的部分。因此,次 級射線會造成大量高速緩存不命中,這是因為用于次級射線的空間索
引信息可能不存在于工作負載管理器的高速緩存中。響應于高速緩存 不命中,可能每當后續的次級射線被遍歷通過空間索引時,都需要從 存儲器中取出正確的空間索引信息。總是發生高速緩存不命中或者總
是從存儲器取出數據并將其置于高速緩存中(即"反復使用(thrash)" 高速緩存)會通過增大使次級射線遍歷通過空間索引所必需的時間而 降低圖像處理系統的性能。
為了降低次級射線所造成的高速緩存不命中,根據本發明的一個 實施例,可以在次級射線被遍歷通過空間索引之前,基于次級射線之 間的相似度而對次級射線進行重新排序。工作負載管理器205然后可 以根據新的次序而使次級射線遍歷通過空間索引。次級射線之間的相 似度可以基于任何數量的因素,這些因素可以使相似的次級射線遍歷 通過空間索引的相同或相似的部分。例如,三維場景內的次級射線的 相似軌跡和次級射線的相似起源位置可能使次級射線遍歷通過空間 索引的相同或相似的部分。
因此,使次級射線根據新的次序遍歷通過空間索引的工作負載管 理器205可以不遭受如同^(吏次級射線以VTE 210生成這些次級射線的 次序遍歷通過空間索引的情況下那么多的高速緩存不命中。高速緩存 不命中的減少可以減少使次級射線遍歷通過空間索引所必要的時間, 因而改善圖像處理系統的性能。
圖9示出了根據本發明的一個實施例的基于次級射線的相似度 來對次級射線進行重新排序的方法900。方法900開始于步驟905, 在該步驟905處,VTE210生成次級射線。如前文所述,當VTE210 確定射線(例如原始射線或先前生成的次級射線)與三維場景內的對 象相交時,VTE210可以生成次級射線。次級射線的生成可以包括計 算三維場景內的次級射線的軌跡和起源位置。
在VTE生成了次級射線之后,在步驟910, VTE可以將次級射 線(例如定義次級射線的軌跡和起源位置信息)置于發送箱中。如上 關于圖3A-3C所述,線程(例如VTE210)可以使用接收箱(例如接 收箱302 )作為發送箱,以便將信息傳送到其它線程。在將次級射線
發送到工作負栽管理器之前,可以將所述射線置于發送箱中,使得在
根據相似度對次級射線進行重新排序之前,VTE 210可以聚集一定數 量的次級射線。
在將次級射線放置到發送箱中之后,VTE 210可以前進到步驟 915,在步驟915處,VTE 210可以檢查發送箱,以確定發送箱中的 次級射線的數量是否等于閾值。該閾值可以用于確定是否到了應該對 次級射線進行重新排序并且將次級射線發送到工作負栽管理器的時 間,或者是否需要生成更多的次級射線。可能期望大的閾值,以便增 大在VTE 210對射線進行重新排序時在發送箱中存在相似的次級射 線的可能性。然而,可以存儲在發送箱中的次級射線的數量例如可以 由分配給發送箱的存儲器空間的量來限制。
如果發送箱中的次級射線的數量沒有達到閾值,則VTE 210可 以返回到步驟905,以生成更多次級射線。然而,如果發送箱中的次 級射線的數量達到了閾值,則VTE 210可以前進到步驟920。
在步驟920, VTE 210可以分析發送箱中的次級射線的相似度。 相似的次級射線可以共享射線屬性,所述射線屬性可能使次級射線遍 歷空間索引的相同或相似的部分。例如,兩條次級射線之間的相似度 可以包括但不限于在三維場景內具有相似軌跡、并且從相似位置起源 的兩條次級射線。
在分析發送箱中的射線之后,VTE210可以前進到步驟925,在 步驟925, VTE可以確定是否在發送箱找到了相似的射線。如果沒有 找到,則VTE 210可以前進到步驟930,在步驟930, VTE可以將發 送箱中的射線發送到工作負載管理器。如果在步驟930, VTE210確 定在發送箱中沒有相似的射線,則通過重新排序當前在發送箱中的射 線將不能得到任何益處。因此,在步驟930, VTE210可以按照射線 被生成并且被置入發送箱中的次序來將射線發送到工作負載管理器 205。
然而,如果在步驟925, VTE210 (基于步驟930中執行的分析) 確定在發送箱中存在相似的射線,則VTE210可以前進到步驟935。在步驟935, VTE 210可以確定射線的次序是否依據其相似度。如果 射線的次序依據其相似度,則通過重新排序當前在發送箱中的射線將 不能得到任何益處。因此,VTE 210可以前進到步驟930,以按照射 線被生成以及被置入發送箱的次序來將射線發送到工作負載管理器 205。
然而,如果在步驟935中,VTE210確定這些射線的次序沒有依 據其相似度,則VTE 210可以前進到步驟940。在步驟940, VTE 210 可以重新排序存在于發送箱中的次級射線。VTE 210可以重新排序次 級射線,使得接收到次級射線的工作負載管理器205將按照VTE 210 所確定的次序來遍歷次級射線。在重新排序發送箱中的射線之后, VTE 210可以前進到步驟930,在步驟930, VTE 210可以將射線發 送到工作負載管理器205,用于空間索引遍歷。
工作負栽管理器205可以按照VTE 210所確定的次序(即根據 發送箱的次序)來遍歷相似的次級射線。該次序可以確保,當遍歷相 似的次級射線時所使用的空間索引數據將仍存在于工作負栽管理器 205的高速緩存之內。因而,與VTE210按照VTE210生成次級射線 的次序將次級射線發送到工作負載管理器205相比,重新排序將帶來 更少的高速緩存不命中。
用于優化的空間索引遍歷的示例性自適應射線數據重新排序 圖10示出了根據本發明的一個實施例的示例性包圍體1000, VTE 210可以對于該包圍體1000負責執行與確定射線是否與圖元相 交有關的操作。如圖IO所示,三條射線進入包圍體1000。第一射線 1002在點L與包圍體1000相交,第二射線1004在點12與包圍體1000 相交,并且第三射線1006在點13與包圍體1000相交。
隨著從工作負載管理器205發送射線,VTE 210可以對所述射線 執行操作。例如,工作負載管理器205可能在先前已經使第一射線1002 遍歷通過空間索引到達包圍體IOOO。然后,工作負栽管理器205可能 已經將第一射線1002發送到VTE 210,用于射線-圖元相交測試。如
圖IO所示,VTE210可以從射線-圖元相交測試確定出第一射線1002 與第一對象1012相交。響應于該相交,VTE210可以生成次級射線。
VTE 210起初可以生成第一反射射線1022 (基于第一對象1012 的反射特性生成的次級射線),并且將第一反射射線1022置于發送 箱中,如上文中關于方法卯0所述。圖ll示出了發送箱1100,VTE210 可以在生成次級射線時將次級射線置入所述發送箱1100。如圖11所 示,VTE 210可以將第一反射射線1022置于發送箱1100的第一位置 (即最左邊的位置)中。
由于第一射線1002和第一對象1012相交,因此在將第一反射射 線1022置于發送箱1100中之后,VTE210可以生成更多的次級射線。 例如,第一射線1002與第一對象1012的相交還可以使VTE 210生成 第一折射射線1032 (基于第一對象1012的折射特性而生成的次級射 線)。然后,VTE 210可以將第一折射射線1032置于發送箱1100中 的第一可用位置中。例如,如圖ll所示,VTE 210可以將第一折射 射線1032置于發送箱110內與第一反射射線1022緊鄰的位置中。
VTE 210還可以確定第二射線1004與第二對象1014相交。因此, VTE 210可以生成第二反射射線1024和第二折射射線1034,并且 VTE 210可以將這些射線置于發送箱1100中。此外,VTE 210還可 以確定出第三射線1006與第三對象1016相交。因此,VTE210可以 生成第三反射射線1026和第三折射射線1036,并且VTE210也可以 將這些射線置于發送箱1100中。
由VTE210生成、并且被置于發送箱1100中的次級射線的示例 性次序示于圖11中。如圖10所示,第一反射次級射線1022和第一 折射次級射線1032具有不同的軌跡,并且因此,工作負載管理器205 會使這些射線遍歷到空間索引的不同部分。如果工作負載管理器205 要以VTE 210生成這些射線的次序(即發送箱1100中所示出的次序 一反射射線然后折射射線)來遍歷這些射線,則不同的空間索引遍歷 會造成高速緩存不命中,并且需要工作負載管理器205從存儲器中取 出不同的空間索引數據。新的空間索引的取出會增大使次級射線遍歷
通過空間索引所需的時間。然而,如關于方法900所述,VTE210可 以重新排序位于發送箱1100中的射線,以便降低高速緩存不命中的 數量,并且降低使次級射線遍歷通過空間索引所需的時間。
圖11示出示例性的重新排序的發送箱IIOOB。可以已經基于發 送箱中的射線之間的相似度而確定了出現在重新排序的發送箱1100B 中的射線的次序。例如,反射射線(即1022、 1024、和1026)全都 在三維場景內具有相似的軌跡,并且起源于相對類似的位置。因此, VTE 210重新排序了反射次級射線(即1022、 1024、和1026 ),使 得它們在重新排序的發送箱1100B中的位置彼此相對接近。因此,在 本示例中,使次級射線以發送箱1100B中所描繪的次序進行遍歷的工 作負載管理器205可以使反射次級射線一個接一個地、并且在使任何
歷之前進行遍歷,從而增大必要的空間索引信息存在于工作負載管理 器205的高速緩存存儲器中的可能性。
此外,折射射線(即1032、 1034、和1036)在三維場景內都具 有相似的軌跡,并且起源于相對類似的位置。因此,VTE210重新排 序了折射次級射線(即1032、 1034、和1036),使得它們在重新排 序的發送箱1100B中的位置彼此相對接近。因此,在本示例中,使次 級射線以發送箱1100B中所描繪的次序進行遍歷的工作負載管理器 205可以使折射次級射線一個接一個地進行遍歷,而不使任何介入的 次級射線(例如具有不同軌跡和/或起源位置的反射次級射線)進行遍 歷。雖然第一折射次級射線1032 (其在發送箱1100B中緊隨著第三 條(最后一條)反射次級射線)的遍歷可能造成高速緩存不命中,但 是隨后的折射次級射線(即1034和1036)的遍歷不會造成那么多高 速緩存不命中。隨后的折射次級射線的遍歷不會遭受那么多的高速緩 存不命中,這是因為它們具有相似的軌跡和位置,并且因而可以被遍 歷通過空間索引的相同部分。因而,發送箱1100B的新次序可以降低 工作負載管理器205所遭受的高速緩存不命中的數量,這可以降低使 這些次級射線遍歷通過空間索引所需的時間量。
雖然前述的重新排序被描述為VTE 210聚集次級射線,并且在 將這些次級射線發送到工作負栽管理器205之前將它們重新排序,但 是根據本發明的其他實施例,VTE 210可以將射線發送到工作負載管 理器205而不對次級射線進行排序。然而,根據本發明的其他實施例, 工作負載管理器205可以在執行空間索引遍歷之前根據次級射線的相 似度而重新排序這些射線。工作負載管理器205可以按照與上文中對 于方法900所述的相似的方式重新排序次級射線。因此,工作負載管 理器205可以重新排序次級射線,以便降低使次級射線遍歷通過空間 索引所需的時間。
結論
通過在使次級射線遍歷通過空間索引之前重新排序所述次級射 線,可以改善射線追蹤圖像處理系統性能。根據本發明的一個實施例,
新排序次級射線。因此,定義空間索引的部分的信息仍可以處于執行 次級射線空間索引遍歷的工作負載管理器的高速緩存中。這可以降低 當使次級射線遍歷通過空間索引時的高速緩存不命中的數量,從而降 低使次級射線遍歷通過空間索引所需的時間量,并且改善射線追蹤圖 像處理系統的性能。
雖然前述針對的是本發明的實施例,但是可以設計出本發明的其 他以及進一步實施例,而不偏離本發明的基本范圍,并且本發明的范 圍由以下的權利要求來確定。
權利要求
1.一種執行射線追蹤的方法,包括生成一組進入三維場景的初級射線;以第一次序聚集次級射線,其中所述次級射線是當初級射線與場景內的對象相交時生成的;將所述次級射線重新排序為新的次序;以及按照新的次序使次級射線遍歷通過空間索引,其中空間索引具有節點,所述節點表示場景內的包圍體。
2. 如權利要求l所述的方法,其中所述新的次序是基于被聚集 的次級射線的相似度而確定的。
3. 如權利要求2所述的方法,其中所述相似度基于次級射線的 軌跡或次級射線的起源位置中的至少之一。
4. 如權利要求l所述的方法,還包括 確定被聚集的次級射線的數量是否達到閾值;以及 如果被聚集的射線的數量達到了閾值,則對發送箱中的次級射線進行重新排序。
5. 如權利要求4所述的方法,其中 次級射線被聚集在發送箱中; -所述閾值取決于發送箱的尺寸、和當對發送箱進行重新排序時發送箱中存在相似射線的可能性中的至少之一。
6. 如權利要求l所述的方法,其中所迷次級射線包括反射射線、 折射射線、和陰影射線之中的至少一個。
7. —種系統,包括第一處理元件,其被配置為生成進入三維場景的初級射線; 第二處理元件,其被配置為以第一次序聚集次級射線,其中所 述次級射線是當初級射線與三維場景內的對象相交時生成的;將被聚 集的次級射線重新排序為新的次序;并且以新的次序將次級射線發送 到第一處理元件;并且其中,第一處理元件還被配置為按照所述新的次序使次級射線遍 歷通過空間索引,所述空間索引具有節點,所述節點表示三維場景中 的包圍體。
8. 如權利要求7所述的系統,其中所述新的次序是基于次級射 線的相似度而確定的。
9. 如權利要求8所述的系統,其中所述相似度基于次級射線的 軌跡或次級射線的起源位置中的至少之一。
10. 如權利要求7所述的系統,還包括 耦接到所述第一處理元件的發送箱;以及 其中所述第二處理元件還被配置為確定所述發送箱中的射線的數量是否達到閾值;以及如果發送箱中的射線的數量達到了閾值,則重新排序發送箱中的射線。
11. 如權利要求10所迷的系統,其中所述閾值取決于發送箱的 尺寸、和當對發送箱進行重新排序時發送箱中存在相似射線的可能性中的至少之一。
12. 如權利要求7所述的系統,其中所述次級射線包括反射射線、 折射射線、和陰影射線之中的至少一個。
13. 如權利要求10所述的系統,還包括 存儲器高速緩存,耦接到所述第一處理元件和第二處理元件。
14. 如權利要求13所述的系統,其中所述發送箱是所述存儲器 高速緩存的一部分。
15. —種包含程序的計算機可讀介質,在執行所述程序時,進行 前述方法權利要求中的任何一種方法。
全文摘要
本發明涉及一種執行射線追蹤的方法和系統。根據本發明的實施例,可以在向量吞吐引擎生成次級射線之后對這些次級射線進行聚集。在聚集這些次級射線之后,可以根據軌跡和起源位置的相似度對它們進行重新排序。這些次級射線可以按照新的次序被發送到工作負載管理器,用于空間索引遍歷。次級射線的重新排序可以使遍歷空間索引的相似部分的射線彼此緊接地(或者只隔很短的時間)被遍歷。因此,空間索引的必要部分可以保持在工作負載管理器的存儲器高速緩存之內,從而降低高速緩存不命中的數量以及使次級射線遍歷通過空間索引所需的時間量。使次級射線遍歷通過空間索引所需的時間的降低可以改善圖像處理系統的總體性能。
文檔編號G06T15/06GK101192311SQ20071018700
公開日2008年6月4日 申請日期2007年11月14日 優先權日2006年11月28日
發明者埃里克·O.·梅耶德里奇, 拉塞爾·D.·胡弗, 杰弗里·D.·布朗 申請人:國際商業機器公司