在光線跟蹤系統(tǒng)中遍歷加速結(jié)構(gòu)的設(shè)備和方法
【專利說明】在光線跟蹤系統(tǒng)中遍歷加速結(jié)構(gòu)的設(shè)備和方法
[0001]本申請(qǐng)要求于2014年5月27日提交到韓國知識(shí)產(chǎn)權(quán)局的第10-2014-0063725號(hào)韓國專利申請(qǐng)的權(quán)益,所述韓國專利申請(qǐng)的公開內(nèi)容通過引用被全部包含于此。
技術(shù)領(lǐng)域
[0002]本公開涉及一種在光線跟蹤系統(tǒng)中遍歷加速結(jié)構(gòu)的設(shè)備和方法。
【背景技術(shù)】
[0003]通常,三維(3D)渲染指用于將3D對(duì)象數(shù)據(jù)合成為從給定的相機(jī)的視點(diǎn)看見的圖像的圖像處理。
[0004]渲染的示例包括光柵化和光線跟蹤,所述光柵化涉及通過將3D對(duì)象投影到像平面上來產(chǎn)生圖像,光線跟蹤涉及通過跟蹤從相機(jī)的視點(diǎn)沿著穿過像平面中的每個(gè)像素的光線(ray)入射的光的路徑來產(chǎn)生圖像。
[0005]在它們當(dāng)中,光線跟蹤具有如下優(yōu)點(diǎn):由于在渲染的結(jié)果上反映了光的物理屬性(例如,反射、折射和透射),所以其可產(chǎn)生高質(zhì)量圖像;但是光線跟蹤具有如下缺點(diǎn):由于相對(duì)較大量的計(jì)算,所以難以以高速執(zhí)行渲染。
[0006]在光線跟蹤中需要大量的計(jì)算的處理包括:生成并遍歷加速結(jié)構(gòu)(AS)的處理以及執(zhí)行光線與圖元(primitive)之間的相交測(cè)試(1ST)的處理,在所述加速結(jié)構(gòu)中,將要被清染的場(chǎng)景對(duì)象被空間地劃分。
【發(fā)明內(nèi)容】
[0007]提供了一種在光線跟蹤系統(tǒng)中遍歷加速結(jié)構(gòu)(AS)的設(shè)備和方法,所述設(shè)備和方法可在AS遍歷處理期間高效地執(zhí)行每個(gè)子節(jié)點(diǎn)與光線之間的相交測(cè)試。
[0008]其他的方面將部分地在隨后的描述中闡述,部分地將通過所述描述而變得明顯,或者可通過對(duì)本示例性實(shí)施例的實(shí)施而了解。
[0009]根據(jù)示例性實(shí)施例的一方面,一種在光線跟蹤系統(tǒng)中遍歷加速結(jié)構(gòu)(AS)的方法,所述方法包括:獲取與AS中包括的目標(biāo)節(jié)點(diǎn)的多個(gè)子節(jié)點(diǎn)有關(guān)的信息;基于獲取的信息確定所述多個(gè)子節(jié)點(diǎn)中的各個(gè)子節(jié)點(diǎn)是否與光線相交;
[0010]從與光線相交的至少一個(gè)子節(jié)點(diǎn)中確定下一個(gè)目標(biāo)節(jié)點(diǎn);執(zhí)行與確定的下一個(gè)目標(biāo)節(jié)點(diǎn)的類型對(duì)應(yīng)的操作。
[0011]確定所述多個(gè)子節(jié)點(diǎn)中的各個(gè)子節(jié)點(diǎn)是否與光線相交的步驟可包括:同時(shí)確定所述多個(gè)子節(jié)點(diǎn)是否與光線相交。
[0012]確定所述多個(gè)子節(jié)點(diǎn)中的各個(gè)子節(jié)點(diǎn)是否與光線相交的步驟可包括:基于與第一子節(jié)點(diǎn)和第二子節(jié)點(diǎn)有關(guān)的信息,同時(shí)確定第一子節(jié)點(diǎn)和第二子節(jié)點(diǎn)是否與光線相交。
[0013]確定下一個(gè)目標(biāo)節(jié)點(diǎn)可包括:如果存在與光線相交的一個(gè)子節(jié)點(diǎn),則將所述一個(gè)子節(jié)點(diǎn)確定為所述下一個(gè)目標(biāo)節(jié)點(diǎn);如果存在與光線相交的兩個(gè)或更多個(gè)子節(jié)點(diǎn),則將所述兩個(gè)或更多個(gè)子節(jié)點(diǎn)中具有最短的到光線的相交距離的子節(jié)點(diǎn)確定為所述下一個(gè)目標(biāo)節(jié)點(diǎn)。
[0014]確定下一個(gè)目標(biāo)節(jié)點(diǎn)可包括:如果不存在與光線相交的子節(jié)點(diǎn),則從不從屬于來自AS的目標(biāo)節(jié)點(diǎn)的多個(gè)節(jié)點(diǎn)中提取任意一個(gè)節(jié)點(diǎn);將提取的節(jié)點(diǎn)確定為所述下一個(gè)目標(biāo)節(jié)點(diǎn)。
[0015]執(zhí)行與確定的下一個(gè)目標(biāo)節(jié)點(diǎn)的類型對(duì)應(yīng)的操作可包括:如果所述下一個(gè)目標(biāo)節(jié)點(diǎn)是內(nèi)節(jié)點(diǎn),則移動(dòng)到所述下一個(gè)目標(biāo)節(jié)點(diǎn)的至少一個(gè)子節(jié)點(diǎn);如果所述下一個(gè)目標(biāo)節(jié)點(diǎn)是葉節(jié)點(diǎn),則確定所述葉節(jié)點(diǎn)中包括的至少一個(gè)圖元是否與所述光線相交。
[0016]執(zhí)行與確定的下一個(gè)目標(biāo)節(jié)點(diǎn)的類型對(duì)應(yīng)的操作還可包括:當(dāng)確定所述至少一個(gè)圖元與光線不相交時(shí),則遍歷與光線相交的另一子節(jié)點(diǎn)。
[0017]所述方法還可包括:如果下一個(gè)目標(biāo)節(jié)點(diǎn)是葉節(jié)點(diǎn),則確定所述葉節(jié)點(diǎn)中包括的至少一個(gè)圖元的預(yù)設(shè)邊界框是否與光線相交。
[0018]如果被包括在根節(jié)點(diǎn)中的目標(biāo)節(jié)點(diǎn)是葉節(jié)點(diǎn),則所述方法還可包括:對(duì)目標(biāo)節(jié)點(diǎn)中包括的至少一個(gè)圖元進(jìn)行劃分;基于劃分的至少一個(gè)圖元產(chǎn)生目標(biāo)節(jié)點(diǎn)的子節(jié)點(diǎn)。
[0019]根據(jù)另一示例性實(shí)施例,一種用于在光線跟蹤系統(tǒng)中遍歷加速結(jié)構(gòu)(AS)的設(shè)備,所述設(shè)備包括:信息獲取器,獲取與AS中包括的目標(biāo)節(jié)點(diǎn)的多個(gè)子節(jié)點(diǎn)有關(guān)的信息;相交測(cè)試器,基于獲取的信息確定所述多個(gè)子節(jié)點(diǎn)中的各個(gè)子節(jié)點(diǎn)是否與光線相交;控制器,從與光線相交的至少一個(gè)子節(jié)點(diǎn)中確定下一個(gè)目標(biāo)節(jié)點(diǎn),并執(zhí)行與確定的下一個(gè)目標(biāo)節(jié)點(diǎn)的類型對(duì)應(yīng)的操作。
[0020]相交測(cè)試器可同時(shí)確定所述多個(gè)子節(jié)點(diǎn)是否與光線相交。
[0021]基于與第一子節(jié)點(diǎn)和第二子節(jié)點(diǎn)有關(guān)的信息,相交測(cè)試器可同時(shí)確定第一子節(jié)點(diǎn)和第二子節(jié)點(diǎn)是否與光線相交。
[0022]當(dāng)存在與光線相交的一個(gè)子節(jié)點(diǎn)時(shí),控制器可將所述一個(gè)子節(jié)點(diǎn)確定為所述下一個(gè)目標(biāo)節(jié)點(diǎn);當(dāng)存在與光線相交的兩個(gè)或更多個(gè)子節(jié)點(diǎn)時(shí),控制器可將所述兩個(gè)或更多個(gè)子節(jié)點(diǎn)中具有最短的到光線的相交距離的子節(jié)點(diǎn)確定為所述下一個(gè)目標(biāo)節(jié)點(diǎn)。
[0023]當(dāng)不存在與光線相交的子節(jié)點(diǎn)時(shí),控制器可從不從屬于來自AS的目標(biāo)節(jié)點(diǎn)的多個(gè)節(jié)點(diǎn)中提取任意一個(gè)節(jié)點(diǎn),并將提取的節(jié)點(diǎn)確定為所述下一個(gè)目標(biāo)節(jié)點(diǎn)。
[0024]當(dāng)所述下一個(gè)目標(biāo)節(jié)點(diǎn)是內(nèi)節(jié)點(diǎn)時(shí),控制器可移動(dòng)到所述下一個(gè)目標(biāo)節(jié)點(diǎn)的至少一個(gè)子節(jié)點(diǎn),而當(dāng)所述下一個(gè)目標(biāo)節(jié)點(diǎn)是葉節(jié)點(diǎn)時(shí),控制器可確定所述葉節(jié)點(diǎn)中包括的至少一個(gè)圖元是否與光線相交。
[0025]當(dāng)確定所述至少一個(gè)圖元與光線不相交時(shí),控制器可遍歷與光線相交的另一子節(jié)點(diǎn)。
[0026]當(dāng)所述下一個(gè)目標(biāo)節(jié)點(diǎn)是葉節(jié)點(diǎn)時(shí),相交測(cè)試器還可確定所述葉節(jié)點(diǎn)中包括的至少一個(gè)圖元的預(yù)設(shè)邊界框是否與光線相交。
[0027]當(dāng)被包括在根節(jié)點(diǎn)中的目標(biāo)節(jié)點(diǎn)是葉節(jié)點(diǎn)時(shí),控制器可劃分目標(biāo)節(jié)點(diǎn)中包括的至少一個(gè)圖元,并基于劃分的至少一個(gè)圖元產(chǎn)生目標(biāo)節(jié)點(diǎn)的子節(jié)點(diǎn)。
【附圖說明】
[0028]通過下面結(jié)合附圖對(duì)示例性實(shí)施例進(jìn)行的描述,這些和/或其他方面將變得明顯和更加易于理解,附圖中:
[0029]圖1是用于解釋光線跟蹤的示圖;
[0030]圖2是示出光線跟蹤系統(tǒng)的框圖;
[0031]圖3是示出根據(jù)示例性實(shí)施例的在光線跟蹤系統(tǒng)中用于遍歷加速結(jié)構(gòu)(AS)的設(shè)備的框圖;
[0032]圖4是用于解釋根據(jù)示例性實(shí)施例的存儲(chǔ)與目標(biāo)節(jié)點(diǎn)的子節(jié)點(diǎn)有關(guān)的信息的數(shù)據(jù)結(jié)構(gòu)的示圖;
[0033]圖5是根據(jù)示例性實(shí)施例的在光線跟蹤系統(tǒng)中遍歷AS的方法的流程圖;
[0034]圖6是用于解釋根據(jù)示例性實(shí)施例的所述設(shè)備如何執(zhí)行與光線相交的子節(jié)點(diǎn)的類型所對(duì)應(yīng)的操作的詳細(xì)流程圖;
[0035]圖7是示出根據(jù)示例性實(shí)施例的光線跟蹤系統(tǒng)的狀態(tài)的示圖;
[0036]圖8是示出根據(jù)示例性實(shí)施例的光線跟蹤系統(tǒng)中的設(shè)備的詳細(xì)框圖。
【具體實(shí)施方式】
[0037]如這里所使用的,術(shù)語“和/或”包括相關(guān)的列出項(xiàng)的一項(xiàng)或更多項(xiàng)的任意和所有的組合。當(dāng)諸如“中的至少一個(gè)”的表述位于元件的列表之后時(shí),所述表述修飾元件的整個(gè)列表,而不修飾列表中的單個(gè)元件。
[0038]現(xiàn)在將參照附圖來更加充分地描述發(fā)明構(gòu)思,在附圖中示出了示例性實(shí)施例。
[0039]圖1是用于解釋光線跟蹤的示圖。
[0040]如圖1中所示,三維(3D)模型可包括:光源80、第一對(duì)象31、第二對(duì)象32和第三對(duì)象33。雖然為了便于解釋,第一對(duì)象31、第二對(duì)象32和第三對(duì)象33中的每個(gè)對(duì)象在圖1中看起來像二維(2D)對(duì)象,但是第一對(duì)象31、第二對(duì)象32和第三對(duì)象33中的每個(gè)對(duì)象均是3D對(duì)象。
[0041]在這種情況下,可以假定第一對(duì)象31具有大于0的反射比和大于0的折射率,且第二對(duì)象32和第三對(duì)象33中的每個(gè)對(duì)象具有等于0的反射比和等于0的折射率。S卩,可以假定第一對(duì)象31反射光且折射光,而第二對(duì)象32和第三對(duì)象33不反射光也不折射光。
[0042]在圖1的3D模型中,渲染設(shè)備(例如,光線跟蹤設(shè)備)可確定視點(diǎn)10以產(chǎn)生3D圖像,并可根據(jù)確定的視點(diǎn)10確定像平面15。
[0043]—旦視點(diǎn)10和像平面15被確定,則光線跟蹤設(shè)備100可產(chǎn)生來自視點(diǎn)10的針對(duì)像平面15的每個(gè)像素的光線。
[0044]例如,如圖1中所示,當(dāng)像平面15具有4*3的分辨率時(shí),光線跟蹤設(shè)備100可產(chǎn)生針對(duì)12個(gè)像素中的每個(gè)像素的光線。
[0045]現(xiàn)在將解釋僅僅針對(duì)一個(gè)像素(例如,像素A)的光線。
[0046]參照?qǐng)D1,從視點(diǎn)10針對(duì)像素A產(chǎn)生主光線40。主光線40穿過3D空間并到達(dá)第一對(duì)象31。第一對(duì)象31可包括一組預(yù)定的單元區(qū)域(以下,稱為圖元(primitive)),圖元可以是諸如三角形或四邊形的多邊形。下面將假設(shè)圖元是三角形來進(jìn)行解釋。
[0047]可以在主光線40與第一對(duì)象31之間的擊中點(diǎn)產(chǎn)生陰影光線50、反射光線60和折射光線70。在這種情況下,陰影光線50、反射光線60和折射光線70被稱為次生光線。
[0048]陰影光線50從擊中點(diǎn)產(chǎn)生并指向光源80。反射光線60以與主光線40的入射角對(duì)應(yīng)的角度產(chǎn)生并根據(jù)第一對(duì)象31的反射比被分配權(quán)重。以與第一對(duì)象31的折射率和主光線40的入射角對(duì)應(yīng)的角度產(chǎn)生折射光線70,并根據(jù)第一對(duì)象31的折射率分配折射光線70的權(quán)重。
[0049]光線跟蹤設(shè)備100確定擊中點(diǎn)是否通過陰影光線50暴露于光源80。例如,如圖1中所示,當(dāng)陰影光線50遇見第二對(duì)象32時(shí),可在產(chǎn)生陰影光線50的擊中點(diǎn)形成陰影。
[0050]另外,光線跟蹤設(shè)備100確定折射光線70和反射光線60是否到達(dá)另一對(duì)象。例如,如圖1中所示,在折射光線70行進(jìn)的方向上不存在對(duì)象,而反射光線60到達(dá)第三對(duì)象33。因此,光線跟蹤設(shè)備100檢查第三對(duì)象33的擊中點(diǎn)