两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用隱式幾何體進(jìn)行3d圖形渲染的制作方法

文檔序號:6540093閱讀:198來源:國知局
用隱式幾何體進(jìn)行3d圖形渲染的制作方法
【專利摘要】各方面涉及在3D場景中對光線進(jìn)行追蹤,所述場景包括通過或用隱式幾何體定義的對象。在示例中,誘捕元素定義其中存在隱式幾何體的3D空間的一部分。當(dāng)發(fā)現(xiàn)光線與誘捕元素相交時,執(zhí)行誘捕元素程序。所述誘捕元素程序可以包括使光線行進(jìn)穿過3D體積和針對所述光線的每個當(dāng)前3D位置對定義所述隱式幾何體的函數(shù)進(jìn)行求值。檢測到的與所述隱式幾何體的相交可以被發(fā)現(xiàn)與針對同一條光線的與顯式定義的幾何體的多次相交并行,并且對這些與所述光線的相交進(jìn)行描述的數(shù)據(jù)可以被存儲并被求解。
【專利說明】用隱式幾何體進(jìn)行3D圖形渲染

【技術(shù)領(lǐng)域】
[0001]以下內(nèi)容涉及光線追蹤,并且在特定應(yīng)用中涉及使用位移幾何體的計算機圖形的光線追蹤。

【背景技術(shù)】
[0002]用光線追蹤對來自3D場景描述的逼真2D圖像進(jìn)行渲染在計算機圖形學(xué)【技術(shù)領(lǐng)域】內(nèi)是眾所周知的。光線追蹤通常涉及獲得由幾何形狀組成的場景描述,這些幾何形狀對場景中的結(jié)構(gòu)的曲面進(jìn)行描述。從一個視點(“攝像機”)追蹤虛擬光線進(jìn)入該場景;發(fā)出每條光線行進(jìn)穿過2D展示的對應(yīng)像素,該光線會對該像素產(chǎn)生影響。對光線進(jìn)行與幾何形狀的相交測試以對每條光線的最近的交點(如果有的話)進(jìn)行標(biāo)識。
[0003]這些幾何體形狀可以由多個圖元組成,如三角形圖元。使用三角形圖元展示形狀提供了一種可以被某些光線追蹤渲染器輕易消耗掉的展示,并且可以根據(jù)多種算法完成對光線進(jìn)行與三角形的相交測試。然而,對于高質(zhì)量的渲染,例如,為了從虛擬3D場景中產(chǎn)生HD分辨率圖像,如對于高質(zhì)量視頻游戲或動畫而言,精細(xì)的對象模型是有益的。與其他展示相比,僅使用三角形圖元定義的精細(xì)對象模型會消耗大量內(nèi)存。例如,僅使用三角形圖元展示對象的光滑曲面通常將比基于樣條的展示消耗比較更大的內(nèi)存。另一個示例是景觀的地形特征。例如,如許多精細(xì)特征所需要的,僅使用三角形圖元展示實際的山脈會是內(nèi)存密集的。
[0004]位移貼圖是一種可以用來對這些情景進(jìn)行定址的技術(shù)。位移貼圖是指在一個或多個方向上對所定義的幾何體數(shù)據(jù)進(jìn)行移位,從而使得根據(jù)位移策略對最終用來對3D場景進(jìn)行渲染的幾何體進(jìn)行修改。可以認(rèn)為本幾何體是經(jīng)位移的幾何體。在光線追蹤中,使用經(jīng)位移幾何體的渲染涉及到對位移幾何體進(jìn)行相交測試。這與凹凸貼圖形成對照,凹凸貼圖涉及對光線進(jìn)行與源幾何體的相交測試,并且在標(biāo)識出交點后,可以執(zhí)行凹凸貼圖過程。因此,凹凸貼圖需要更少的相交測試的計算,因為對光線進(jìn)行與簡化的源幾何體的相交測試而不進(jìn)行與可能具有更多圖元的位移幾何體的相交測試。然而,凹凸貼圖允許實現(xiàn)更有限的行為集合。


【發(fā)明內(nèi)容】

[0005]在一個方面中,一種對光線進(jìn)行與隱式曲面的相交測試的方法包括使光線進(jìn)入包圍3D體積的殼體的曲面。該殼體定義了隱式定義的幾何體在該殼體內(nèi)的最大范圍。該方法包括沿著光線的路徑迭代地使光線當(dāng)前的3D位置步進(jìn)穿過該殼體定義的3D體積。對于每個當(dāng)前的3D位置而言,光線當(dāng)前的3D位置投射到該殼體包圍的顯式定義的曲面上的當(dāng)前2D位置上,并且使用該顯式定義的曲面上的當(dāng)前2D位置產(chǎn)生當(dāng)前3D位置處的隱式定義的幾何體的數(shù)據(jù)。使用所產(chǎn)生的數(shù)據(jù)將光線表征為或者碰撞或者錯過當(dāng)前3D位置處的隱式定義的幾何體。光線數(shù)據(jù)結(jié)構(gòu)可以存儲為檢測到的與隱式定義的幾何體相交而產(chǎn)生的數(shù)據(jù)??梢允紫仍趨⒖甲鴺?biāo)系中表達(dá)該相交,并且將其轉(zhuǎn)換到整體坐標(biāo)系上以便與其他檢測至Ij的相交進(jìn)行比較。
[0006]包圍元素可以圍住該殼體??梢杂脴?biāo)記對該包圍元素進(jìn)行標(biāo)識,該標(biāo)記指示應(yīng)使用隱式幾何體相交遍歷該包圍元素。步進(jìn)的步長可以不同??梢曰诠饩€微分或細(xì)節(jié)層次指示設(shè)置步長??梢栽诎鼑貎?nèi)定義體積排斥元素的集合,每個體積排斥元素排斥該包圍元素與該隱式幾何體的范圍之間的3D體積的一部分??梢栽谂c執(zhí)行步驟過程中定義體積排斥元素集合并聯(lián)合用于3D場景的加速結(jié)構(gòu)對其進(jìn)行存儲。這些是以下詳細(xì)描述中所包括的示例方面。

【專利附圖】

【附圖說明】
[0007]圖1描繪了與美術(shù)師提供的向量相關(guān)聯(lián)的顯式定義的幾何體元素的示例,這些向量用于對光線進(jìn)行與隱式定義的曲面相交測試的方法中;
[0008]圖2描繪了基于根據(jù)圖1的美術(shù)師提供的向量而定義的殼體;
[0009]圖3描繪了使光線遍歷使用顯式幾何體和隱式幾何體定義的3D場景的示例過程;
[0010]圖4描繪了一種使光線遍歷可以包含隱式定義的幾何體的3D體積的示例方法;
[0011]圖5描繪了帶有包圍元素和誘捕元素的加速結(jié)構(gòu);
[0012]圖6描繪了被誘捕元素包圍的示例殼體;
[0013]圖7A描繪了圖6的示例殼體的子體積;
[0014]圖7B描繪了可以用來定義該示例殼體的子體積的雙線性面片;
[0015]圖8描繪了一組可以用來定義該示例殼體的子體積的形狀;
[0016]圖9描繪了遍歷子體積和將光線當(dāng)前的3D位置投射到2D位置上以便確定一個或多個隱式幾何體特征的示例;
[0017]圖10描繪了包圍元素內(nèi)的隱式定義的最終幾何體曲面的示例;
[0018]圖11描繪了基于圖10的最終幾何體曲面在包圍元素內(nèi)形成的體積排斥元素的示例;
[0019]圖12描繪了幾何體的實例被圍在誘捕元素內(nèi)的情況
[0020]圖13描繪了幾何體程序的預(yù)執(zhí)行的過程或隱式幾何體定義數(shù)據(jù)的其他求值以便確定最終幾何體的范圍;
[0021]圖14描繪了在3D空間中重疊的包圍元素內(nèi)的相交測試的過程;
[0022]圖15描繪了誘捕元素設(shè)置和轉(zhuǎn)換過程;
[0023]圖16描繪了一個不例系統(tǒng),其中可以實現(xiàn)所披露的各方面;
[0024]圖17描繪了可以包括在根據(jù)圖16的系統(tǒng)實現(xiàn)方式內(nèi)的有界函數(shù)電路的示例;
[0025]圖18描繪了可以在其中執(zhí)行光線路徑的多個部分的并行相交測試的相交消歧的示例過程;
[0026]圖19描繪了吞吐量計算單元的示例操作;以及
[0027]圖20描繪了實施意識到服務(wù)質(zhì)量的吞吐量計算的示例。

