亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

光線跟蹤內(nèi)核及具有該光線跟蹤內(nèi)核的光線跟蹤芯片的制作方法

文檔序號:6349319閱讀:386來源:國知局
專利名稱:光線跟蹤內(nèi)核及具有該光線跟蹤內(nèi)核的光線跟蹤芯片的制作方法
技術(shù)領(lǐng)域
所述技術(shù)涉及3D圖形處理,更具體來講,涉及一種光線跟蹤內(nèi)核及具有該光線跟蹤內(nèi)核的光線跟蹤芯片。
背景技術(shù)
3D圖形技術(shù)在計算系統(tǒng)中使用3D幾何數(shù)據(jù)表示,在多個行業(yè)被廣泛采用,例如, 媒體和游戲產(chǎn)業(yè)。一般來說,由于需要大量的計算,3D圖形技術(shù)需要一個單獨(dú)的高性能處理
ο尤其是,根據(jù)處理器近期的發(fā)展,光線跟蹤技術(shù)已經(jīng)開發(fā)出了非常逼真的3D圖形技術(shù),能夠模擬例如反射、折射和陰影等光效。

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


圖1是根據(jù)本發(fā)明一個實(shí)施方式的光線跟蹤內(nèi)核的框圖。圖2和圖3例示了光線跟蹤過程。圖4例示了圖1中的設(shè)置處理單元的基于塊的光線生成順序以及它的硬件。圖5是例示了圖1中的多個T&I單元130的框圖。圖6和圖7例示了圖5中的T&I流水線單元。圖8例示了圖1中的T&I單元的存儲器系統(tǒng)。圖9例示了圖1的光線跟蹤芯片中的加速結(jié)構(gòu)與幾何數(shù)據(jù)之間的關(guān)系。圖10例示了包括圖1中的光線跟蹤內(nèi)核的光線跟蹤板。
權(quán)利要求
1.一種光線跟蹤內(nèi)核,該光線跟蹤內(nèi)核包括光線生成單元,其被配置為基于眼光線生成信息來生成至少一個眼光線,所述眼光線生成信息包括屏幕坐標(biāo)值;和采用多指令流多數(shù)據(jù)流MIMD架構(gòu)的多個遍歷和交叉T&I單元,每一個T&I單元被配置為接收所述至少一個眼光線并檢查是否存在與所接收的至少一個眼光線交叉的三角形,該三角形構(gòu)成一個空間。
2.根據(jù)權(quán)利要求1所述的光線跟蹤內(nèi)核,該光線跟蹤內(nèi)核還包括陰影單元,其被配置為計算與所交叉的三角形中的命中點(diǎn)有關(guān)的顏色值,當(dāng)存在與所接收的至少一個眼光線交叉的三角形時,該命中點(diǎn)被所述至少一個眼光線命中。
3.根據(jù)權(quán)利要求2所述的光線跟蹤內(nèi)核,其中,所述陰影單元生成陰影信息,該陰影信息包括所述命中點(diǎn)的坐標(biāo)值、計算出的顏色值和陰影光線類型,其中,該陰影信息能夠進(jìn)一步包括根據(jù)所述陰影光線類型的附加信息。
4.根據(jù)權(quán)利要求3所述的光線跟蹤內(nèi)核,其中,所述光線生成單元基于所生成的陰影信息來生成陰影光線或存儲最終顏色值。
5.根據(jù)權(quán)利要求4所述的光線跟蹤內(nèi)核,該光線跟蹤內(nèi)核還包括第二光線棧,其被配置為存儲至少一個第二光線,其中,當(dāng)所述至少一個第二光線的數(shù)量大于等于2時,所述光線生成單元將所述至少一個第二光線中的一個分配給所述多個 T&I單元中的一個,并將其他第二光線推入到所述第二光線棧中。
6.根據(jù)權(quán)利要求5所述的光線跟蹤內(nèi)核,其中,當(dāng)所述陰影光線類型對應(yīng)于空光線時, 所述光線生成單元從所述第二光線棧中彈出被推入的第二光線并將所彈出的第二光線分配給所述多個T&I單元中的一個。
7.根據(jù)權(quán)利要求1所述的光線跟蹤內(nèi)核,其中,所述多個T&I單元中的每一個都包括 T&I流水線單元,該T&I流水線單元被配置為基于接收到的眼光線來執(zhí)行遍歷過程、三角形列表獲取過程和光線三角形交叉測試過程。
8.根據(jù)權(quán)利要求7所述的光線跟蹤內(nèi)核,其中,所述多個T&I單元中的每一個都還包括用于所述MIMD架構(gòu)的輸入緩沖器和輸出緩沖器。
9.根據(jù)權(quán)利要求1所述的光線跟蹤內(nèi)核,該光線跟蹤內(nèi)核還包括設(shè)置處理單元,其被配置為將屏幕劃分為多個塊以提高所述多個T&I單元中的每一個的命中率并基于所述多個塊中的每一個來確定眼光線生成順序。
10.根據(jù)權(quán)利要求9所述的光線跟蹤內(nèi)核,其中,所述設(shè)置處理單元將屏幕劃分為mXn 個在下文中被稱為超級塊的像素塊,將每個超級塊劃分為η個在下文中被稱為子塊的像素塊,并基于每個所述子塊來確定眼光線的生成順序,其中,每個所述子塊都為相同的大小, 并且其中,m和η為偶數(shù),η是所述多個塊的數(shù)量。
11.根據(jù)權(quán)利要求10所述的光線跟蹤內(nèi)核,其中,所述設(shè)置處理單元包括用于確定眼光線生成順序的線性η比特計數(shù)器,其中,所述線性η比特計數(shù)器的第一組表示所述子塊的 χ坐標(biāo)值,所述線性η比特計數(shù)器的第二組表示所述子塊的y坐標(biāo)值,其中,所述第一組可以包括至少一個非連續(xù)比特,而所述第二組可以包括至少另一個非連續(xù)比特。
12.一種光線跟蹤內(nèi)核,該光線跟蹤內(nèi)核包括設(shè)置處理單元,其被配置為復(fù)用眼光線生成信息或陰影信息中的一個,所述陰影信息包括光線三角形命中點(diǎn)的坐標(biāo)值、顏色值和陰影光線類型;光線生成單元,其被配置為基于所述眼光線生成信息或所述陰影信息來生成至少一個眼光線或陰影光線,或被配置為確定最終顏色值;和采用多指令流多數(shù)據(jù)流MIMD架構(gòu)的多個遍歷和交叉T&I單元,每一個T&I單元都確定與所生成的至少一個眼光線或陰影光線交叉的三角形,該三角形構(gòu)成一個空間。
13.根據(jù)權(quán)利要求12所述的光線跟蹤內(nèi)核,該光線跟蹤內(nèi)核還包括命中點(diǎn)計算單元,其被配置為基于所生成的至少一個眼光線或陰影光線來計算在所交叉的三角形中的光線三角形命中點(diǎn)。
14.根據(jù)權(quán)利要求13所述的光線跟蹤內(nèi)核,該光線跟蹤內(nèi)核還包括陰影單元,其被配置為計算所計算的光線三角形命中點(diǎn)的顏色值并發(fā)送所計算的光線三角形命中點(diǎn)的陰影信息。
15.根據(jù)權(quán)利要求12所述的光線跟蹤內(nèi)核,其中,所述多個T&I單元中的每一個都包括T&I流水線單元,該T&I流水線單元被配置為基于所生成的至少一個眼光線或陰影光線來執(zhí)行遍歷過程、三角形列表獲取過程和光線三角形交叉測試過程。
16.一種光線跟蹤芯片,該光線跟蹤芯片包括 多個光線跟蹤內(nèi)核;XY生成器,其被配置為將至少一個圖像塊分配給所述多個光線跟蹤內(nèi)核中的一個光線跟蹤內(nèi)核;和存儲器,其被配置為存儲從所述多個光線跟蹤內(nèi)核中的每一個輸出的最終顏色值, 其中,所述多個光線跟蹤內(nèi)核中的每一個包括光線生成單元,其被配置為基于眼光線生成信息來生成至少一個眼光線,所述眼光線生成信息包括屏幕坐標(biāo)值;和采用多指令流多數(shù)據(jù)流MIMD架構(gòu)的多個遍歷和交叉T&I單元,每一個T&I單元都被配置為接收所述至少一個眼光線并檢查是否存在與所接收的至少一個眼光線交叉的三角形, 該三角形構(gòu)成一個空間。
17.一種光線跟蹤芯片,該光線跟蹤芯片包括 多個光線跟蹤內(nèi)核;XY生成器,其被配置為將至少一個圖像塊分配給所述多個光線跟蹤內(nèi)核中的適當(dāng)光線跟蹤內(nèi)核;和存儲器,其被配置為存儲從所述多個光線跟蹤內(nèi)核中的每一個輸出的最終顏色值, 其中,所述多個光線跟蹤內(nèi)核中的每一個包括設(shè)置處理單元,其被配置為復(fù)用眼光線生成信息或陰影信息中的一個,所述陰影信息包括光線三角形命中點(diǎn)的坐標(biāo)值、顏色值和陰影光線類型;光線生成單元,其被配置為基于所述眼光線生成信息或所述陰影信息來生成至少一個眼光線或陰影光線,或被配置為確定最終顏色值;和采用多指令流多數(shù)據(jù)流MIMD架構(gòu)的多個遍歷和交叉T&I單元,每一個T&I單元都確定與所生成的至少一個眼光線或陰影光線交叉的三角形,該三角形構(gòu)成一個空間。
全文摘要
本發(fā)明公開了光線跟蹤內(nèi)核及具有該光線跟蹤內(nèi)核的光線跟蹤芯片。該光線跟蹤內(nèi)核包括光線生成單元和采用MIMD(多指令流多數(shù)據(jù)流)架構(gòu)的多個T&I(遍歷和交叉)單元。光線生成單元基于眼光線生成信息來生成至少一個眼光線。眼光線生成信息包括屏幕坐標(biāo)值。多個T&I單元中的每一個接收至少一個眼光線并檢查是否存在與接收的至少一個眼光線交叉的三角形。該三角形構(gòu)成一個空間。
文檔編號G06T15/06GK102439632SQ201080022742
公開日2012年5月2日 申請日期2010年5月19日 優(yōu)先權(quán)日2009年5月28日
發(fā)明者尹亨敏, 樸祐贊 申請人:斯里考納特斯公司, 樸祐贊