專利名稱:光線跟蹤內核及具有該光線跟蹤內核的光線跟蹤芯片的制作方法
技術領域:
所述技術涉及3D圖形處理,更具體來講,涉及一種光線跟蹤內核及具有該光線跟蹤內核的光線跟蹤芯片。
背景技術:
3D圖形技術在計算系統(tǒng)中使用3D幾何數據表示,在多個行業(yè)被廣泛采用,例如, 媒體和游戲產業(yè)。一般來說,由于需要大量的計算,3D圖形技術需要一個單獨的高性能處理
ο尤其是,根據處理器近期的發(fā)展,光線跟蹤技術已經開發(fā)出了非常逼真的3D圖形技術,能夠模擬例如反射、折射和陰影等光效。
發(fā)明內容
在一些實施方式中,光線跟蹤內核包括光線生成單元和多個采用MIMD(多指令流多數據流)架構的T&I(遍歷和交叉)單元。光線生成單元基于眼光線生成信息來生成至少一個眼光線。眼光線生成信息包括屏幕坐標值。多個T&I單元中的每個接收至少一個眼光線并檢查是否存在與所接收的至少一個眼光線交叉的三角形。該三角形構成一個空間。在一些實施方式中,光線跟蹤內核包括設置處理單元(setup processing unit)、 光線生成單元和多個采用MIMD (多指令流多數據流)架構的T&I (遍歷和交叉)單元。設置處理單元復用眼光線生成信息或陰影信息中的一個。陰影信息包括坐標值、顏色值和光線三角形命中點(hit point)的陰影光線類別。光線生成單元基于眼光線生成信息或陰影信息來生成至少一個眼光線或陰影光線,或者確定最終顏色值。多個T&I單元中的每個確定與所生成的至少一個眼光線或陰影光線交叉的三角形。該三角形構成一個空間。在一些實施方式中,光線跟蹤芯片包括多個光線跟蹤內核、被配置為將至少一個圖像塊分配給多個光線跟蹤內核中的一個光線跟蹤內核的XY生成器和被配置為存儲從多個光線跟蹤內核中的每一個輸出的最終顏色值的存儲器。多個光線跟蹤內核中的每一個包括被配置為基于眼光線生成信息來生成至少一個眼光線的光線生成單元,眼光線生成信息包括屏幕坐標值和多個采用MIMD (多指令流多數據流)架構的T&I (遍歷和交叉)單元。多個T&I單元中的每個接收至少一個眼光線并檢查是否存在與接收的至少一個眼光線交叉的三角形。該三角形構成一個空間。在一些實施方式中,光線跟蹤芯片包括多個光線跟蹤內核、被配置為將至少一個圖像塊分配給多個光線跟蹤內核中的適當的光線跟蹤內核的XY生成器和被配置為存儲從多個光線跟蹤內核中的每一個輸出的最終顏色值的存儲器。多個光線跟蹤內核中的每一個包括被配置為復用一個眼光線生成信息或陰影信息的設置處理單元,陰影信息包括坐標值、顏色值和用于光線三角形命中點的陰影光線類型、被配置為基于眼光線生成信息或陰影信息來生成至少一個眼光線或陰影光線或被配置為確定最終顏色值的光線生成單元,以及多個采用MIMD (多指令流多數據流)架構的T&I (遍歷和交叉)單元,每一個都確定與所生成的至少一個眼光線或陰影光線交叉的三角形,該三角形構成一個空間。本發(fā)明的實施方式將會參考附圖而進行更全面地描述,其中附圖中展示了本發(fā)明的實施方式。然而,本發(fā)明可以以多種不同的形式被實施,且并不應當理解為對此處說明的實施方式的限制。恰恰相反,這些實施方式被提供來使得此處的公開周全而完備,并對本領域技術人員完全表達出本發(fā)明的范圍。貫穿整個申請中,相同的標號用以表明類似的部件??梢岳斫獾氖?,盡管第一、第二等術語此處被用來描述不同的部件,但這些部件并不被這些術語所限定。這些術語用來將一個部件與另一個區(qū)分開來。例如,在不背離本發(fā)明的范圍的情況下,第一部件可被稱為第二部件,類似的,第二部件可被稱為第一部件。此處使用的詞語“和/或”包括任意和所有的一個或多個相關列出的元件的組合??梢岳斫獾氖牵斠粋€部件被指“連接”或“耦接”到另一個部件時,它可以是直接連接或耦接到另一個部件或存在經由中間的部件。相反地,當一個部件被指“直接連接”或 “直接耦接”到另一個部件時,其中沒有中間部件。其他用于表述部件之間關系的詞使用相同的方式被解釋(例如,“在……之間”對“直接在……之間”,“相鄰”對“直接相鄰”等)。此處使用的術語用于描述特定的實施方式而并不意圖對發(fā)明進行限制。在此處使用的單數形式意圖同樣包括復數形式,除非上下文明確指示相反。進一步需要理解的是,當在此處使用術語“包括”和/或“包含”時,說明了所述特征、要件、步驟、操作、部件和/或組件的存在,但不排除其中存在或增加一個或多個其他的特征、要件、步驟、操作、部件、組件和/或組。除非相反定義,此處使用的所有術語(包括技術和科學術語)都具有該發(fā)明所屬領域的普通技術人員一般理解的相同的含義。進一步需要理解的是,術語,例如在通常使用的字典中定義的術語,被解釋為具有和相關領域的上下文中具有的含義相一致的含義,并不被解釋為理想化或過度形式的含義,除非此處明確地如此定義。需要注意的是,在一些可選的實施方式中,模塊中的功能/動作發(fā)生的順序可能與流程圖中的不同。例如,顯示的兩個連續(xù)的模塊實際可能被本質上并發(fā)地執(zhí)行或有時模塊被以相反的順序執(zhí)行,取決于包括的功能/動作。在下文中,將結合附圖在細節(jié)上對本發(fā)明進行說明。圖1是根據本發(fā)明的一個實施方式的光線跟蹤內核的框圖。參照圖1,光線跟蹤內核100可被主要劃分為數據通路部分和存儲器系統(tǒng)部分。在一個實施方式中,光線跟蹤內核100可被包含在諸如圖形處理器等的芯片中。在另一個實施方式中,光線跟蹤內核100可實現在單獨的芯片中。數據通路部分包括設置處理單元110、光線生成單元120、多個T&I (遍歷和交叉) 單元130、命中點計算單元140、陰影單元150和控制單元160。存儲器系統(tǒng)部分包括寄存器165、L1高速緩存170、L2高速緩存175、高速緩存180,緩沖器185、棧190和存儲器195。 為了便于表述,圖1所述的存儲器系統(tǒng)部分的各個部件被分別實現,但如果需要的話,部件中的至少一部分可通過物理上相同的存儲器來實現。同樣,光線跟蹤芯片100可被耦接到外部存儲器1000,該外部存儲器1000包括 AS (加速結構)存儲單元1100、⑶(幾何數據)存儲單元1200、紋理圖像存儲單元1300和幀存儲單元1400。AS包括通常用于光線跟蹤的BVH(包圍盒層次)或kd樹(k深度樹)。⑶包括與用于光線跟蹤的三角形有關的信息(在下文中,被稱作三角形信息)。在一個實施方式中, 三角形信息可以包括三角形的三個點的紋理坐標和標準向量。圖9例示了在圖1的光線跟蹤芯片中的加速結構和幾何數據之間的關系。在圖9中,AS(加速結構)假定利用kd樹。kd樹是一種空間劃分樹并被用于光線三角形交叉測試。kd樹包括盒節(jié)點(box node)910、內部節(jié)點920和葉節(jié)點930。葉節(jié)點 930包括用于定點(point)至少一個包括在幾何數據中的三角形信息的三角形列表。在一個實施方式中,當三角形信息被包括在幾何數據中時,包括在葉節(jié)點930中的三角形列表對應于數組索引。圖2和圖3例示了光線跟蹤的流程圖。在下文中,光線跟蹤內核100的整個操作將會結合圖1至3來進行說明。設置處理單元110準備眼光線生成信息并選擇準備好的眼光線生成信息或從陰影單元150輸出的陰影信息。眼光線生成信息包括用于眼光線生成的屏幕坐標值。用于光線三角形命中點的陰影信息包括用于獲得屏幕坐標值的光線索引、光線三角形命中點的坐標值、光線三角形命中點的顏色值以及陰影光線類型。如果需要的話,陰影信息可以進一步包括基于陰影光線類型的附加信息。陰影光線包括影子光線、第二光線或空光線。第二光線包括折射光線或反射光線。在折射光線中,附加信息包括光線三角形命中點的折射率 (refraction ratio),在反射光線中,附加信息包括光線三角形命中點的反射率。設置處理單元110的操作將會參考圖4進行說明。光線生成單元120可以基于眼光線生成信息或陰影信息來生成至少一個眼光線 (步驟S310或S340)。如圖2所示,至少一個眼光線包括眼光線E、影子光線S、折射光線F 和/或反射光線R。當第二光線的數量大于等于2時,一個被輸出到T&I單元130,其他的被推入到第二光線棧190。在第二光線中,光線生成單元120會考慮反射光線R的命中點或折射光線F的命中點。例如,當折射光線F和反射光線R都被生成時,反射光線R會被輸出到T&I單元130,折射光線F會被推入到第二光線棧190。當陰影類型對應于空光線時,光線生成單元120將被推入第二光線棧190的第二光線彈出并將彈出的第二光線輸出到T&I單元130。當第二光線棧190為空時,光線生成單元120基于光線索引來獲得屏幕坐標值,并將基于屏幕坐標值的顏色值和光線三角形命中點得到的最終顏色值存儲到顏色緩沖器185c中。多個T&I單元130采用MIMD (多指令流多數據流)架構。多個T&I單元130中的每一個接收光線,例如來自光線生成單元120的眼光線、影子光線或第二光線,并檢查是否存在與AS中的光線交叉的三角形。也就是說,多個T&I單元130中的每一個都遍歷AS并執(zhí)行三角形交叉測試。多個T&I單元130的操作將會參考圖5至10進行說明。命中點計算單元140為交叉的三角形計算光線三角形命中點的坐標值。光線三角形命中點指示了在交叉的三角形中被光線命中的點。陰影單元150計算光線三角形命中點的顏色值。在一個實施方式中,陰影單元150可以執(zhí)行馮氏照明和紋理匹配來獲得光線三角形命中點的顏色值(步驟S340)。同樣的,陰影單元150通過光線生成單元120確定最終顏色值,或者為陰影光線生成陰影信息,并傳送陰影信息給設置處理單元110。當不再需要光線生成時,陰影光線類型對應于空光線。在一個實施方式中,陰影單元150可以基于保存在材料存儲器195c中的關于光線三角形命中點的材料信息來確定第二光線生成。在下文中,數據通路的每個部件將會被說明。<流水線控制架構>光線跟蹤算法被循環(huán)執(zhí)行,包括(i)眼光線生成過程(步驟S310),(ii)AS遍歷過程(步驟S320),(iii)光線三角形交叉測試(步驟S330),(iv)陰影和陰影光線生成過程 (步驟S340)。因此,光線跟蹤算法可能不適合使用常規(guī)的流水線架構。本技術引入了適用于光線跟蹤算法的流水線架構,控制單元160通過流水線(例如,寄存器)165中的標志來控制流水線操作。也就是說,本技術采用了簡單的基于標志的控制機制來提高流水線效率。在一個實施方式中,流水線165中的標志可以對應于1比特信息來表示開或關。當標志被打開時,流水線165可以存儲前一階段的信息。其結果是,通過使用該標志,流水線165可以同步地執(zhí)行它的過程并且數據通路的每個部件都可以異步地輸出它們的結果。如果需要的話,數據通路的每個部件都可以使用緩沖器185來減少由于負載平衡導致的等待時間。例如,多個T&I單元130中的每一個可以使用緩沖器185來改善性能和支持MIMD架構?!丛O置處理單元110>設置處理單元110初始化眼光線生成信息。在初始化過程中,設置處理單元110 確定屏幕坐標值并將確定的屏幕坐標值轉換為光線索引。該光線索引用來減少每個流水線階段中的流水線(例如,寄存器165)的尺寸。設置處理單元110將屏幕坐標值和光線索引發(fā)送到光線生成單元120。設置處理單元110復用眼光線生成信息或陰影信息。在一個實施方式中,陰影信息相比眼光線生成信息可以有更高的優(yōu)先級。優(yōu)選的是,為之前的屏幕坐標值的像素中生成的光線提前進行。圖4例示了圖1中的設置處理單元的基于塊的光線生成順序以及它的硬件。屏幕包括多個mXn像素塊(在下文中,被稱為超級塊)。m和η是偶數。每個超級塊包括N個像素塊(在下文中,被稱為子塊)。N對應于多個Τ&Ι單元130的個數。每個 N像素塊都為同樣大小。設置處理單元110將屏幕劃分為多個塊(也就是,子塊)來提高高速緩存的命中率并確定基于塊的眼光線生成順序。例如,屏幕可以包括多個超級塊并且多個超級塊中每個被配置為16X 16的像素塊。每個超級塊包括多個子塊并且多個子塊中的每個可能包括4 個8X8的像素塊。第一到第四像素塊410到440中的每一個被分配給第一到第四Τ&Ι單元 130a 到 130d。在下文中,第一子塊410對應于圖4(b)中的8X8像素塊,并被分配給第一 T&I單兀 130ao設置處理單元110使用線性η比特計數器450來確定眼光線生成順序從而提高高速緩存的命中率。第一組線性η比特計數器450代表子塊的χ坐標值。第一組可以包括至少一個非連續(xù)比特。第二組線性η比特計數器450代表子塊的y坐標值。第二組可以至少包括另一個非連續(xù)比特。就是說,第一和第二組互相排他。如圖4(b)和(c)所示,光線生成單元120基于由設置處理單元110確定的眼光線生成順序來生成光線。圖4(b)中的像素(例如像素0)代表光線生成的像素。例如,在64 個像素中,設置處理單元110可以包括一個線性6比特計數器450。當I = i5i4i3i2iliO(ICN 102439632 A
說明書
5/9頁
代表線性6比特計數器450的值)時,像素坐標(x,y)對應于(i5i3il,i4i2i0)。就是說, 線性6比特計數器450被實現來當計數器的數量增加時更簡單的映射?!垂饩€生成單元120>光線生成單元120將屏幕坐標值和設置處理單元110確定的光線索引存儲到光線索引映射表l%a中,并基于眼光線生成信息或陰影信息來生成至少一個光線,或將最終顏色值存儲到顏色緩沖器18 中。當接收到眼光線生成信息時,光線生成單元120生成眼光線E。當接收到陰影信息時,光線生成單元120根據陰影光線類型來生成陰影光線S、R或F,當陰影光線類型對應于空光線時,光線生成單元120將被推入第二光線棧190的第二光線彈出。當第二光線棧 190為空時,光線生成單元120基于光線索引來獲得屏幕坐標值,并將獲得的屏幕坐標值和光線三角形命中點存儲到顏色緩沖器185c中。在下文中,光線生成單元120的光線生成流程將會被說明。在眼光線生成時,光線生成單元120使用光線索引映射表l%a來找到眼光線E的屏幕坐標值并基于該屏幕坐標值來生成眼光線E。一般來說,眼光線E基于屏幕坐標值和攝像頭(也就是,眼睛的位置)的位置來生成。光線生成單元120將生成的眼光線分配給多個T&I單元130中的適當T&I單元(例如,130a)。當陰影光線類型對應于影子光線時,在生成影子光線時,光線生成單元120基于光線三角形命中點來生成影子光線。一般來說,影子光線可以基于屏幕坐標值和燈光位置來生成。在一個實施方式中,為了減少計算量,光線生成單元120限制光源的數量。當陰影光線類型對應于第二光線時,在生成第二光線時,光線生成單元120生成至少一個第二光線(也就是,折射光線和/或反射光線)。當至少一個第二光線的數量大于等于2時,光線生成單元120將至少一個第二光線中的除一個之外的其他光線存儲到第二光線棧190中。光線生成單元120將未被存儲的第二光線分配給多個T&I單元130中的一個適當T&I單元(例如,130b)。存儲在第二光線棧190中的第二光線可能包括屏幕坐標值、方向向量值和RGB權重。在一個實施方式中,為了減少計算量,光線生成單元120使用光線深度來防止無限制地由第二光線生成第二光線。當陰影光線類型對應于空光線時,在生成空光線時,光線生成單元120將被推入第二光線棧190的第二光線彈出并將彈出的第二光線分配給多個T&I單元130中的一個適當T&I單元(例如,130c)。當第二光線棧190為空時,光線生成單元120基于光線索引來獲得屏幕坐標值,并將基于光線三角形命中點的顏色值得到的最終顏色值存儲到顏色緩沖器185c中。存儲在顏色緩沖器185c中的最終顏色值被存儲到外部存儲器1000。<T&I 單元 130>多個Τ&Ι單元130執(zhí)行AS遍歷過程(步驟S320)和光線三角形交叉測試過程(步驟 S330)。圖5例示了圖1中的多個Τ&Ι單元130的框圖。參照圖5,多個Τ&Ι單元130中的每一個包括緩沖器185、Ll高速緩存170和Τ&Ι 流水線單元135。多個Τ&Ι單元130采用MIMD架構并獨立地由Τ&Ι流水線單元135執(zhí)行。光線跟蹤算法可使用MIMD架構處理每個光線。MIMD架構相較于SIMD (單指令流多數據流)架構在使用流水線效率方面有優(yōu)勢。多個T&I單元130中的每一個包括它自身的輸入緩沖器18 和輸出緩沖器185b。 最好是從同一個像素生成的光線(例如,眼光線和陰影光線)由同一個T&I單元130來處理。同樣,多個T&I單元130中的每一個包括它自身的Ll高速緩存170。這是由于MIMD架構需要有效的緩存存儲器。T&I流水線單元135執(zhí)行⑴遍歷過程;(ii)三角形列表獲取過程;(iii)光線三角形交叉測試過程。AS假定對應于kd樹。在遍歷過程中,T&I流水線單元135通過搜索AS中的節(jié)點來搜索與光線交叉的葉節(jié)點。AS的遍歷算法對相關領域的普通技術人員來說是公知的,對遍歷算法的解釋在此省略。在三角形列表獲取過程中,T&I流水線單元135讀取包括在交叉的葉節(jié)點中的三角形列表。在光線三角形交叉測試過程中,T&I流水線單元135讀取三角形列表的坐標信息并為給定的光線執(zhí)行交叉測試。圖6和圖7例示了圖5中的T&I流水線單元。光線追蹤結構在[SCHMITTLER,J.,WALD,I.,AND SLUSALL P. 2002. Saarcor a hardware architecture for ray tracing.In Proceedings of the IGGRAPH/ EUROGRAPHICS conference on Graphics Hardware](在下文中,被稱為參考文獻 1)和 [SCHMITTLER, J.,WOOP, S.,WAGNER, D.,PAUL, W. J.,AND SLUSALLEK, P. ,2004. Realtime ray tracing of dynamic scenes on an FPGA chip. In Proceedings of the IGGRAPH/ EUROGRAPHICS conference on Graphics Hardware](在下文中,被稱為參考文獻2)中使用單獨的硬件來遍歷和交叉測試。然而,圖5中的T&I流水線單元135采用了統(tǒng)一的流水線結構來有效地支持AS避免遍歷和交叉測試之間的負載不平衡。也就是說,圖7中的T&I流水線單元135可在遍歷和交叉測試的每個階段使用相同的硬件。在下文中,本發(fā)明與參考文獻1、2之間的區(qū)別將會被說明。在圖6和圖7中,假設AS對應于kd樹。圖6解釋了 T&I流水線135中執(zhí)行的遍歷過程、在光線三角形交叉測試中使用的運算器和運算器的數量。遍歷過程主要包括光線盒交叉測試和遍歷。在圖9中,kd樹的頂部節(jié)點910對應于盒節(jié)點。流水線控制單元710控制T&I流水線單元135中的流水線。光線盒交叉測試、遍歷和光線三角形交叉測試的操作在 [M0LLER, Τ. , AND TRUMB0RE,B. 1997Fast, minimum storage ray-triangle intersection, Journal of Graphics Tools]中有詳細說明。在圖6中,在光線盒交叉測試中順序使用的運算器包括6個FADD (浮點加法器)、6 個FMUL (浮點乘法器)、3個第一 FCOMP (浮點比較器)、2個第二 FCOMP和1個第三FC0MP。在圖6中,在遍歷中順序使用的運算器包括1個FADD、1個FMUL和2個FCOMP。同樣,在遍歷中順序使用的操作包括向棧存儲器185d中推送入棧和從棧存儲器185d中彈出。在圖6中,在光線三角形交叉測試中順序使用的運算器包括9個第一 FADD、12個第一 FMUL、6 個第二 FADD、12 個第二 FMUL、4 個 TFADD (3 元輸入 FADD)、1 個 FADD 和 FDIV (浮點除法器)和2個FCOMP。光線三角形交叉測試計算與給定光線有交叉的最近的三角形與眼睛位置(或攝像頭位置)的交叉點之間的距離。如果存在交叉的三角形,則將關于該交叉三角形的信息發(fā)送至命中點計算單元140。否則的話,執(zhí)行下一個遍歷。在一個實施方式中,光線三角形交叉測試可以使用[M0LLER,T.,AND TRUMB0RE,B. 1997. Fast,minimum storage ray-triangle intersection. Journal of Graphics Tools]中的算法。圖7例示了用于執(zhí)行三角形列表獲取過程和光線三角形交叉測試過程的T&I流水線單元的構造。T&I流水線單元135使用統(tǒng)一的單獨流水線來執(zhí)行遍歷過程、三角形列表獲取過程和光線三角形交叉測試過程。也就是說,710中的流水線階段執(zhí)行遍歷過程和光線三角形交叉測試過程,而其他階段執(zhí)行高速緩存訪問或三角形列表獲取過程。如圖7所示,本技術不使用單獨的硬件,并采用統(tǒng)一的流水線架構。CT&I單元130的存儲器系統(tǒng)>圖8例示了圖1中的T&I單元的存儲器系統(tǒng)。由于T&I單元130需要大量的存儲器訪問,所以需要有效地設計T&I單元130的存儲器系統(tǒng)。如圖1和圖5所示,多個T&I單元130中的每一個包括3個Ll高速緩存并使用公共的L2高速緩存。盡管使用了高速緩存的兩層結構,但是由于高速緩存未命中導致的流水線的停止時間仍然很高。因此,所述技術使用如下兩種技術來解決上述的問題。第一種技術是關于Ll高速緩存未命中,當Ll高速緩存未命中發(fā)生時,Ll高速緩存未命中被繞開而不停止,從而使得Ll高速緩存未命中在下一個循環(huán)中被解決。在圖5中, 當高速緩存未命中在流水線Pl中發(fā)生時,流水線控制單元710繼續(xù)而不停止到隨后的流水線階段P2。在未命中處理過程中,高速緩存控制器(未示出)訪問L2高速緩存185或外部存儲器1000兩者之一來獲取數據。當流水線Pl在流水線P18后被再次執(zhí)行時,發(fā)生了對 Ll高速緩存的訪問。如果高速緩存未命中被解決了,流水線控制單元710就正常執(zhí)行后續(xù)的流水線P2,如果再次發(fā)生了高速緩存未命中,流水線控制單元710就重復上述的過程直到高速緩存未命中被解決。作為結果,由于高速緩存未命中帶來的高速緩存未命中處罰可相當程度地被減緩。第二種技術是關于L2高速緩存未命中,當L2高速緩存發(fā)生時,L2高速緩存未命中被繞開而不停止。如果Ll高速緩存未命中發(fā)生在當前光線中,則訪問L2高速緩存的需求被輸入到Ll地址FIFO 810。如果L2高速緩存訪問命中,則地址和數據被輸入到Ll地址 /數據FIFO 820。否則的話,對外部存儲器1000的其他需求被輸入到L2地址FIFO 830并且當前光線中的需求被刪除。對刪除需求的高速緩存的訪問在下一次循環(huán)中發(fā)生。如果在下次循環(huán)中發(fā)生高速緩存訪問,則重復上述的過程。因此,盡管由于對下一光線的需求在L2 高速緩存訪問中發(fā)生了未命中,但是由于對下一光線的需求對L2高速緩存訪問是允許的。 作為結果,由于高速緩存未命中帶來的高速緩存未命中處罰可相當程度地被減緩。圖8展示了節(jié)點Ll高速緩存170的例子,但Ll列表高速緩存和Ll數據線坐標高速緩存可被相似地操作。<命中點計算單元140和陰影單元150>命中點計算單元140使用三角形與給定光線的向量值之間的距離來計算光線三角形命中點的坐標值。該三角形由T&I單元130輸出并被光線命中。由于一個光線三角形命中點發(fā)生在一個光線中,所以命中點計算單元140可實現在T&I單元130中。陰影單元150使用存儲在材料存儲器195c和三角形信息高速緩存180中的信息來計算光線三角形命中點的顏色值。材料存儲器195c存儲有與幾何數據存儲單元1200中的三角形有關的材料信息。在一個實施方式中,材料信息可以包括紋理索引、環(huán)境常量、擴散常數、反射常量、折射率(也就是,阿爾法值)、折射角等等。三角形信息高速緩存180是幾何數據存儲單元1200的高速緩存,并存儲有與在陰影階段需要的相應三角形有關的三角形信息。三角形信息可以進一步包括材料索引來參照材料存儲器195c。陰影單元150通過馮氏照明和紋理匹配來計算光線三角形命中點的顏色值,將計算得到的顏色值與陰影緩沖18 中的先前顏色相加,相加得到的顏色值被放入陰影緩沖 18 中。陰影緩沖18 存儲根據給定像素和陰影信息生成的眼光線、影子光線或第二光線的相加顏色值。陰影信息用于確定對當前光線是否生成第二光線。陰影單元150基于在關于命中三角形的三角形信息中包括的材料索引從材料存儲器獲取材料信息(也就是,反射率和折射率)。如果反射率不為0,則光線生成單元120生成反射光線,如果折射率不為0,則光線生成單元120生成折射光線。同樣,光線生成單元120可以為光源生成影子光線。陰影單元150將陰影信息發(fā)送給設置處理單元110。光線三角形命中點的陰影信息包括坐標值、顏色值和陰影光線類型。在一個實施方式中,馮氏照明采用了[HARRIS,D. 2004, An exponentiation unit for an opengl lighting engine. IEEE Transactions on Computer]中白勺架構。在一個實施方式中,紋理匹配可以支持雙線性濾波方案并從[HAKURA,Z. S.,AND GUPTA, Α. 1997. The design and analysis of a cache architecture for texture mapping. SIGARCH Computer Architecture News]中選擇高速緩存架構。圖10例示了包括圖1中的光線跟蹤內核的光線跟蹤板。參照圖10,光線跟蹤板2000包括第一和第二光線跟蹤子板2010a和2010b。第一光線跟蹤子板2010a包括光線跟蹤芯片2020a和2020b,第二光線跟蹤子板2010b包括光線跟蹤芯片2020c和2020d。光線跟蹤內核2020基本上等同于圖1中的光線跟蹤內核,它們之間的區(qū)別將會被說明。主機中的CPU (中央處理單元)執(zhí)行場景管理軟件2005,該場景管理軟件2005創(chuàng)建AS,AS、幾何數據和紋理數據通過USB接口和BFM(總線功能模型)發(fā)送到每個光線跟蹤芯片2020中的存儲器(DRAM) 2030a至2030d。然后,光線跟蹤內核2020開始執(zhí)行。第一光線跟蹤芯片2010a作為控制端(master)。第一光線跟蹤芯片2010a中的XY 生成器將塊地址(也就是,圖像的至少一個塊)發(fā)送到一個適當的光線跟蹤內核(例如,空閑的光線跟蹤芯片)2020。由XY生成器2040選擇的光線跟蹤內核2020接收塊地址,然后對預定的像素塊執(zhí)行表現操作。例如,預定的像素塊可以對應于16X16像素塊。在表現完成后,光線跟蹤內核2020從XY生成器2040處請求到XY生成器2040的下一個塊地址。每個光線跟蹤內核2020中的最終顏色值通過SRAM&IXD控制器2050被存儲在SRAM 2060中。本發(fā)明具有下述優(yōu)點。然而,這并不意味著特定實施方式具有其所有的優(yōu)點或僅具有這些優(yōu)點,且不能理解為,本公開的發(fā)明的權益范圍由這些優(yōu)點來限定。根據一個實施方式的光線跟蹤內核可支持MIMD(多指令流對數據流)架構來更有效率地執(zhí)行光線跟蹤。根據一個實施方式的光線跟蹤內核采用統(tǒng)一的流水線架構從而能夠適合于加速結構來有效地執(zhí)行在光線跟蹤中使用的光線盒交叉、遍歷和光線三角形交叉測試。盡管本發(fā)明優(yōu)選的實施方式已經為了說明的目的而被公開,但是本領域的技術人員可以在不脫離本發(fā)明在伴隨的權利要求中公開的范圍和精神的情況下進行多種改變、增加和替換。
圖1是根據本發(fā)明一個實施方式的光線跟蹤內核的框圖。圖2和圖3例示了光線跟蹤過程。圖4例示了圖1中的設置處理單元的基于塊的光線生成順序以及它的硬件。圖5是例示了圖1中的多個T&I單元130的框圖。圖6和圖7例示了圖5中的T&I流水線單元。圖8例示了圖1中的T&I單元的存儲器系統(tǒng)。圖9例示了圖1的光線跟蹤芯片中的加速結構與幾何數據之間的關系。圖10例示了包括圖1中的光線跟蹤內核的光線跟蹤板。
權利要求
1.一種光線跟蹤內核,該光線跟蹤內核包括光線生成單元,其被配置為基于眼光線生成信息來生成至少一個眼光線,所述眼光線生成信息包括屏幕坐標值;和采用多指令流多數據流MIMD架構的多個遍歷和交叉T&I單元,每一個T&I單元被配置為接收所述至少一個眼光線并檢查是否存在與所接收的至少一個眼光線交叉的三角形,該三角形構成一個空間。
2.根據權利要求1所述的光線跟蹤內核,該光線跟蹤內核還包括陰影單元,其被配置為計算與所交叉的三角形中的命中點有關的顏色值,當存在與所接收的至少一個眼光線交叉的三角形時,該命中點被所述至少一個眼光線命中。
3.根據權利要求2所述的光線跟蹤內核,其中,所述陰影單元生成陰影信息,該陰影信息包括所述命中點的坐標值、計算出的顏色值和陰影光線類型,其中,該陰影信息能夠進一步包括根據所述陰影光線類型的附加信息。
4.根據權利要求3所述的光線跟蹤內核,其中,所述光線生成單元基于所生成的陰影信息來生成陰影光線或存儲最終顏色值。
5.根據權利要求4所述的光線跟蹤內核,該光線跟蹤內核還包括第二光線棧,其被配置為存儲至少一個第二光線,其中,當所述至少一個第二光線的數量大于等于2時,所述光線生成單元將所述至少一個第二光線中的一個分配給所述多個 T&I單元中的一個,并將其他第二光線推入到所述第二光線棧中。
6.根據權利要求5所述的光線跟蹤內核,其中,當所述陰影光線類型對應于空光線時, 所述光線生成單元從所述第二光線棧中彈出被推入的第二光線并將所彈出的第二光線分配給所述多個T&I單元中的一個。
7.根據權利要求1所述的光線跟蹤內核,其中,所述多個T&I單元中的每一個都包括 T&I流水線單元,該T&I流水線單元被配置為基于接收到的眼光線來執(zhí)行遍歷過程、三角形列表獲取過程和光線三角形交叉測試過程。
8.根據權利要求7所述的光線跟蹤內核,其中,所述多個T&I單元中的每一個都還包括用于所述MIMD架構的輸入緩沖器和輸出緩沖器。
9.根據權利要求1所述的光線跟蹤內核,該光線跟蹤內核還包括設置處理單元,其被配置為將屏幕劃分為多個塊以提高所述多個T&I單元中的每一個的命中率并基于所述多個塊中的每一個來確定眼光線生成順序。
10.根據權利要求9所述的光線跟蹤內核,其中,所述設置處理單元將屏幕劃分為mXn 個在下文中被稱為超級塊的像素塊,將每個超級塊劃分為η個在下文中被稱為子塊的像素塊,并基于每個所述子塊來確定眼光線的生成順序,其中,每個所述子塊都為相同的大小, 并且其中,m和η為偶數,η是所述多個塊的數量。
11.根據權利要求10所述的光線跟蹤內核,其中,所述設置處理單元包括用于確定眼光線生成順序的線性η比特計數器,其中,所述線性η比特計數器的第一組表示所述子塊的 χ坐標值,所述線性η比特計數器的第二組表示所述子塊的y坐標值,其中,所述第一組可以包括至少一個非連續(xù)比特,而所述第二組可以包括至少另一個非連續(xù)比特。
12.一種光線跟蹤內核,該光線跟蹤內核包括設置處理單元,其被配置為復用眼光線生成信息或陰影信息中的一個,所述陰影信息包括光線三角形命中點的坐標值、顏色值和陰影光線類型;光線生成單元,其被配置為基于所述眼光線生成信息或所述陰影信息來生成至少一個眼光線或陰影光線,或被配置為確定最終顏色值;和采用多指令流多數據流MIMD架構的多個遍歷和交叉T&I單元,每一個T&I單元都確定與所生成的至少一個眼光線或陰影光線交叉的三角形,該三角形構成一個空間。
13.根據權利要求12所述的光線跟蹤內核,該光線跟蹤內核還包括命中點計算單元,其被配置為基于所生成的至少一個眼光線或陰影光線來計算在所交叉的三角形中的光線三角形命中點。
14.根據權利要求13所述的光線跟蹤內核,該光線跟蹤內核還包括陰影單元,其被配置為計算所計算的光線三角形命中點的顏色值并發(fā)送所計算的光線三角形命中點的陰影信息。
15.根據權利要求12所述的光線跟蹤內核,其中,所述多個T&I單元中的每一個都包括T&I流水線單元,該T&I流水線單元被配置為基于所生成的至少一個眼光線或陰影光線來執(zhí)行遍歷過程、三角形列表獲取過程和光線三角形交叉測試過程。
16.一種光線跟蹤芯片,該光線跟蹤芯片包括 多個光線跟蹤內核;XY生成器,其被配置為將至少一個圖像塊分配給所述多個光線跟蹤內核中的一個光線跟蹤內核;和存儲器,其被配置為存儲從所述多個光線跟蹤內核中的每一個輸出的最終顏色值, 其中,所述多個光線跟蹤內核中的每一個包括光線生成單元,其被配置為基于眼光線生成信息來生成至少一個眼光線,所述眼光線生成信息包括屏幕坐標值;和采用多指令流多數據流MIMD架構的多個遍歷和交叉T&I單元,每一個T&I單元都被配置為接收所述至少一個眼光線并檢查是否存在與所接收的至少一個眼光線交叉的三角形, 該三角形構成一個空間。
17.一種光線跟蹤芯片,該光線跟蹤芯片包括 多個光線跟蹤內核;XY生成器,其被配置為將至少一個圖像塊分配給所述多個光線跟蹤內核中的適當光線跟蹤內核;和存儲器,其被配置為存儲從所述多個光線跟蹤內核中的每一個輸出的最終顏色值, 其中,所述多個光線跟蹤內核中的每一個包括設置處理單元,其被配置為復用眼光線生成信息或陰影信息中的一個,所述陰影信息包括光線三角形命中點的坐標值、顏色值和陰影光線類型;光線生成單元,其被配置為基于所述眼光線生成信息或所述陰影信息來生成至少一個眼光線或陰影光線,或被配置為確定最終顏色值;和采用多指令流多數據流MIMD架構的多個遍歷和交叉T&I單元,每一個T&I單元都確定與所生成的至少一個眼光線或陰影光線交叉的三角形,該三角形構成一個空間。
全文摘要
本發(fā)明公開了光線跟蹤內核及具有該光線跟蹤內核的光線跟蹤芯片。該光線跟蹤內核包括光線生成單元和采用MIMD(多指令流多數據流)架構的多個T&I(遍歷和交叉)單元。光線生成單元基于眼光線生成信息來生成至少一個眼光線。眼光線生成信息包括屏幕坐標值。多個T&I單元中的每一個接收至少一個眼光線并檢查是否存在與接收的至少一個眼光線交叉的三角形。該三角形構成一個空間。
文檔編號G06T15/06GK102439632SQ201080022742
公開日2012年5月2日 申請日期2010年5月19日 優(yōu)先權日2009年5月28日
發(fā)明者尹亨敏, 樸祐贊 申請人:斯里考納特斯公司, 樸祐贊