【具體實施方式】
[0028]可以使用向量位移來實現(xiàn)經(jīng)位移的幾何體。向量位移允許任意向量或向量控制場景幾何體的元素或其一部分的位移。在一些實現(xiàn)方式中,向量位移允許完全任意地對幾何體的任一元素進(jìn)行移位。例如,可以在任意方向上對幾何體的元素移位任意量值。因此,向量位移提供了對位移的高度控制,但提出了一項比較困難的渲染任務(wù)。
[0029]在此處的一些方面中,隱式地將位移限制在一定界限內(nèi),該界限基于一個或多個預(yù)定義向量而設(shè)置,在該界限中可以為這些向量設(shè)置最大位移。在一個示例方法中,美術(shù)師提供的向量可以與對源幾何體進(jìn)行定義的頂點相關(guān)聯(lián)。美術(shù)師可以是任何人、機器或生成向量的過程。該術(shù)語用來將這些向量與可能與源幾何體相關(guān)聯(lián)的其他向量,如可以與源幾何體的頂點和圖元相關(guān)聯(lián)的法線,區(qū)分開。針對2D曲面上的任意點,可以將位移限制成沿著通過內(nèi)插與該2D曲面相關(guān)聯(lián)的美術(shù)師提供的兩個或更多個向量而確定的向量。因此,完全通用的位移可以被限制到由內(nèi)插向量和最大位移極限確定的分析結(jié)果。
[0030]為了基于源幾何體的給定元素來確定位移幾何體,美術(shù)師提供的針對兩個或更多個對源幾何體的元素進(jìn)行定義的頂點的向量可以用來控制如何或者以另外的方式用于對源幾何體的元素上的具體位置的可能的位移的限制進(jìn)行定義。可以根據(jù)某個過程和根據(jù)所確定的控制向量對源幾何體進(jìn)行移位。然后位移幾何體可以用于光線相交測試中,和視情況用于其他目的。
[0031]本披露的一些方面涉及通過其可以對源幾何體進(jìn)行移位的示例性系統(tǒng)和過程以及可以在對位移幾何體進(jìn)行相交測試中使用的技術(shù)。
[0032]圖1描繪了一個與幾何法線相關(guān)聯(lián)的三角形圖元10,(該圖元進(jìn)而可以由形成該圖元的卷繞順序的頂點和那些頂點在空間中的位置定義(這些頂點的位置建立了一個具有法線方向的平面,并且慣例建立了法線點沿著該法線方向的哪個方向)。在圖1中,形成圖元10的頂點還與美術(shù)師提供的向量13-15相關(guān)聯(lián)。在此,“美術(shù)師提供的”是指這種概念:這些向量不需要定義圖元10的曲面或位置或其與其他圖元(如圖元網(wǎng)格)的關(guān)系。而是根據(jù)下述技術(shù)使用這些向量。
[0033]圖2描繪了圖元網(wǎng)格18 (例如,看圖元網(wǎng)格的橫截面粗糙地定義了一個球體)。對圖元10連同美術(shù)師提供的向量14和15進(jìn)行標(biāo)識。在這些美術(shù)師提供的向量14和15之間示出了內(nèi)插向量16。形成該球體的圖元的美術(shù)師提供的向量用來共同定義一個殼體20。將殼體20描繪成光滑的形狀;然而,將通過是否以及將原始圖元中的每個圖元細(xì)分到什么程度而將殼體20分面到可確定的程度。在一個示例中,沒有對這些圖元進(jìn)行細(xì)分,并且殼體20針對每個原始圖元將具有一個小平面。在其他示例中,每個圖元在殼體20內(nèi)將具有對應(yīng)的多個小平面。根據(jù)以下披露,根據(jù)示例殼體20的殼體可以用來促進(jìn)光線追蹤隱式定義的幾何體。位移幾何體提供根據(jù)本披露的隱式幾何體的示例。在此,隱式幾何體包括在以某種方式用來產(chǎn)生最終幾何體曲面之間的“運行時間”之前存儲幾何體數(shù)據(jù)集的方法。在一個示例中,函數(shù)可以與圖元10相關(guān)聯(lián),并且可以基于在運行時間期間產(chǎn)生的一個或多個輸入來對該函數(shù)進(jìn)行求值,以便對在具體體積內(nèi)或在3D空間內(nèi)的一點處對最終幾何體的存在進(jìn)行求值。
[0034]圖3對如何在具有隱式定義的和顯式定義的幾何體的3D場景內(nèi)追蹤光線的概述進(jìn)行了描繪。在步驟302,確定對穿過3D空間內(nèi)的體積的一條或多條光線進(jìn)行追蹤。這種體積可以是3D場景的整體或其一部分。例如,可以通過在對圖像進(jìn)行渲染過程中發(fā)出光線來實施這種確定。在步驟205,這種一條或多條光線開始(或繼續(xù))遍歷加速結(jié)構(gòu)。該加速結(jié)構(gòu)包括多個元素的圖表,每個元素包圍該3D場景的對應(yīng)部分。對該圖表的遍歷允許對最終的幾何體子集進(jìn)行標(biāo)識,針對該幾何體對這條或這些條光線進(jìn)行相交測試。在一些實現(xiàn)方式中,這種遍歷不按光線在場景中行進(jìn)的順序進(jìn)行。舉例來講,可以對每條光線進(jìn)行廣度優(yōu)先測試,可以對光線進(jìn)行分組和重新分組以便根據(jù)標(biāo)準(zhǔn)進(jìn)行測試,并且一起發(fā)出的光線的遍歷可以不一起開始。因此,在典型用法中,給定光線可以具有不按距離順序標(biāo)識的候選相交,并且應(yīng)該對這種相交進(jìn)行進(jìn)一步的處理以便最終標(biāo)識出該光線最近的相交。
[0035]在207,該遍歷引起對該光線進(jìn)入的一個或多個元素進(jìn)行標(biāo)識,并且因此需要對其進(jìn)行進(jìn)一步的處理以確定那兒是否存在每條這種光線的相交。在209,確定該元素是否為誘捕元素。誘捕元素可以具有與其他加速結(jié)構(gòu)元素相同的形狀,但可以與將其狀態(tài)指示為誘捕元素的標(biāo)記相關(guān)聯(lián)。圖5描繪了具有非誘捕元素(例如,包圍元素303、305、307、315和316)和誘捕盒元素309-313兩者的加速結(jié)構(gòu)。顯示這些元素中的每個元素具有一條與至少一個其他元素的連接,并且將位于3D空間內(nèi)。一些實現(xiàn)方式可以具有單種誘捕元素類型;其他實現(xiàn)方式可以具有多種誘捕元素類型。這種實現(xiàn)方式可以具有被分配用于指示誘捕元素類型的多個位元。在一些示例中,指示該元素為誘捕元素致使執(zhí)行誘捕元素程序211。當(dāng)實現(xiàn)方式包括多種誘捕元素類型時,可以針對每種類型執(zhí)行不同的誘捕元素程序。誘捕元素還可以存儲在單獨的加速結(jié)構(gòu)內(nèi),可以從一個包圍顯式定義的幾何體單獨地/附加地對該加速結(jié)構(gòu)進(jìn)行遍歷。在此,誘捕元素類型涉及當(dāng)進(jìn)入該誘捕元素時應(yīng)遵循什么程序或不同的計算協(xié)議。例如,可以提供誘捕元素以非均勻有理B樣條(NURBS)曲面或細(xì)分曲面進(jìn)行求值,從而確定細(xì)節(jié)層次(L0D)、執(zhí)行運動模糊計算等等。如以下將進(jìn)一步解釋的,加速結(jié)構(gòu)可以包含用于不同目的的多個元素。例如,誘捕元素309-311可以圍住同一幾何體的不同細(xì)節(jié)層次的展示。如以下解釋的,本披露的一些方面提供可以選擇性地遍歷加速結(jié)構(gòu)的測試儀電路(諸如在沒有發(fā)出被遍歷光線的通用可編程計算單元或程序的干涉的情況下)。
[0036]如果該元素不是誘捕元素,則在215,確定該元素是否直接包圍幾何體(例如,其是同類加速結(jié)構(gòu)中的葉節(jié)點)。如果沒有,則在205,繼續(xù)對后續(xù)元素進(jìn)行遍歷(例如,之前標(biāo)識的元素的子元素)。如以下解釋的,對引用計數(shù)進(jìn)行更新(233)。如果存在直接被包圍的幾何體,則在217,對該幾何體進(jìn)行與這條或這些條光線的相交測試,并且在219,輸出這種測試的結(jié)果。相交測試的結(jié)果可以包括用于圖元與每一條或每多條光線相交的標(biāo)識符、到交點的距離、為相交曲面確定的參數(shù)坐標(biāo)、它們的某種組合、或其他數(shù)據(jù)及其組合。
[0037]在使用誘捕元素中,徹底完成光線的遍歷會涉及創(chuàng)建多個不同的光線段,用對應(yīng)的不同光線數(shù)據(jù)結(jié)構(gòu)定義每個光線段。引用計數(shù)可以保持在每個誘捕元素內(nèi)并且還橫跨所使用的所有光線段以徹底追蹤給定的光線(例如,沿著光線的路徑可能有不同的原點和/或終點的光線)。例如,誘捕元素可以具有與3D場景的主加速結(jié)構(gòu)分離開的加速結(jié)構(gòu),該光線段可以位于該加速結(jié)構(gòu)內(nèi)若干個元素內(nèi);為該誘捕元素求解了引用計數(shù)之后,可以完成該光線段,但可能沒有完成整體光線(該光線段是其一部分)。
[0038]由于已經(jīng)對每條光線的其他交點進(jìn)行了標(biāo)識,所以在221,可以對針對每條光線追蹤的一個交點或多個交點進(jìn)行更新。例如,如果對比之前標(biāo)識的最近交點更近的交點進(jìn)行了標(biāo)識,則保持新的最近交點來支持(in favor of)前一個交點。在223,根據(jù)該遍歷對用于這些光線中的每條光線的一個或多個引用計數(shù)進(jìn)行更新。具體地,可以為每條光線保持計數(shù),該計數(shù)對有多少個加速結(jié)構(gòu)元素內(nèi)當(dāng)前存在光線進(jìn)行追蹤(其中多個段用于一條光線,然后可以保持和最終求解分布式引用計數(shù))。例如,當(dāng)完成了光線與元素的測試時,計數(shù)遞減,但如果指示該光線用于針對子元素的測試,則計數(shù)遞增。達(dá)到零的計數(shù)指示光線已經(jīng)完成了遍歷(取決于實現(xiàn)方式,盡管該光線與所有幾何體的測試可能還沒有完成)。
[0039]返回209和211,誘捕元素可以用來指示在該誘捕元素包圍的3D體積內(nèi)存在隱式定義的幾何體。關(guān)于圖3以后的圖披露了多個過程和系統(tǒng)方面。關(guān)于圖3的剩余部分,誘捕元素程序的輸出可以包括對光線與幾何體(隱式或顯式)的最近交點的指示;當(dāng)最近的交點是所希望的時,這定義了需要對光線進(jìn)行追蹤的最大距離。如以下解釋的,該光線還可以與最小距離信息相關(guān)聯(lián),其可以用來排斥加速結(jié)構(gòu)元素或幾何體。這些交點最終會饋送到過程部分213內(nèi)。在218,如果完成了相交測試,則在225,可以對一個或多個交點進(jìn)行標(biāo)識用于著色,并且在227,可以執(zhí)行著色程序代碼。在一些實現(xiàn)方式中,可以為單個交點提供不只一個交點值,并且在229,可以選擇這些值其中之一用于用作在231出現(xiàn)的子光線發(fā)射的原點。例如,如以下解釋的,可以為反射光線而不是折射光線選擇不相同的交點值。
[0040]圖4描繪了用于對光線和隱式幾何體之間的交點進(jìn)行標(biāo)識的過程的第一示例。在一個不例中,發(fā)現(xiàn)相交的誘捕兀素包圍如關(guān)于圖1和圖2所披露的殼體(以及用于該殼體的源幾何體)。在245,找出每一條或每多條光線與殼體表面之間的交點。從而在確定這條或這些條光線將要進(jìn)入該誘捕元素之后,可以在一個或多個點處將光線投射到該殼體的曲面上。
[0041]圖6描繪了包圍著分面殼體323的誘捕元素534??梢酝ㄟ^沿著美術(shù)師提供的向量(圖1和圖2)定義的方向突出圖元集合來形成分面殼體323。例如,可以突出圖元332來定義殼體323的段324。因此,在一種方法中,殼體的小平面與源幾何體的原始圖元之間存在1:1的對應(yīng)。圖7A描繪了如由源幾何體的圖元332和將圖元332連接到小平面325上的雙線性面片的集合構(gòu)成的段324。例如,如圖7B中所示,雙線性面片350分別將圖332的頂點355和356連接到小平面325的頂點358和359上。使用雙線性面片定義每個段的邊通過允許這些段的邊相互不平行來允許這些段彼此不平行。圖8描繪了殼體的段的一種替代性構(gòu)造。在圖8的示例中,提供了一組共同對該段進(jìn)行定義的包圍形狀365-367 (例如,四面體)。
[0042]圖6還描繪了可以對殼體323的一段的入口 330進(jìn)行追蹤,該入口與出口點331對應(yīng)。段324具有入口點339和出口點340。在一些情況下,光線可以進(jìn)入該殼體但不離開該殼體,在該殼體內(nèi),該光線將首先與源幾何體圖元相交。這些入口點中的任意入口點(包括該殼體的第一入口點)和進(jìn)入的每個段可以被認(rèn)為是一個入口點或與殼體曲面相交。關(guān)于殼體的每個段的入口點,當(dāng)光線進(jìn)入該殼體的不同段時進(jìn)行追蹤允許特定幾何體過程與每個圖元相關(guān)聯(lián)并且執(zhí)行該過程以對該殼體的那個段內(nèi)的隱式幾何體進(jìn)行求值。
[0043]返回圖4,這些光線然后步進(jìn)穿過該殼體圍住的體積以便為每條光線建立當(dāng)前3D位置。該步進(jìn)具有一定間隔(ε )。在239,可以對ε進(jìn)行設(shè)置。舉例來講,可以根據(jù)各種輸入對ε進(jìn)行設(shè)置,如細(xì)節(jié)層次指示符235或光線微分237。ε可以是固定的或可變的;圖4包括可變ε實現(xiàn)方式的描述。對于圖4的剩余部分,描述了單條光線,盡管可以并行處理多條光線。在247,使該光線步進(jìn)。在248,確定該光線是否在該殼體內(nèi)的體積排斥元素的曲面處。體積排斥元素定義該殼體內(nèi)的空間的子部分,在該子部分內(nèi)將不存在隱式幾何體。關(guān)于圖10和11,提供了體積排斥元素的進(jìn)一步的描述。簡言之,可以通過確定該殼體內(nèi)的隱式幾何體的最終范圍并且然后對圍住沒有幾何體的空間區(qū)域的包圍體的集合進(jìn)行定義來對體積排斥元素進(jìn)行標(biāo)識。這些包圍體的大小可以不同,以便擬合在該隱式幾何體的最終范圍的不同部分內(nèi)。
[0044]如果該光線已經(jīng)進(jìn)入體積排斥元素內(nèi),則在249,確定來自該體積排斥元素的出口點,并且在250,該光線當(dāng)前的3D位置被遞增至該出口點,并且在248再次執(zhí)行該確定。如果該當(dāng)前3D位置沒有在體積排斥元素內(nèi),則在251,將該當(dāng)前3D位置投射到該圖元的曲面上,該曲面被投射用來定義該殼體的那個部分。圖9中描繪了這種投射的一個示例。圖9描繪了使光線335沿著該光線的行進(jìn)方向步進(jìn)了多次(以對當(dāng)前3D位置405進(jìn)行標(biāo)識),并且為每個當(dāng)前3D位置對圖元332上的相應(yīng)2D位置406進(jìn)行了標(biāo)識。可以將這些2D位置中的每個位置表達(dá)為例如參數(shù)坐標(biāo)對,或使用重心坐標(biāo)。這些2D位置可以用作到程序幾何體著色程序410的輸入,該著色程序執(zhí)行以便為這些2D位置中的每個位置產(chǎn)生隱式幾何體特征(共同用圖9中的415表示)。如關(guān)于圖3解釋的,可以基于每條光線的細(xì)節(jié)層次指示符設(shè)置步長。光線微分也可以用作對步長進(jìn)行設(shè)置的輸入。
[0045]設(shè)置步長是一種對光線前進(jìn)過程中使用的計算量進(jìn)行調(diào)整的方式。在某種意義上,可以基于給定隱式幾何體渲染所希望的細(xì)節(jié)程度來調(diào)整該計算量。然而,在其他情況下,可以通過在較大步長之間找出相交區(qū)域并且然后細(xì)化該相交來減少計算總量。在一些實現(xiàn)方式中,基于細(xì)節(jié)層次或光線微分,3D位置的區(qū)域可以對齊(snap)到同一 2D位置上。例如,即使將步長設(shè)置成一個大小,光線的若干個步進(jìn)也可以對齊來基于同一函數(shù)進(jìn)行求值。在另一個示例中,可以采取更大的步進(jìn),并且可以從該步進(jìn)末尾內(nèi)插一個或多個中間步進(jìn)。例如,當(dāng)細(xì)節(jié)層次低時,可以采取較大的步長,該2D曲面的較大區(qū)域可以全都求值到同一函數(shù)值,或者可以采取內(nèi)插值用于中間值,或這些選項的某種組合。
[0046]在一個示例中,這些2D位置還可以用作到函數(shù)的輸入,該函數(shù)輸出用于該2D位置的隱式幾何體的高度。在此,高度可以指沿著路徑的距離;這種路徑可以是線段??梢酝ㄟ^內(nèi)插美術(shù)師定義的向量(見圖1和圖2)定義該線段。在其他示例中,可以通過與源圖元相關(guān)聯(lián)的函數(shù)或程序或者其一部分來定義該路徑。當(dāng)實現(xiàn)方式沿著線段移位時,可以通過對3D空間內(nèi)該光線在該曲面上方的當(dāng)前高度與針對該2D位置而被求值的隱式幾何體函數(shù)生成的高度進(jìn)行比較來檢測相交。在一個示例中,這種比較可以包括減法。當(dāng)減法的結(jié)果改變符號時,則可以得出以下結(jié)論:該光線在之前和當(dāng)前步進(jìn)之間的某個地方已經(jīng)與該隱式幾何體相交。這些操作是圖4中描繪的操作的示例,包括在253,運行幾何體過程來確定所投射的當(dāng)前光線點的幾何體特征和比較255。該減法實施了重疊確定257。如果沒有重疊(例如,該光線的高度仍然比給定點處的隱式幾何體更大),則該過程返回269以執(zhí)行該光線的另一步進(jìn)。如果檢測到重疊(例如,減法結(jié)果的符號改變),則在259,可以進(jìn)行平分過程以便進(jìn)一步細(xì)化該交點。在261,可以對描述包含該交點的光線的間隔的一對3D位置進(jìn)行標(biāo)識。在263,可以返回這些點作為展示該光線與隱式幾何體的交點。由于比該相交隱式幾何體更近的幾何體可能有待于被測試,所以有待確定此交點是否為最近的交點。
[0047]不是比較高度,可以使用碰撞檢測算法來對當(dāng)前3D位置與該隱式幾何體進(jìn)行比較。可以將該當(dāng)前3D位置建模成具有一定范圍的球體或形狀。可以由距離層次信息、光線微分或它們的某種組合來控制此范圍。在一些應(yīng)用中,進(jìn)行相交測試的隱式幾何體可以源自體數(shù)據(jù)集。例如,可以將該體數(shù)據(jù)集表達(dá)為均勻或?qū)蛹夡w元結(jié)構(gòu)內(nèi)的數(shù)據(jù)。例如,數(shù)據(jù)可以源自3D掃描技術(shù)(如醫(yī)學(xué)成像掃描儀,如計算機斷層(CT)掃描儀)和類似技術(shù)。
[0048]圖10描繪了展示隱式定義的幾何體的最終曲面的曲線430(出于清晰性,以2D示出)。包圍元素429圍住此幾何體(如果提供,則為殼體和誘捕元素)。關(guān)于誘捕元素,誘捕元素的大小和總體維度會受到對誘捕元素的形式(例如,軸對準(zhǔn)盒、正方形、球體等)的限制的影響。這種限制可能影響對于給定殼體能夠?qū)崿F(xiàn)的擬合緊密性。圖11描繪了對最終幾何體430與包圍元素429之間的空間進(jìn)行填充的排斥元素(特別標(biāo)識的431和432)。還可以根據(jù)對可以用于這些元素的形狀的限制來確定這些排斥元素的大小并且對其進(jìn)行定位。進(jìn)一步的限制可能涉及專用于這些元素的內(nèi)存量。例如,可能要求元素的最小大小,或可以對存儲對具體誘捕元素內(nèi)的排斥元素進(jìn)行定義的數(shù)據(jù)所需的最大內(nèi)存大小進(jìn)行設(shè)置??梢曰趯⒁獙嵤┎竭M(jìn)算法的計算平臺的特征作出這些決定,包括內(nèi)存帶寬和大小特征、功耗限制、對等待時間的要求、吞吐量等。圖13描繪了一個示例過程,可以通過該過程產(chǎn)生體積排斥元素。在451,對隱式幾何體的一部分進(jìn)行標(biāo)識(例如,程序上定義的位移)??梢栽陬A(yù)執(zhí)行環(huán)境下進(jìn)行這種標(biāo)識,在預(yù)執(zhí)行環(huán)境下可以將源幾何體與一個或多個函數(shù)、一個或多個程序、或其他當(dāng)需要時(例如,用于相交測試)將如何確定隱式幾何體的定義一起提交。在455,視情況對這些函數(shù)、程序等進(jìn)行求值或者執(zhí)行,以便獲得最終幾何體范圍。在一些情況下,這種最終幾何體范圍將取決于僅在運行時間期間可用的信息,或更普遍地,取決于尚不可用的信息(例如,該求值取決于在查找操作過程中檢索(retrieve)到的值)。在這種情況下,該源幾何體、函數(shù)或程序可以與可以從該查找預(yù)料到的一系列值的信息相關(guān)聯(lián)。在其他實現(xiàn)方式中,可以提供對該查找返回的值進(jìn)行描述的表達(dá)式,并且可以基于這些來源的聯(lián)合求值來對隱式幾何體的最終范圍進(jìn)行求值。
[0049]在457,基于此求值,在該最終幾何體的最大范圍內(nèi)和在殼體(見圖6)內(nèi)定義排斥體積。排斥體積的實現(xiàn)方式的示例包括體元結(jié)構(gòu),這些體元結(jié)構(gòu)可以是分層的,如八叉樹。在一種替代性實現(xiàn)方式中,可以忽略殼體,并且將基于將包圍該最終幾何體的誘捕元素的范圍來定義排斥體積。如果忽略該殼體,則將通常預(yù)料到將需要大量體積排斥元素,因為誘捕元素將不會像該殼體那樣緊密地包圍該最終幾何體。在459,存儲這些排斥體積的定義以供稍后訪問。除了在預(yù)通過中定義排斥體積以外,還可以基于對隱式幾何體曲面進(jìn)行描述的函數(shù)的特性來排斥體積部分。
[0050]圖12描繪了關(guān)于誘捕元素可以如何用于隱式幾何體的相交測試并且更普遍地用于使3D空間的部分抽象化的更多細(xì)節(jié)。作為附加示例用法,誘捕元素可以用來使同一幾何對象的實例抽象化,即使它們沒有使用隱式幾何體。圖12給出了為幾何對象的樹的玩具示例,其中本幾何對象的實例405-407被對應(yīng)的誘捕元素431-433包圍。這些誘捕元素進(jìn)而可以被包圍體420 (見圖5)包圍。顯示實例431與實例432重疊。這種在3D場景下的重疊可以是這些樹實例的分支纏結(jié)的情況,從而使得它們占用了空間的重疊體積。在該場景中遍歷光線438。圖3描繪了使用誘捕元素程序211的過程;圖15描繪了誘捕元素程序211的示例。
[0051]在圖15中,當(dāng)光線遇到誘捕元素時,為了對該光線進(jìn)行與該誘捕元素內(nèi)的幾何體的相交測試,在461,將該光線轉(zhuǎn)換到該誘捕元素參考的坐標(biāo)系。在463,執(zhí)行一個或多個過程?;谠撜T捕元素的特征,這些過程可以顯著不同。例如,可以執(zhí)行隱式幾何體過程?;蛘撸梢詫υ撜T捕元素內(nèi)包圍的幾何體進(jìn)行測試。最后,在465,產(chǎn)生結(jié)果數(shù)據(jù)。舉例來講,基于所測試的幾何體或執(zhí)行的過程,此結(jié)果數(shù)據(jù)是發(fā)現(xiàn)的最近交點。作為誘捕元素內(nèi)的相交測試的結(jié)果,可以產(chǎn)生各種數(shù)據(jù),包括重心坐標(biāo)、到該交點的距離、3D空間內(nèi)對相交點進(jìn)行標(biāo)識的點或該交點位置的另一種表達(dá)式。
[0052]當(dāng)此數(shù)據(jù)包含位置信息時,可以在該誘捕元素參考的坐標(biāo)系內(nèi)對其進(jìn)行表達(dá)。在467,將該位置信息和相關(guān)聯(lián)的信息從該參考坐標(biāo)系轉(zhuǎn)換到整體坐標(biāo)系上(或其他有待執(zhí)行的操作共用的另一個坐標(biāo))??梢粤⒓磮?zhí)行這種轉(zhuǎn)換,但在另一個實現(xiàn)方式中,可以提供將允許在稍后時間使該轉(zhuǎn)換生效的轉(zhuǎn)換矩陣。例如,結(jié)果數(shù)據(jù)結(jié)構(gòu)可以包含該參考坐標(biāo)系和轉(zhuǎn)換矩陣內(nèi)的結(jié)果數(shù)據(jù)。稍后在相交消岐或分類過程的過程中,可以將該轉(zhuǎn)換矩陣應(yīng)用到該結(jié)果數(shù)據(jù)上。當(dāng)執(zhí)行該相交測試的功能單元可能不具有執(zhí)行矩陣轉(zhuǎn)換能力或不能高效地執(zhí)行這種轉(zhuǎn)換時,此實現(xiàn)方式可能是合適的。如果誘捕元素沒有參考整體坐標(biāo)系以外的坐標(biāo)系,則可能不需要轉(zhuǎn)換矩陣。
[0053]返回到圖12,在本圖中,光線起源于誘捕元素434和誘捕元素435兩者內(nèi)。在根據(jù)本披露的一些系統(tǒng)中,可以是以下情況:在確定光線438也與誘捕元素434 (和/或434內(nèi)的幾何體)相交之前,發(fā)現(xiàn)誘捕元素435 (和/或435內(nèi)的幾何體)與光線438相交(例如,如果每條光線在層級加速結(jié)構(gòu)的根部開始測試,則光線438會首先訪問誘捕元素435)。這種情況之所以會出現(xiàn)是由于一些相交測試的等待時間或測試的中間結(jié)果的遲延傳播的緣故,或者例如僅僅基于如何計劃該測試。因此,可以在實例431之前針對相交對實例432進(jìn)行求值,即使實例431的多個部分離光線438的原點更近。圖14描繪了一種對這些情況進(jìn)行解釋的相交測試的示例方法。
[0054]圖14描繪了在411產(chǎn)生與隱式幾何體相交測試的結(jié)果,并且在413產(chǎn)生對同一條光線與隱式幾何體進(jìn)行測試的結(jié)果。在圖14的過程中,存在多個可供給定光線使用的相交結(jié)果。更常見地,可能期望保持光線的單個最近交點,并且每次對該光線的相交結(jié)果進(jìn)行標(biāo)識,將其與該最近的交點進(jìn)行比較,并且保持該單個最近交點。在此,然而,在表達(dá)這些結(jié)果所在的分辨率下(例如,單個精確浮點),簡單的距離求值可能不足以立即區(qū)分出哪個交點最近,或者在其他情況下,可能存在具有不可相互區(qū)別開的距離的兩個交點。在這些情況下,一種提供可再現(xiàn)結(jié)果的方法會是重要的,即使存在不只一種“有效的”解決方案。在加速結(jié)構(gòu)元素(誘捕或規(guī)則的)的情況下,如果該元素的體積的任意部分與最小距離定義的范圍以及當(dāng)前最近的交點重疊,則將不排斥該加速元素進(jìn)入用于測試(加速結(jié)構(gòu)元素沒有建立光線的最近交點(即,最大值t))。
[0055]圖14描繪了在415確定多個相交結(jié)果中的任意兩個或更多個結(jié)果在無差別的距離處。在目前情況下可能存在一些所求值的明顯不是最近的幾何體交點的幾何體交點??梢耘懦膺@些交點;如果在圖14的過程之前執(zhí)行它們,則可以針對那些交點忽略確定415,但仍然會需要對重疊的加速結(jié)構(gòu)元素進(jìn)行標(biāo)識或保持用于測試。如果所有的幾何體相交結(jié)果在不同的相交距離處,則可以使用最近的交點(交點組)(在此,一組交點可以是例如按照對光線與曲面的相交進(jìn)行劃界返回的一對點,如從關(guān)于圖9討論的光線前進(jìn)返回的結(jié)果)。
[0056]在419,訪問與比較對象相比具有無差別的距離的每個對象(例如,加速結(jié)構(gòu)元素或圖元)的ID?;谶@些對象的ID,可以從進(jìn)一步的處理中排斥、或選擇一個或多個對象。在423,基于421對該光線的相交信息進(jìn)行更新。在425,對該光線的引用計數(shù)進(jìn)行更新。如果之前針對測試有指示,當(dāng)針對加速結(jié)構(gòu)元素的測試添加該光線的引用計數(shù)時,該光線的引用計數(shù)增加,并且當(dāng)被清除或當(dāng)從測試中排斥出元素時,其減少。
[0057]更加詳細(xì)地考慮421,如果加速結(jié)構(gòu)元素的標(biāo)識符指示其已經(jīng)進(jìn)入用于測試,則可以從進(jìn)一步的處理中排斥出該加速結(jié)構(gòu)元素??梢酝ㄟ^對該加速結(jié)構(gòu)元素的標(biāo)識符的至少一部分與所存儲的或與該光線相關(guān)聯(lián)的標(biāo)識符信息進(jìn)行比較來對此進(jìn)行確定。這種與該光線一起存儲的信息可以包括該加速結(jié)構(gòu)元素的在已經(jīng)被輸入用于該光線的標(biāo)識符序列中具有最高值的標(biāo)識符(例如,所有這些標(biāo)識符具有相對的順序,并且該光線保持最高順序元素的標(biāo)識)。可以關(guān)于光線440考慮一個特定示例。可以看到光線440首先進(jìn)入誘捕元素434。當(dāng)進(jìn)入該誘捕元素后,將為該誘捕元素建立最小值t。光線440還與誘捕元素435相交,但到該交點的距離不同于與誘捕元素434的交點。然而,與誘捕元素435的交點保持在誘捕元素434的體積內(nèi)也是這種情況。因此,在此情況下,可以重新進(jìn)入誘捕元素434或?qū)ζ溥M(jìn)行處理。所以在一種方法中,最小值t可以用來從重新測試中排斥出被不與另一元素重疊的包圍元素包圍的幾何體。
[0058]同一幾何體的實例可以遍布3D場景,其中每個實例被不同的誘捕元素圍住。每個誘捕元素包括世界空間坐標(biāo)位置(和/或范圍)。每個誘捕元素大小可以不同并且可以定向不同。例如,可以縮放和轉(zhuǎn)動誘捕元素。每個實例空間可以使用一個參考坐標(biāo)系。每個誘捕元素還可以包括關(guān)于有待應(yīng)用在光線上的轉(zhuǎn)換的信息,該轉(zhuǎn)換是為了在世界空間和該實例的參考坐標(biāo)系之間進(jìn)行平移。如上解釋,每個誘捕元素還可以包括對該誘捕元素內(nèi)的對象或其他數(shù)據(jù)的引用,例如,隱式幾何體和其他數(shù)據(jù)。在另一個示例中,加速結(jié)構(gòu)的每個元素可以具有一識符,并且展示誘捕元素封裝同一幾何體的加速結(jié)構(gòu)元素可以共同具有一定數(shù)量的位元??梢允占c這些不同實例元素相交的光線,并且其可以一起開始相交測試。當(dāng)每個誘捕元素具有對實例空間的引用時,則該引用可以用來收集將需要對所引用的實例空間進(jìn)行測試的光線。當(dāng)引用同一實例空間的元素共享標(biāo)識符的一部分時,該標(biāo)識符部分可以用來收集光線。
[0059]圖16描繪了可以實施本文披露的各方面的系統(tǒng)501。系統(tǒng)501包括一個可以具有一組核心的計算集群502,每個核心能夠執(zhí)行來自對應(yīng)獨立的指令流的指令。每個核心可以具有專用高速緩存并且可以與一個或多個其他核心共享次級高速緩存;可以實現(xiàn)其他高速緩存配置。例如,核心503和504每個具有專用LI高速緩存,分別為505和506。核心503和504可以共享L2高速緩存507。計算集群502可以從加速結(jié)構(gòu)存儲器509和從幾何體存儲器508中進(jìn)行讀取??梢詧?zhí)行各種算法來輔助計算集群502,如吞吐量計算單元515的渲染算法。計算單元515包括任務(wù)收集器521、多個光線/圖元相交測試單元520和多個光線/盒測試單元516。這些單元中的每個單元可以被配置成用于執(zhí)行一個或多個定義的相交算法。當(dāng)光線源自盒外時,可以實施光線/盒測試單元516從而使得它們產(chǎn)生從光線原點到與盒的交點的距離。當(dāng)該光線起源于該盒內(nèi)時,還可以實施光線/盒測試單元516從而使得它們返回該光線行進(jìn)到盒的出口點的距離(例如,光線438起源于誘捕元素435內(nèi),并且可以使光線/盒測試單元516返回到出口誘捕元素435的距離)。光線/盒測試單元為用于具體種類形狀的測試單元的示例??梢詾槠渌N類的形狀提供測試單元,或者除盒測試單元之外或者對其進(jìn)行替代。
[0060]在一些示例中,每個測試單元包括執(zhí)行給定相交算法的至少一部分的固定功能電路。示例圖元測試包括與三角形圖元的相交測試,如重心坐標(biāo)測試。被進(jìn)行相交測試的盒可以是例如軸對準(zhǔn)包圍盒。加速結(jié)構(gòu)測試的其他方法包括kd樹測試。除了這些相交測試單元以外,計算單元515可以包括一組(一個或多個)有限可編程性電路512,這些電路可以與對應(yīng)的測試單元相關(guān)聯(lián)或包括在任務(wù)收集器521內(nèi)。
[0061]每個相交測試單元可以使用對應(yīng)的本地光線數(shù)據(jù)存儲器514。作為具體示例,光線數(shù)據(jù)518包括多個光線定義數(shù)據(jù)集。每個光線定義數(shù)據(jù)集包括最小距離標(biāo)識(最小值t)。在一個示例中,如以上解釋的,該最小距離可以用來步進(jìn)穿過一組元素,而不必在同一過程中針對每一個步進(jìn)全都對它們進(jìn)行測試。還可以存儲最大距離標(biāo)識(最大值t),該標(biāo)識對該光線的最近當(dāng)前交點進(jìn)行標(biāo)識??梢源鎯﹃P(guān)于當(dāng)前最近交點的數(shù)據(jù),如交點的內(nèi)插變化、重心坐標(biāo)、以及圖元標(biāo)識符。通常,可以基于將針對光線執(zhí)行著色程序所需的數(shù)據(jù)選擇所存儲的數(shù)據(jù)(如果該數(shù)據(jù)涉及的交點是觸發(fā)著色程序執(zhí)行的交點)。當(dāng)交點使包圍盒元素(例如,誘捕元素)涉及到參考坐標(biāo)系時,可以存儲對整體和局部坐標(biāo)之間的映射進(jìn)行描述的轉(zhuǎn)換矩陣。
[0062]如上解釋的,任務(wù)收集器521形成計算分組(例如,可以一起被測試的光線分組)。光線分組可以對有待測試的加速結(jié)構(gòu)進(jìn)行標(biāo)識。在一些示例中,加速元素可以是對對應(yīng)LOD下的給定對象(或其一部分)進(jìn)行定義的元素。這些元素可以在重疊空間內(nèi)包圍這種不同的LOD幾何體。在一個實現(xiàn)方式中,這些元素可以是誘捕元素。光線可以與LOD標(biāo)識符、光線微分、擴展因數(shù)相關(guān)聯(lián),或可以存在另一種用于決定有待展示的幾何體所在的LOD的機制。有限可編程性電路可以選擇一個或多個收集,每個收集與對應(yīng)的有待將光線置入其內(nèi)的加速元素相關(guān)聯(lián)。例如,即使所測試的加速結(jié)構(gòu)元素可以具有多個子加速結(jié)構(gòu)元素,但該有限可編程電路僅選擇那些子加速結(jié)構(gòu)元素的一個子集。例如,可以選擇與具體細(xì)節(jié)層次(LOD)相關(guān)聯(lián)的加速結(jié)構(gòu)元素。在一些示例中,光線可以在兩個細(xì)節(jié)層次之間的過渡區(qū)內(nèi),并且可以將該光線添加到兩個收集上,從而使得在多個細(xì)節(jié)層次下的幾何體內(nèi)遍歷該光線。可以基于該有限可編程性電路的所做所為來對該光線的衰減進(jìn)行調(diào)整,如降低源自單條原始光線的多條光線中的每條光線的重要性。舉另一示例來講,有限可編程性電路可以忽略將光線添加到任何收集上,即使與父元素相交。因此,有限可編程性電路可以影響或控制光線的后續(xù)測試。
[0063]系統(tǒng)501還可以提供結(jié)果返回路徑511。在一些情況下,結(jié)果可能需要進(jìn)一步的處理,該進(jìn)一步的處理通過與生成引起該結(jié)果的任務(wù)的程序代碼不同的程序代碼執(zhí)行。然而在一些情況下,該進(jìn)一步的處理可以使用生成該任務(wù)的程序代碼共用的數(shù)據(jù)的某一部分。取決于計算集群502的架構(gòu)并且作為一個特定的示例,取決于從一個核心到另一個核心移動數(shù)據(jù)的效率(如跨不同的L2高速緩存507),結(jié)果返回路徑可以被配置成用于將結(jié)果返回至使用L2高速緩存507的核心,該高速緩存已經(jīng)存儲了有待在該進(jìn)一步的處理中使用的數(shù)據(jù)。在一些實現(xiàn)方式中,當(dāng)生成該任務(wù)時,目的標(biāo)識符可以與任務(wù)相關(guān)聯(lián),并且該目的標(biāo)識符可以用來將結(jié)果引導(dǎo)回該任務(wù)的來源時。
[0064]圖17描繪了一個或多個有限可編程性電路550的示例,這個或這些電路可以用來實現(xiàn)圖16中所描繪的有限可編程性電路512。一個或多個電路550可以包括多個預(yù)定義數(shù)學(xué)函數(shù)552和多個可編程函數(shù)實現(xiàn)方式554。這些預(yù)定義數(shù)學(xué)函數(shù)552可以包括可以針對這些函數(shù)的一個或多個獨立變量而被求值出不同值的函數(shù)集合。這種預(yù)定義數(shù)學(xué)函數(shù)可以包括根據(jù)提供到該有限可編程性電路的轉(zhuǎn)換矩陣的3D空間的矩陣轉(zhuǎn)換。在另一個示例中,可編程函數(shù)實現(xiàn)方式可以執(zhí)行或多次重復(fù)一個預(yù)定義操作或操作集合。
[0065]電路如何可以是有限可編程性的示例包括:電路能夠執(zhí)行有限數(shù)量的指令、或者以另外的方式需要在固定時間段完成;程序避免循環(huán)或分支;或電路沒有指令取出管線。在一個示例中,通過執(zhí)行穿過代碼段的多條路徑并且然后選擇結(jié)果或掩蔽不希望的結(jié)果來支持分支。當(dāng)該有限可編程性電路不支持指令取出時,可以通過控制路徑預(yù)加載指令集。如以上解釋的,可以提供有限內(nèi)存用于存儲這些指令,并且可以將其設(shè)計成用于支持執(zhí)行的最大等待時間或時間段(timeframe)。因此,有限可編程性電路可以結(jié)合測試單元工作,以便實現(xiàn)前進(jìn)、迭代、逐步求精、平分、逐次逼近法、位移、向量圖形、體積效應(yīng)等。
[0066]圖18描繪了在一個示例實現(xiàn)方式中的光線信息的總體流程。著色程序代碼580和著色程序代碼582每個可以發(fā)射光線;可以由光線數(shù)據(jù)結(jié)構(gòu)內(nèi)包含的數(shù)據(jù)定義這種光線。光線數(shù)據(jù)結(jié)構(gòu)內(nèi)的數(shù)據(jù)可以由著色程序代碼模塊產(chǎn)生,這些模塊可以使用API575提交該數(shù)據(jù)。例如,API575可以具有接受用于光線的數(shù)據(jù)集的光線發(fā)射調(diào)用。收集跟蹤函數(shù)584可以從這些光線數(shù)據(jù)結(jié)構(gòu)接收數(shù)據(jù)并收集每條新光線以便用一條或多條其他光線開始遍歷。發(fā)射光線與在收集中跟蹤該光線之間可以存在各種中間步驟或函數(shù)元素,并且圖18并非暗示直接鏈接。
[0067]可以發(fā)射或提交收集跟蹤函數(shù)584產(chǎn)生的光線收集以開始遍歷(例如,收集586和588)。相交測試函數(shù)590(在一個示例中,其可以通過圖元測試單元和加速結(jié)構(gòu)元素測試單元實現(xiàn))可以接收這些收集用于遍歷。對于其中有待遍歷隱式幾何體或?qū)ζ溥M(jìn)行相交測試的一個或多個實例而言,相交測試函數(shù)590可以激活隱式幾何體著色程序函數(shù)592。
[0068]相交測試函數(shù)590和隱式幾何體著色程序函數(shù)592各自都可以產(chǎn)生光線數(shù)據(jù)結(jié)構(gòu)更新,來自幾何體著色程序函數(shù)592的那些光線數(shù)據(jù)結(jié)構(gòu)更新被編號為594-596,來自相交測試函數(shù)590的那些光線數(shù)據(jù)結(jié)構(gòu)更新被編號為600-602。相交消岐函數(shù)606可以從這些來源(或其他來源,如果有的話)接收這些數(shù)據(jù)結(jié)構(gòu)更新,并且產(chǎn)生一個輸出,所述輸出對在進(jìn)一步的遍歷(尋找最近的交點)過程中將在其中對光線進(jìn)行追蹤(608)的光線收集進(jìn)行更新,和發(fā)起光線著色(609)(針對所標(biāo)識的最近交點),這會引起發(fā)射有待遍歷的進(jìn)一步的光線。產(chǎn)生數(shù)據(jù)結(jié)構(gòu)更新會是一種合適的實現(xiàn)方式,在該實現(xiàn)方式中,通過與相交測試590耦聯(lián)的有限可編程性或固定功能元素實現(xiàn)該幾何體著色程序函數(shù)或其至少某些部分。在這種實現(xiàn)方式中,可能不會針對該幾何體著色程序函數(shù)調(diào)用代碼的通用部分,或者代碼的這種通用部分可以設(shè)置該有限可編程性單元,但不執(zhí)行所有計算。圖18描繪了替代性實現(xiàn)方式的各方面,在該實現(xiàn)方式中,可以通過在通用計算元素上執(zhí)行的代碼實現(xiàn)幾何體著色程序函數(shù)592。在這種實現(xiàn)方式中,可以認(rèn)為幾何體著色程序函數(shù)592是著色程序代碼580和582的“同級”,因為如代碼580和582能做的一樣,可以響應(yīng)于光線相交而調(diào)用幾何體著色程序函數(shù)592,并且這種幾何體著色程序函數(shù)592的輸出會受到使用API575的光線發(fā)射調(diào)用的影響。因此,在光線完成相交測試后,可以使用與用于調(diào)用著色程序一樣的語義來調(diào)用幾何體著色程序函數(shù)592。然而,在相交測試的中間階段過程中運行幾何體著色程序函數(shù)592以便為對光線與隱式幾何體進(jìn)行測試產(chǎn)生結(jié)果??梢杂猛ㄟ^API575發(fā)射的新光線攜帶該測試的結(jié)果。因此,在對給定光線路徑進(jìn)行遍歷的整個過程中,可以發(fā)射多條不同的光線,并且可以在整個路徑上累積相交。一些實現(xiàn)方式可以使用該幾何體著色程序函數(shù)592對與引起該著色程序調(diào)用的光線相關(guān)聯(lián)的交點進(jìn)行比較,并且最終確定新標(biāo)識的交點是否距該光線路徑的原點更近,并且僅保持較近的交點。在其他實現(xiàn)方式中,測試單元520可以將存儲在本地化光線數(shù)據(jù)514內(nèi)的交點與到達(dá)光線數(shù)據(jù)結(jié)構(gòu)內(nèi)標(biāo)識的交點進(jìn)行比較,并且保持較近的交點。在這種實現(xiàn)方式中,通過對來自幾何體著色程序函數(shù)592和/或來自其自己的測試操作的交點進(jìn)行比較,測試單元520為其本地化光線數(shù)據(jù)514內(nèi)的最近交點保持當(dāng)前的候選者。
[0069]相交消岐函數(shù)606采取給定光線路徑的交點集合,并從該交點集合之間確定最近的交點。例如,當(dāng)給定的光線路徑已經(jīng)遍歷了誘捕元素的一個或多個實例時,對于該誘捕元素可以存在一個局部交點,同時還可以存在該光線與沒有被誘捕元素包圍的幾何體的交點,在該光線的并行測試過程中會發(fā)現(xiàn)以上情況。這些交點可以存儲在不同數(shù)據(jù)結(jié)構(gòu)內(nèi),這些交點被收集用于比較目的。例如,多條單獨實例化的光線可以最終用于完全對單條光線路徑進(jìn)行追蹤,并且可以在該場景中并行地對那些光線進(jìn)行追蹤。在其他實現(xiàn)方式中,可以連續(xù)地對單條光線路徑的多個部分進(jìn)行追蹤,當(dāng)一條光線完成時(即,數(shù)據(jù)結(jié)構(gòu)沿著光線路徑定義光線,但很可能僅沿著有限的光線路徑段),并且發(fā)出另一條光線,并且其攜帶著與相交測試的完成部分相關(guān)的信息。當(dāng)每個段完成時,還可以保持跨光線路徑的這些多個部分的引用計數(shù)??梢栽诠潭üδ苡布?nèi)或在可配置硬件內(nèi)或在軟件編程的硬件內(nèi)實現(xiàn)關(guān)于圖18披露的函數(shù)。
[0070]進(jìn)一步關(guān)于誘捕元素,上述披露提供了與位移幾何體相關(guān)的示例??梢蕴峁┱T捕元素用于處理多種情況。例如,可以通過使用與光線相關(guān)聯(lián)的時間值來執(zhí)行計算以測試與移動對象的相交在時刻序列下發(fā)生在哪兒,從而在誘捕元素內(nèi)實現(xiàn)運動模糊。然后,可以混合這些結(jié)果以便確定運動模糊特征。盡管誘捕元素可以參考除了世界空間坐標(biāo)系以外的坐標(biāo)系,但誘捕元素也可以使用世界空間坐標(biāo)。
[0071]圖19描繪了吞吐量計算單元515的示例操作。將有待處理的任務(wù)705輸入到計算單元515。舉例來講,每項任務(wù)可以包括收集密鑰710、數(shù)據(jù)引用711和任選的優(yōu)先化指示符712。在一些實現(xiàn)方式中,密鑰710對將在多個計算過程之間共享的計算問題的輸入或一部分進(jìn)行標(biāo)識。在一些實現(xiàn)方式中,數(shù)據(jù)引用711將有待處理的數(shù)據(jù)部分標(biāo)識為數(shù)據(jù)元素的向量內(nèi)的一個數(shù)據(jù)元素,其中由密鑰710標(biāo)識輸入或計算問題。舉例來講,密鑰710可以對加速結(jié)構(gòu)元素進(jìn)行標(biāo)識,而數(shù)據(jù)引用711可以對有待進(jìn)行與加速結(jié)構(gòu)元素元素相交測試的光線進(jìn)行標(biāo)識。密鑰710可以對有待在數(shù)據(jù)引用711參考的數(shù)據(jù)上或用其執(zhí)行的程序或過程進(jìn)行標(biāo)識。舉另一例來講,密鑰710可以對有待乘以數(shù)據(jù)引用711所標(biāo)識的數(shù)據(jù)的系數(shù)進(jìn)行標(biāo)識。在該系統(tǒng)中可以使用其他對任務(wù)705進(jìn)行描述的數(shù)據(jù),或?qū)⒃摂?shù)據(jù)提供在數(shù)據(jù)結(jié)構(gòu)內(nèi),但不是可以在吞吐量計算系統(tǒng)515內(nèi)到處一起移動所有這些數(shù)據(jù)。例如,每項任務(wù)可以與有待基于該任務(wù)的結(jié)果在進(jìn)一步的處理中使用的附加數(shù)據(jù)相關(guān)聯(lián),但該附加數(shù)據(jù)對該任務(wù)本身的執(zhí)行而言是不必要的。
[0072]可以向任務(wù)收集器521 (圖16)提供這些任務(wù)705 (或這些任務(wù)的說明性信息的多個部分,如密鑰710、數(shù)據(jù)引用711、以及優(yōu)先化712),此處當(dāng)包含收集形成/更新模塊715時示出了以上情況。可以用存儲數(shù)據(jù)引用711的收集的高速緩存聯(lián)合對應(yīng)的密鑰710來實現(xiàn)模塊715。舉例來講,多個數(shù)據(jù)引用可以聯(lián)合單個密鑰一起存儲。作為以上內(nèi)容的總結(jié),圖19描繪了包括多個密鑰720-723的收集存儲器718,每個密鑰具有與其相關(guān)聯(lián)的數(shù)據(jù)引用箱。可以基于與每項任務(wù)相關(guān)聯(lián)的優(yōu)先化指示符712為每個收集產(chǎn)生優(yōu)先級,每項任務(wù)的數(shù)據(jù)引用與該收集相關(guān)聯(lián)。舉例來講,可以基于該該收集內(nèi)的最高優(yōu)先級任務(wù)給予每個收集一個優(yōu)先級。同一項任務(wù)(例如,來自該任務(wù)的數(shù)據(jù)引用)可以存在于多個收集內(nèi)。在光線追蹤的背景下,每個收集可以與有待進(jìn)行與光線集合相交測試的形狀相關(guān)聯(lián),該光線集合被收集到與該形狀相關(guān)聯(lián)的收集內(nèi)。在實現(xiàn)方式中,收集存儲器718可以包括交叉高速緩存,其中密鑰(例如720-723)是散列的或被掩蔽以便對該密鑰的收集可以放置的候選位置進(jìn)行標(biāo)識??梢酝ㄟ^逐出收集來解決各收集之間的碰撞。
[0073]調(diào)度程序733使用收集存儲器718內(nèi)的數(shù)據(jù)來形成包括來自不同任務(wù)的數(shù)據(jù)的包,這些任務(wù)與來自收集存儲器718的收集內(nèi)的給定密鑰相關(guān)聯(lián)。調(diào)度程序733可以與收集形成/更新模塊715進(jìn)行通信以便協(xié)調(diào)收集的形成和從收集存儲器718內(nèi)的逐出。調(diào)度程序733可以將等待發(fā)射的包存儲到一個或多個包隊列(描繪了兩個隊列734和735)。當(dāng)使用多個隊列時,可以基于包的優(yōu)先級對包進(jìn)行分類。多個隊列可以在非瞬態(tài)內(nèi)存內(nèi)實現(xiàn)為先進(jìn)先出內(nèi)存、鏈表、環(huán)形緩沖區(qū)等??梢苑职l(fā)來自隊列734和735的包(例如,分發(fā)包719)。將分發(fā)包719描繪成包括包ID、包優(yōu)先級、和密鑰集合、以及多個相關(guān)聯(lián)的數(shù)據(jù)引用。在一個示例中,包可以包括對有待執(zhí)行的程序進(jìn)行標(biāo)識的單個密鑰、有待在執(zhí)行過程中使用的數(shù)據(jù)元素、或兩者。
[0074]可以用多種方式實現(xiàn)優(yōu)先化指示符712。指示符712可以僅僅是對任務(wù)發(fā)射時的相對順序或時間進(jìn)行指示的序列標(biāo)識符(例如,遞增數(shù)字)。在一種方法中,本序列標(biāo)識符允許每項任務(wù)完成的最低服務(wù)質(zhì)量。任務(wù)還可以具有可被解釋為比最低服務(wù)質(zhì)量水平更高或更低優(yōu)先級的對應(yīng)指示符712。即使普通情況提供了遞增標(biāo)識符,但任務(wù)不需要具有唯一標(biāo)識符712。例如,可以通過對離當(dāng)前任務(wù)間隙號(如關(guān)于圖20解釋的)更近的序列標(biāo)識符進(jìn)行復(fù)制來實現(xiàn)新發(fā)射任務(wù)的相對更高的優(yōu)先級,并且根據(jù)本披露的實現(xiàn)方式可以在與之前發(fā)射的具有相同序列標(biāo)識符的任務(wù)相同優(yōu)先級下處理新發(fā)射任務(wù)。其他實現(xiàn)方式可以提供序列標(biāo)識符和單獨的優(yōu)先化字段。
[0075]測試單元516/520 (見圖16)在對應(yīng)的輸入緩沖區(qū)740-742接收輸入。可以選擇這些輸入用于基于測試單元中的哪些測試單元存儲用于與那些輸入相關(guān)的執(zhí)行的本地化數(shù)據(jù)來在測試單元516/520進(jìn)行分配。例如,通過特定數(shù)據(jù)引用711標(biāo)識的光線的定義數(shù)據(jù)可以存儲在測試單元516/520中的僅一個單元的本地內(nèi)存中,并且該數(shù)據(jù)引用將與對有待關(guān)于該光線進(jìn)行測試的形狀或形狀數(shù)據(jù)的引用一起分配到該測試單元??梢杂蛇@個或這些有限可編程性電路550實現(xiàn)任務(wù)狀態(tài)反饋749。在對穿過加速結(jié)構(gòu)的光線進(jìn)行遍歷的示例中,該反饋可以包括從多個子元素中選擇下次應(yīng)針對哪些子元素來收集光線。那會受到針對每個子元素為任務(wù)提供密鑰710的影響。更普遍地,一個或多個電路550可以對程序的引用或地址、加速結(jié)構(gòu)元素、或有待在后續(xù)處理中使用的或有待按照具體數(shù)據(jù)引用711的下一步驟處理的數(shù)據(jù)元素進(jìn)行計算。
[0076]在一個示例中,代碼模塊可以在計算集群502上執(zhí)行以便在測試單元516/520的本地內(nèi)存中設(shè)置相關(guān)數(shù)據(jù)。然而,在一些實現(xiàn)方式中,基于到達(dá)任務(wù)定義中的信息,任務(wù)存儲器維護模塊716可以在那些本地內(nèi)存中設(shè)置數(shù)據(jù)。例如,模塊716可以從共享相干內(nèi)存到測試單元516/520的本地內(nèi)存安排直接內(nèi)存轉(zhuǎn)移請求。在意識到調(diào)度程序733已經(jīng)對哪些包進(jìn)行了排隊的情況下可以對這些轉(zhuǎn)移進(jìn)行調(diào)度。盡管對測試單元716/720何時執(zhí)行給定任務(wù)的準(zhǔn)確定時可能不是確定性的,但可以提供小的高速緩存以緩沖從共享內(nèi)存檢索的數(shù)據(jù),直到被使用并且然后被舍棄。
[0077]圖20描繪了實施意識到服務(wù)質(zhì)量的吞吐量計算的示例。如圖19中所示,任務(wù)收集器可以產(chǎn)生有待在計算元素集合上執(zhí)行的任務(wù)的收集。該任務(wù)收集器可以建立任務(wù)的分組,可以針對那些任務(wù)的至少某個部分而并行地執(zhí)行那些任務(wù)。該任務(wù)收集器可以延遲開始執(zhí)行具體任務(wù),有利于整體增加任務(wù)完成的吞吐量。然而,如果僅考慮吞吐量而選擇任務(wù)用于執(zhí)行,則某些任務(wù)可能不能及時完成。在光線追蹤的背景下,相對少量的光線會在3D場景的極少訪問的部分中結(jié)束。因此,不能得到充足的光線用于為那些部分進(jìn)行充分收集,并且所以如果執(zhí)行調(diào)度啟發(fā)法來選擇充分收集以便使計算并行性最大化,則可以不將這些光線調(diào)度用于進(jìn)一步的遍歷。在一般計算場景中,代碼模塊集合、例程、或段可以具有比其他部分訪問地頻繁得多的部分??梢酝ㄟ^以下內(nèi)容對這些代碼元素的執(zhí)行進(jìn)行調(diào)度:收集對這種執(zhí)行的請求和至少基于針對不同代碼元素收集的對應(yīng)請求數(shù)量來選擇收集。并且在此,如果僅在吞吐量決定上完成調(diào)度,則一些請求會變?nèi)酢?br> [0078]在一個示例中,從任務(wù)發(fā)射點631開始,可以給予定義的任務(wù)(定義為625的定義任務(wù))遞增的標(biāo)識符??梢葬槍ν掏铝靠紤]來選擇和處理任務(wù),但此外,必須保持任務(wù)間隙點632。任務(wù)間隙點632對該標(biāo)識符序列中的有待優(yōu)先化用于完成的所有較低任務(wù)標(biāo)識符所在的位置進(jìn)行標(biāo)識。如圖20中所描繪的,可以已經(jīng)完成一些比任務(wù)間隙點632更大的任務(wù)(例如,任務(wù)642)。當(dāng)點632移動時,圖19的調(diào)度程序733可以對包含該任務(wù)的收集存儲器718內(nèi)的收集進(jìn)行標(biāo)識(644),選擇那些收集用于逐出,并且按照相應(yīng)的包進(jìn)行分發(fā)(644)(例如,在快包隊列中,例如735)。可以獲得(646)任務(wù)結(jié)果,并且基于那些結(jié)果作出如任務(wù)是否已經(jīng)完成的決定。如果任務(wù)沒有完成,則選擇/更新(650)有待將該任務(wù)放在其內(nèi)的進(jìn)一步的收集中。如果完成了該任務(wù),則可以針對其他任務(wù)繼續(xù)(651)進(jìn)行處理。
[0079]在根據(jù)圖20的調(diào)度方法中,可以主要基于吞吐量執(zhí)行調(diào)度,但保證在將給定任務(wù)向前推進(jìn)之前,給定的任務(wù)不會拖延得比預(yù)先確定的時間(例如,處理器周期)更長。通過給予該任務(wù)比發(fā)給其他任務(wù)的序列標(biāo)識符更低的序列標(biāo)識符來完成給予任務(wù)更高的優(yōu)先級,這致使該任務(wù)達(dá)到間隙點632比其將以另外的方式到達(dá)得更快。如以上解釋的,還可以保持單獨的優(yōu)先級指示符。在動畫的特定背景下,可以對幀序列進(jìn)行渲染。任務(wù)標(biāo)識符可以包括與幀數(shù)相關(guān)的數(shù)據(jù)(例如,飛行狀態(tài)下的幀的絕對或相對數(shù)量),該幀數(shù)可以用于優(yōu)先化。還可以通過這種技術(shù)對光線的級別進(jìn)行優(yōu)先化,如來自某一著色程序模塊的光線、某種類型的光線等。實現(xiàn)方式可以為單向任務(wù)或多類任務(wù)、光線或多類光線提供等待時限。為了推廣到計算任務(wù),可以給予多類任務(wù)(如源自具體來源的任務(wù)、或引用具體數(shù)據(jù)集的任務(wù))特定的等待時限。可以在通常對吞吐量進(jìn)行優(yōu)先化的實現(xiàn)方式中提供其他對光線或任務(wù)進(jìn)行相對優(yōu)先化的方式,但也可以避免超過計算的單個元素的等待時限。
[0080]任務(wù)間隙點632與任務(wù)發(fā)射點631之間的多項任務(wù)是可選的并且可以根據(jù)實時系統(tǒng)條件對其進(jìn)行調(diào)制。例如,如果在還可以間歇地執(zhí)行更多對時間要求嚴(yán)格的數(shù)字信號處理任務(wù)的處理系統(tǒng)上實施渲染,或當(dāng)可用的內(nèi)存當(dāng)前受到限制時,則可以使任務(wù)間隙點632更加跟緊發(fā)射點631。
[0081]如果在固件和/或軟件中實施,則功能可以被展示為計算機可讀介質(zhì)上的一個或多個指令或代碼,在一個示例中,該介質(zhì)是非瞬態(tài)的。示例包括用數(shù)據(jù)結(jié)構(gòu)編碼的計算機可讀介質(zhì)和用計算機程序編碼的計算機可讀介質(zhì)。機器可讀介質(zhì)包括非瞬態(tài)機器可讀介質(zhì)。其他種類的介質(zhì)包括傳輸介質(zhì)。非瞬態(tài)介質(zhì)可以是任何可以被機器訪問的有形介質(zhì)。舉例來講,但不具有限制性,這種計算機可讀介質(zhì)可以包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲器、磁盤存儲器、或其他磁存儲裝置、或任何可以用來以指令或數(shù)據(jù)結(jié)構(gòu)的形式存儲所希望的程序代碼和可以被機器訪問的其他介質(zhì)。
[0082]提供各方面的特征的描述用來使本領(lǐng)域的技術(shù)人員能夠制作和使用這些系統(tǒng)和裝置以及執(zhí)行所披露的方法。各種修改將對本領(lǐng)域的技術(shù)人員是明顯的,在不背離本披露的精神和范圍的情況下可以將本文件內(nèi)描述的原理應(yīng)用到其他方面。因此,本說明書并不旨在限制權(quán)利要求書。相反,將使權(quán)利要書求符合與在此披露的原理和新穎性特征一致的范圍。
[0083]附圖包括結(jié)構(gòu)的相對安排和過程組件的排序,僅作為幫助理解本說明書。這些相對安排和編號不是暗示要特定限制權(quán)利要求書中的元素和步驟的排序或安排。在不背離本披露的范圍的情況下可以順序地互換過程限制,權(quán)利要求書并且裝置加功能短語旨在涵蓋被描述為執(zhí)行所引用的功能、不僅包括結(jié)構(gòu)等效物而且還包括等效結(jié)構(gòu)。
[0084]盡管使用了各種示例和其他信息來解釋所附權(quán)利要求書的范圍內(nèi)的多個方面,但不應(yīng)基于這種示例中的具體特征或安排而暗示對權(quán)利要求書的限制,因為普通技術(shù)人員將能夠使用這些示例導(dǎo)出很多種實現(xiàn)方式。進(jìn)一步地,并且盡管以結(jié)構(gòu)特征和/或方法步驟的示例專用的語言描述了某個主題,但應(yīng)理解到,所附權(quán)利要求書中限定的主題不必局限于這些描述的特征或動作。例如,這種功能性可以分布在與除了在此標(biāo)識的組件以外的組件、附加的組件或更少的組件中,或在其中執(zhí)行。相反,公開了所述特征和步驟是作為所附權(quán)利要求書的范圍內(nèi)的系統(tǒng)和方法的組件的示例。
【權(quán)利要求】
1.一種對光線進(jìn)行與隱式曲面的相交測試的方法,包括: 使光線進(jìn)入包圍3D體積的殼體的曲面,所述殼體定義了隱式定義的幾何體在所述殼體內(nèi)的最大范圍; 沿著所述光線的路徑迭代地使所述光線當(dāng)前的3D位置步進(jìn)穿過所述殼體定義的所述3D體積; 對于每個當(dāng)前3D位置, 將所述光線的所述當(dāng)前的3D位置投射到所述殼體中包圍的顯式定義的曲面上的當(dāng)前2D位置上, 在所述顯式定義的曲面上使用所述當(dāng)前2D位置產(chǎn)生用于所述隱式定義的幾何體的數(shù)據(jù),以及 使用所產(chǎn)生的數(shù)據(jù)將所述光線表征為或者碰撞或者錯過所述當(dāng)前3D位置處的所述隱式定義的幾何體。
2.根據(jù)權(quán)利要求1所述的對光線進(jìn)行與隱式曲面的相交測試的方法,其中,產(chǎn)生用于所述隱式定義的幾何體的數(shù)據(jù)包括:執(zhí)行程序以針對所述當(dāng)前2D位置確定隱式定義的幾何體的高度。
3.根據(jù)權(quán)利要求2所述的對光線進(jìn)行與隱式曲面的相交測試的方法,其中,執(zhí)行所述程序包括對接受與所 述當(dāng)前2D位置相關(guān)的數(shù)據(jù)作為輸入的函數(shù)進(jìn)行求值。
4.根據(jù)權(quán)利要求1所述的對光線進(jìn)行與隱式曲面的相交測試的方法,進(jìn)一步包括:確定所述光線與圍住所述殼體的3D包圍體相交,以及響應(yīng)地發(fā)起隱式幾何體相交測試過程。
5.根據(jù)權(quán)利要求1所述的對光線進(jìn)行與隱式曲面的相交測試的方法,進(jìn)一步包括:根據(jù)一個細(xì)節(jié)層次指示對所述迭代步進(jìn)中使用的步長進(jìn)行設(shè)置。
6.根據(jù)權(quán)利要求1所述的對光線進(jìn)行與隱式曲面的相交測試的方法,進(jìn)一步包括:響應(yīng)于指示所述殼體內(nèi)的預(yù)定義體積部分中沒有隱式幾何體的數(shù)據(jù),在所述預(yù)定義體積部分上進(jìn)行步進(jìn)。
7.根據(jù)權(quán)利要求1所述的對光線進(jìn)行與隱式曲面的相交測試的方法,其中,所述殼體包括子體積集合,并且所述光線前進(jìn)穿過這些子體積,直到標(biāo)識出相交。
8.根據(jù)權(quán)利要求1所述的對光線進(jìn)行與隱式曲面的相交測試的方法,進(jìn)一步包括:確定所述光線與圍住所述殼體的3D包圍體相交,以及將進(jìn)入所述3D包圍體的所述光線的進(jìn)入點投射到所述殼體的進(jìn)入點。
9.根據(jù)權(quán)利要求1所述的對光線進(jìn)行與隱式曲面的相交測試的方法,其中,通過互連圖元的網(wǎng)格定義所述殼體,對這些圖元進(jìn)行與所述光線的相交測試。
10.根據(jù)權(quán)利要求9所述的對光線進(jìn)行與隱式曲面的相交測試的方法,其中,所述互連圖元在對所述顯式定義的曲面進(jìn)行定義的源幾何體集合內(nèi)具有對應(yīng)的相應(yīng)圖元,并且所述殼體包括由所述源幾何體集合內(nèi)的相應(yīng)圖元與互連圖元的所述網(wǎng)格內(nèi)的其圖元連接起來的曲面定義的多個子體積。
11.根據(jù)權(quán)利要求10所述的對光線進(jìn)行與隱式曲面的相交測試的方法,其中,所述將所述源幾何體集合內(nèi)的圖元與所述網(wǎng)格內(nèi)的圖元連接起來的曲面是雙線性面片。
12.根據(jù)權(quán)利要求9所述的對光線進(jìn)行與隱式曲面的相交測試的方法,其中,所述互連圖元在源幾何體集合內(nèi)具有對應(yīng)的相應(yīng)圖元,并且所述源幾何體集合內(nèi)的每個圖元與對應(yīng)的隱式幾何體定義函數(shù)相關(guān)聯(lián)。
13.根據(jù)權(quán)利要求1所述的對光線進(jìn)行與隱式曲面的相交測試的方法,進(jìn)一步包括將用于所述光線的數(shù)據(jù)結(jié)構(gòu)內(nèi)的細(xì)節(jié)層次參數(shù)傳遞至為所述隱式定義的幾何體產(chǎn)生數(shù)據(jù)的程序。
14.根據(jù)權(quán)利要求1所述的對光線進(jìn)行與隱式曲面的相交測試的方法,其中,所述為所述隱式定義的幾何體產(chǎn)生數(shù)據(jù)包括:使用所述當(dāng)前2D位置作為參數(shù)用于對確定所述當(dāng)前3D位置處的隱式幾何體的范圍的表達(dá)式進(jìn)行求值。
15.根據(jù)權(quán)利要求1所述的對光線進(jìn)行與隱式曲面的相交測試的方法,進(jìn)一步包括:對發(fā)現(xiàn)所述光線錯過所述隱式定義的幾何體所在的第一 3D點和發(fā)現(xiàn)所述光線碰撞所述隱式定義的幾何體所在的第二 3D點進(jìn)行標(biāo)識,以及選擇所述第一 3D點和所述第二 3D點其中之一作為子光線的原點,但要根據(jù)所述子光線的光線類型。
16.一種對用于基于光線追蹤的渲染的隱式曲面進(jìn)行展示的方法,包括: 使隱式曲面的描述與圖元相關(guān)聯(lián),其中,能夠針對所述圖元的表面上的不同坐標(biāo)對所述隱式曲面的描述進(jìn)行求值; 使光線沿著在基于所述圖元的范圍定義的預(yù)定義3D體積內(nèi)的方向前進(jìn); 針對所述光線在所述3D體積內(nèi)的每個位置,確定所述位置在所述圖元上的表面坐標(biāo); 針對所述曲面坐標(biāo), 對所述隱式曲面的描述進(jìn)行求值;以及 基于所述求值,指示所述光線在所述3D體積內(nèi)的那個位置處是否碰撞或錯過所述隱式曲面。
17.根據(jù)權(quán)利要求16所述的對用于基于光線追蹤的渲染的隱式曲面進(jìn)行展示的方法,進(jìn)一步包括收集多條光線并針對所述多條光線并行地對所述隱式曲面的描述進(jìn)行求值。
18.—種對光線進(jìn)行與隱式曲面的相交測試的系統(tǒng),包括: 可編程執(zhí)行單元集群,能夠執(zhí)行在執(zhí)行過程中發(fā)射出有待在3D場景中進(jìn)行相交測試的光線的著色程序代碼; 多個測試單元,用于以構(gòu)成位于所述3D場景內(nèi)的對象的圖元對一條或多條光線進(jìn)行測試; 多個與對應(yīng)的測試單元相關(guān)聯(lián)的本地內(nèi)存;以及 多條與對應(yīng)的測試單元耦聯(lián)的可編程電路,所述可編程電路能夠被配置成用于使光線行進(jìn)穿過所述3D場景中的體積并且對指示所述光線與所述體積內(nèi)的隱式定義的曲面存在或不存在相交的函數(shù)進(jìn)行求值。
19.根據(jù)權(quán)利要求18所述的對光線進(jìn)行與隱式曲面的相交測試的系統(tǒng),其中,通過設(shè)置為所述光線的前進(jìn)定義步長的參數(shù),所述可編程電路為可編程的所述參數(shù)。
20.根據(jù)權(quán)利要求18所述的對光線進(jìn)行與隱式曲面的相交測試的系統(tǒng),其中,可以通過為有待求值的多項式函數(shù)設(shè)置或多個系數(shù),所述可編程電路是可編程的。
21.根據(jù)權(quán)利要求18所述的對光線進(jìn)行與隱式曲面的相交測試的系統(tǒng),其中,所述可編程電路可配置成用于接收通過投射所述光線的當(dāng)前3D位置而產(chǎn)生的2D坐標(biāo),并且針對所述2D坐標(biāo)對所述函數(shù)進(jìn)行求值。
【文檔編號】G06T15/06GK104050710SQ201410087919
【公開日】2014年9月17日 申請日期:2014年3月11日 優(yōu)先權(quán)日:2013年3月14日
【發(fā)明者】C·奧茲達(dá)斯, L·T·皮得森, S·布拉克蒙, S·J·克洛賽特 申請人:想象技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
中宁县| 剑河县| 鹤庆县| 临朐县| 林西县| 泰州市| 教育| 吉林省| 南陵县| 嵩明县| 昌乐县| 山西省| 雷山县| 仙游县| 萨迦县| 拉萨市| 金阳县| 富川| 安平县| 常德市| 广昌县| 天峻县| 西林县| 保亭| 竹山县| 剑川县| 上林县| 吉木萨尔县| 汤原县| 铜陵市| 德保县| 昌邑市| 铜陵市| 博罗县| 久治县| 宁津县| 抚顺市| 蒙自县| 宣化县| 莱芜市| 屏东县|