細(xì)分是在計(jì)算機(jī)圖形中用于將表示在場(chǎng)景中的對(duì)象的一組表面分割成一般是三角形的多個(gè)更小和更簡(jiǎn)單的片(被稱(chēng)為基元)的技術(shù),更小和更簡(jiǎn)單的片更容易渲染。因而產(chǎn)生的細(xì)分的表面通常是對(duì)原始表面的近似,但這個(gè)近似的準(zhǔn)確度可通過(guò)增加所產(chǎn)生的基元來(lái)改進(jìn),這又通常導(dǎo)致基元更小。細(xì)分/再分的量通常由細(xì)節(jié)級(jí)別(LOD)確定。因此一般使用增加數(shù)量的基元,其中需要更高的細(xì)節(jié)級(jí)別,例如因?yàn)閷?duì)象更接近觀看者和/或?qū)ο缶哂懈鼜?fù)雜的形狀。然而,更大數(shù)量的三角形的使用增加了渲染場(chǎng)景所需的處理能力。
一般對(duì)補(bǔ)片執(zhí)行再分成三角形基元,補(bǔ)片在形狀上是正方形或三角形的(即四邊形或三角形)并可彎曲以與它們代表的對(duì)象的表面保持一致(并因此可被稱(chēng)為“表面補(bǔ)片”)和/或使位移映射被應(yīng)用。然而,再分不對(duì)彎曲的補(bǔ)片執(zhí)行而替代地在補(bǔ)片的域中被執(zhí)行(例如,好像補(bǔ)片是平面的,而不是由例如多項(xiàng)式方程定義),補(bǔ)片的域可依據(jù)(u,v)參數(shù)進(jìn)行定義的并被稱(chēng)為“參量空間”。這意味著細(xì)分過(guò)程與在最終表面中存在的任何曲率無(wú)關(guān)。
細(xì)分可提前被執(zhí)行(例如以計(jì)算在不同的細(xì)節(jié)級(jí)別處和/或來(lái)自不同的視點(diǎn)的場(chǎng)景的多個(gè)不同的視圖)或可在運(yùn)行中被執(zhí)行(例如以提供連續(xù)的或視圖相關(guān)的細(xì)節(jié)級(jí)別)。使用一些現(xiàn)有的細(xì)分方法,用戶(hù)可經(jīng)歷不希望有的視覺(jué)偽像,其中雖然所請(qǐng)求的細(xì)節(jié)級(jí)別平穩(wěn)地改變,但是產(chǎn)生的細(xì)分是以間斷的方式改變。
下面所述的實(shí)施方式僅作為例子被提供,且并不是解決用于執(zhí)行細(xì)分的已知方法和裝置的任何缺點(diǎn)或所有缺點(diǎn)的實(shí)現(xiàn)的限制。
概述
這個(gè)概述被提供來(lái)介紹了簡(jiǎn)化形式的選擇的概念,其在下面在詳細(xì)描述中被進(jìn)一步描述。這個(gè)概述并不打算識(shí)別所主張的主題的關(guān)鍵特征或必要特征,也不打算用作在確定所主張的主題的范圍時(shí)的幫助。
描述了使用為補(bǔ)片的每個(gè)頂點(diǎn)定義的細(xì)分因數(shù)的細(xì)分方法,補(bǔ)片可以是四邊形、三角形或等值線。該方法在計(jì)算機(jī)圖形系統(tǒng)中實(shí)現(xiàn)并涉及比較頂點(diǎn)細(xì)分因數(shù)與閾值。如果定義初始補(bǔ)片的邊的左頂點(diǎn)或右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)超過(guò)閾值,則邊通過(guò)將邊分成兩個(gè)部分的新頂點(diǎn)的添加而被再分且兩個(gè)新補(bǔ)片形成。對(duì)在每個(gè)最新形成的補(bǔ)片中的每個(gè)頂點(diǎn)計(jì)算新頂點(diǎn)細(xì)分因數(shù),這兩個(gè)補(bǔ)片都包括最新添加的頂點(diǎn)。然后對(duì)每個(gè)最新形成的補(bǔ)片重復(fù)該方法,直到?jīng)]有一個(gè)頂點(diǎn)細(xì)分因數(shù)超過(guò)閾值為止。
第一方面提供在計(jì)算機(jī)圖形系統(tǒng)中執(zhí)行細(xì)分的方法,該方法包括:對(duì)于包括由邊連接并在域空間中定義的左頂點(diǎn)和右頂點(diǎn)的初始補(bǔ)片:將左頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)和右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)與閾值進(jìn)行比較;響應(yīng)于確定左頂點(diǎn)和右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)中沒(méi)有一個(gè)超過(guò)閾值,輸出描述初始補(bǔ)片的數(shù)據(jù);以及響應(yīng)于確定左頂點(diǎn)和右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)中有任一個(gè)超過(guò)閾值,形成將邊再分成兩個(gè)部分的新頂點(diǎn),計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),分割初始補(bǔ)片以形成包括左頂點(diǎn)和新頂點(diǎn)的第一新補(bǔ)片以及包括右頂點(diǎn)和新頂點(diǎn)的第二新補(bǔ)片,并減小在每個(gè)最新形成的補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)。
新頂點(diǎn)可平分邊。
該方法還可包括:使用每個(gè)最新形成的補(bǔ)片作為初始補(bǔ)片重復(fù)該方法。對(duì)作為初始補(bǔ)片的每個(gè)最新形成的補(bǔ)片重復(fù)該方法可包括:對(duì)作為初始補(bǔ)片的每個(gè)最新形成的補(bǔ)片重復(fù)該方法,直到在每個(gè)補(bǔ)片中的左頂點(diǎn)和右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)不超過(guò)閾值為止。
計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)可包括:計(jì)算左頂點(diǎn)和右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)的平均值;以及設(shè)置新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)等于所計(jì)算的平均值。左頂點(diǎn)和右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)的平均值可由下式給出:
MEAN(LEFT.TF,RIGHT.TF)=MIN(AVG(LEFT.TF,RIGHT.TF),MIN(LEFT.TF,RIGHT.TF)+INTERVAL)
其中LEFT.TF是左頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),RIGHT.TF是右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),AVG()是在括弧內(nèi)的值的算術(shù)平均值,MIN()是在括弧內(nèi)的值的列表中的最小值,以及INTERVAL是預(yù)先定義的參數(shù)。
減小在每個(gè)最新形成的補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)可包括將每個(gè)頂點(diǎn)細(xì)分因數(shù)減小預(yù)先定義的參數(shù)INTERVAL。參數(shù)INTERVAL可以是0.5。
閾值可以等于零。
初始補(bǔ)片可以是由兩個(gè)頂點(diǎn)定義的等值線補(bǔ)片,所述兩個(gè)頂點(diǎn)包括左頂點(diǎn)和右頂點(diǎn)。
初始補(bǔ)片可以是三角形補(bǔ)片,且其中三角形補(bǔ)片是三個(gè)頂點(diǎn)的有序集合:上頂點(diǎn)、右頂點(diǎn)和左頂點(diǎn)。被分割的補(bǔ)片可以是兩個(gè)最新形成的補(bǔ)片的父補(bǔ)片,以及其中第一新補(bǔ)片是三個(gè)頂點(diǎn)的有序集合:為被添加到父補(bǔ)片的新頂點(diǎn)的上頂點(diǎn);為父補(bǔ)片的左頂點(diǎn)的右頂點(diǎn);以及為父補(bǔ)片的上頂點(diǎn)的左頂點(diǎn);以及其中第二新補(bǔ)片是三個(gè)頂點(diǎn)的有序集合:為被添加到父補(bǔ)片的新頂點(diǎn)的上頂點(diǎn);為父補(bǔ)片的上頂點(diǎn)的右頂點(diǎn);以及為父補(bǔ)片的右頂點(diǎn)的左頂點(diǎn)。
該方法——其中初始補(bǔ)片是三角形補(bǔ)片——還可包括:接收輸入補(bǔ)片;以及從輸入補(bǔ)片產(chǎn)生一個(gè)或多個(gè)初始補(bǔ)片;以及對(duì)于多個(gè)初始補(bǔ)片中的每個(gè)重復(fù)該方法。輸入補(bǔ)片可以是具有三個(gè)頂點(diǎn)的三角形補(bǔ)片,且其中產(chǎn)生一個(gè)或多個(gè)初始補(bǔ)片可包括:將三個(gè)頂點(diǎn)中的每個(gè)的頂點(diǎn)細(xì)分因數(shù)與閾值比較;響應(yīng)于確定沒(méi)有一個(gè)頂點(diǎn)細(xì)分因數(shù)超過(guò)閾值,輸出描述輸入補(bǔ)片的數(shù)據(jù);以及響應(yīng)于確定至少一個(gè)頂點(diǎn)細(xì)分因數(shù)超過(guò)閾值,形成在三角形的中心處的新頂點(diǎn),計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),分割輸入補(bǔ)片以形成三個(gè)初始補(bǔ)片,每個(gè)初始補(bǔ)片是以新頂點(diǎn)作為上頂點(diǎn)的三角形補(bǔ)片,以及減小在每個(gè)最新形成的初始補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)。新頂點(diǎn)可在三角形的質(zhì)量中心處形成。輸入補(bǔ)片的三個(gè)頂點(diǎn)可以是上頂點(diǎn)、左頂點(diǎn)和右頂點(diǎn),且可使用下式來(lái)計(jì)算在三角形的中心處的新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù):
MID.TF=MEAN(TOP.TF,LEFT.TF,RIGHT.TF)
其中MID.TF是新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),TOP.TF是上頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),LEFT.TF是左頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),以及RIGHT.TF是右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),以及MEAN()是在括弧內(nèi)的值的平均值。
可使用下式來(lái)計(jì)算MEAN(TOP.TF,LEFT.TF,RIGHT.TF):
MEAN(TOP.TF,LEFT.TF,RIGHT.TF)=MIN(AVG(TOP.TF,LEFT.TF,RIGHT.TF),MIN(TOP.TF,LEFT.TF,RIGHT.TF)+INTERVAL)
其中AVG()是在括弧內(nèi)的值的算術(shù)平均值,MIN()是在括弧內(nèi)的值的列表中的最小值,以及INTERVAL是預(yù)先定義的參數(shù)。
輸入補(bǔ)片可以是具有四個(gè)頂點(diǎn)的四邊形補(bǔ)片,以及其中產(chǎn)生一個(gè)或多個(gè)初始補(bǔ)片可包括:形成在四邊形補(bǔ)片的中心處的新頂點(diǎn);計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù);分割輸入補(bǔ)片以形成四個(gè)初始補(bǔ)片,每個(gè)初始補(bǔ)片是以新頂點(diǎn)作為上頂點(diǎn)的三角形補(bǔ)片;以及減小在每個(gè)最新形成的初始補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)。
輸入補(bǔ)片可以是具有四個(gè)頂點(diǎn)和中心細(xì)分因數(shù)的四邊形補(bǔ)片,以及其中產(chǎn)生一個(gè)或多個(gè)初始補(bǔ)片可包括:添加五個(gè)新頂點(diǎn)以將輸入補(bǔ)片再分成四個(gè)子輸入四邊形補(bǔ)片;計(jì)算五個(gè)最新添加的頂點(diǎn)中的每個(gè)的頂點(diǎn)細(xì)分因數(shù);減小在最新形成的四個(gè)子輸入補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù);以及對(duì)于每個(gè)子輸入補(bǔ)片:形成在四邊形補(bǔ)片的中心處的新頂點(diǎn);計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù);分割輸入補(bǔ)片以形成四個(gè)初始補(bǔ)片,每個(gè)初始補(bǔ)片是以新頂點(diǎn)作為上頂點(diǎn)的三角形補(bǔ)片;以及減小在每個(gè)最新形成的初始補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)。
輸入補(bǔ)片可以是具有三個(gè)頂點(diǎn)和中心細(xì)分因數(shù)的三角形補(bǔ)片,以及其中產(chǎn)生一個(gè)或多個(gè)初始補(bǔ)片可包括:添加四個(gè)新頂點(diǎn)以將輸入補(bǔ)片再分成三個(gè)子輸入四邊形補(bǔ)片;計(jì)算五個(gè)最新添加的頂點(diǎn)中的每個(gè)的頂點(diǎn)細(xì)分因數(shù);減小在最新形成的四個(gè)子輸入補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù);以及對(duì)于每個(gè)子輸入補(bǔ)片:形成在四邊形補(bǔ)片的中心處的新頂點(diǎn);計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù);分割輸入補(bǔ)片以形成四個(gè)初始補(bǔ)片,每個(gè)初始補(bǔ)片是以新頂點(diǎn)作為上頂點(diǎn)的三角形補(bǔ)片;以及減小在每個(gè)最新形成的初始補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)。
輸入補(bǔ)片的四個(gè)頂點(diǎn)可以是左上頂點(diǎn)、右上頂點(diǎn)、左下頂點(diǎn)和右下頂點(diǎn),且可使用下式計(jì)算在三角形的中心處的新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù):
MID.TF=MEAN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)
其中MID.TF是新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),TLEFT.TF是左上頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),TRIGHT.TF是右上頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),BLEFT.TF是左下頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),BRIGHT.TF是右下頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),以及MEAN()是在括弧內(nèi)的值的平均值。
可使用下式來(lái)計(jì)算MEAN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF):
MEAN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)=MIN(AVG(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF),MIN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)+INTERVAL)
其中AVG()是在括弧內(nèi)的值的算術(shù)平均值,MIN()是在括弧內(nèi)的值的列表中的最小值,以及INTERVAL是預(yù)先定義的參數(shù)。
減小在每個(gè)最新形成的初始補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)可包括將每個(gè)頂點(diǎn)細(xì)分因數(shù)減小預(yù)先定義的參數(shù)INTERVAL。
第二方面提供包括硬件邏輯的硬件細(xì)分單元,硬件邏輯配置成:對(duì)于包括由邊連接并在域空間中定義的左頂點(diǎn)和右頂點(diǎn)的初始補(bǔ)片:將左頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)和右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)與閾值進(jìn)行比較;響應(yīng)于確定左頂點(diǎn)和右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)中沒(méi)有一個(gè)超過(guò)閾值,輸出描述初始補(bǔ)片的數(shù)據(jù);以及響應(yīng)于確定左頂點(diǎn)和右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)中有任一個(gè)超過(guò)閾值,形成將邊再分成兩個(gè)部分的新頂點(diǎn),計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),分割初始補(bǔ)片以形成包括左頂點(diǎn)和新頂點(diǎn)的第一新補(bǔ)片以及包括右頂點(diǎn)和新頂點(diǎn)的第二新補(bǔ)片,并減小在每個(gè)最新形成的補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)。
硬件邏輯還可以被配置為利用最新形成的補(bǔ)片作為初始補(bǔ)片來(lái)重復(fù)該方法。
配置成計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)的硬件邏輯可包括配置成執(zhí)行下列操作的硬件邏輯:計(jì)算左頂點(diǎn)和右頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)的平均值;以及設(shè)置新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)等于所計(jì)算的平均值。
初始補(bǔ)片可以是由兩個(gè)頂點(diǎn)(左頂點(diǎn)和右頂點(diǎn))定義的等值線補(bǔ)片。
初始補(bǔ)片可以是三角形補(bǔ)片,且其中三角形補(bǔ)片是三個(gè)頂點(diǎn)的有序集合:上頂點(diǎn)、右頂點(diǎn)和左頂點(diǎn)。被分割的補(bǔ)片可以是兩個(gè)最新形成的補(bǔ)片的父補(bǔ)片,以及其中第一新補(bǔ)片是三個(gè)頂點(diǎn)的有序集合:為被添加到父補(bǔ)片的新頂點(diǎn)的上頂點(diǎn);為父補(bǔ)片的左頂點(diǎn)的右頂點(diǎn);以及為父補(bǔ)片的上頂點(diǎn)的左頂點(diǎn);以及其中第二新補(bǔ)片是三個(gè)頂點(diǎn)的有序集合:為被添加到父補(bǔ)片的新頂點(diǎn)的上頂點(diǎn);為父補(bǔ)片的上頂點(diǎn)的右頂點(diǎn);以及為父補(bǔ)片的右頂點(diǎn)的左頂點(diǎn)。
硬件細(xì)分單元還可包括配置成執(zhí)行下列操作的硬件邏輯:接收輸入補(bǔ)片;從輸入補(bǔ)片產(chǎn)生一個(gè)或多個(gè)初始補(bǔ)片;以及對(duì)于多個(gè)初始補(bǔ)片中的每個(gè)重復(fù)該方法。
輸入補(bǔ)片可以是具有三個(gè)頂點(diǎn)的三角形補(bǔ)片,且其中配置成產(chǎn)生一個(gè)或多個(gè)初始補(bǔ)片的硬件邏輯可包括配置成執(zhí)行下列操作的硬件邏輯:將三個(gè)頂點(diǎn)中的每個(gè)的頂點(diǎn)細(xì)分因數(shù)與閾值進(jìn)行比較;響應(yīng)于確定沒(méi)有一個(gè)頂點(diǎn)細(xì)分因數(shù)超過(guò)閾值,輸出描述輸入補(bǔ)片的數(shù)據(jù);以及響應(yīng)于確定至少一個(gè)頂點(diǎn)細(xì)分因數(shù)超過(guò)閾值,形成在三角形的中心處的新頂點(diǎn),計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù),分割輸入補(bǔ)片以形成三個(gè)初始補(bǔ)片,每個(gè)初始補(bǔ)片是以新頂點(diǎn)作為上頂點(diǎn)的三角形補(bǔ)片,以及減小在每個(gè)最新形成的初始補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)。
輸入補(bǔ)片可以是具有四個(gè)頂點(diǎn)的四邊形補(bǔ)片,以及其中配置成產(chǎn)生一個(gè)或多個(gè)初始補(bǔ)片的硬件邏輯可包括執(zhí)行下列操作的硬件邏輯:形成在四邊形補(bǔ)片的中心處的新頂點(diǎn);計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù);分割輸入補(bǔ)片以形成四個(gè)初始補(bǔ)片,每個(gè)初始補(bǔ)片是以新頂點(diǎn)作為上頂點(diǎn)的三角形補(bǔ)片;以及減小在每個(gè)最新形成的初始補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)。
輸入補(bǔ)片可以是具有四個(gè)頂點(diǎn)和中心細(xì)分因數(shù)的四邊形補(bǔ)片,以及其中配置成產(chǎn)生一個(gè)或多個(gè)初始補(bǔ)片的硬件邏輯可包括配置成執(zhí)行下列操作的硬件邏輯:添加五個(gè)新頂點(diǎn)以將輸入補(bǔ)片再分成四個(gè)子輸入四邊形補(bǔ)片;計(jì)算五個(gè)最新添加的頂點(diǎn)中的每個(gè)的頂點(diǎn)細(xì)分因數(shù);減小在最新形成的四個(gè)子輸入補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù);以及對(duì)于每個(gè)子輸入補(bǔ)片:形成在四邊形補(bǔ)片的中心處的新頂點(diǎn);計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù);分割輸入補(bǔ)片以形成四個(gè)初始補(bǔ)片,每個(gè)初始補(bǔ)片是以新頂點(diǎn)作為上頂點(diǎn)的三角形補(bǔ)片;以及減小在每個(gè)最新形成的初始補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)。
輸入補(bǔ)片可以是具有三個(gè)頂點(diǎn)和中心細(xì)分因數(shù)的三角形補(bǔ)片,以及其中配置成產(chǎn)生一個(gè)或多個(gè)初始補(bǔ)片的硬件邏輯可包括配置成執(zhí)行下列操作的硬件邏輯:添加四個(gè)新頂點(diǎn)以將輸入補(bǔ)片再分成三個(gè)子輸入四邊形補(bǔ)片;計(jì)算五個(gè)最新添加的頂點(diǎn)中的每個(gè)的頂點(diǎn)細(xì)分因數(shù);減小在最新形成的四個(gè)子輸入補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù);以及對(duì)于每個(gè)子輸入補(bǔ)片:形成在四邊形補(bǔ)片的中心處的新頂點(diǎn);計(jì)算新頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù);分割輸入補(bǔ)片以形成四個(gè)初始補(bǔ)片,每個(gè)初始補(bǔ)片是以新頂點(diǎn)作為上頂點(diǎn)的三角形補(bǔ)片;以及減小在每個(gè)最新形成的初始補(bǔ)片中的每個(gè)頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)。
第三方面提供了包括如在上面闡述的硬件細(xì)分單元的圖形處理單元。
另外的方面提供了其上存儲(chǔ)有在被執(zhí)行時(shí)使至少一個(gè)處理器執(zhí)行如在上面闡述的方法的計(jì)算機(jī)可執(zhí)行程序代碼的非暫時(shí)性的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、包括如在上面闡述的硬件細(xì)分單元的圖形處理單元、具有在其上編碼的定義如在上面闡述的硬件細(xì)分單元的計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以及具有在其上編碼的定義配置成執(zhí)行如在上面闡述的方法的硬件細(xì)分單元的計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
如將對(duì)技術(shù)人員明顯的是,優(yōu)選特征可以視情況被組合,并可與本發(fā)明的任一方面組合。
附圖的簡(jiǎn)要說(shuō)明
現(xiàn)在將參考附圖作為例子描述本發(fā)明的實(shí)施方式,其中:
圖1示出使用各種已知的細(xì)分方法的結(jié)果;
圖2是示出使用具有邊細(xì)分因數(shù)的現(xiàn)有技術(shù)方法和使用頂點(diǎn)細(xì)分因數(shù)的本文所述的方法得到的不同結(jié)果的例子的示意圖;
圖3示出使用本文所述的改進(jìn)的細(xì)分方法得到的示例結(jié)果的各種例子;
圖4示出使用本文所述的改進(jìn)的細(xì)分方法得到的另外的示例結(jié)果;
圖5是改進(jìn)的細(xì)分方法的流程圖;
圖6是示出各種輸入補(bǔ)片并示出圖5的方法的預(yù)處理階段的示意圖;
圖7是用于三角形輸入補(bǔ)片的圖5的方法的預(yù)處理階段的流程圖;
圖8是用于四邊形輸入補(bǔ)片的圖5的方法的預(yù)處理階段的流程圖;
圖9是將算法遞歸地應(yīng)用于由預(yù)處理階段輸出的三個(gè)或四個(gè)三角形補(bǔ)片中的每個(gè)或應(yīng)用于輸入等值線補(bǔ)片的流程圖;
圖10是示出說(shuō)明圖9的方法的三角形的示意圖;
圖11是示出說(shuō)明本文所述的改進(jìn)的細(xì)分方法的三角形的示意圖;
圖12是本文所述的改進(jìn)的細(xì)分方法的所示例子;
圖13是示出可使用本文所述的改進(jìn)的細(xì)分方法產(chǎn)生的三角形類(lèi)別的示意圖;
圖14示出使用本文所述的改進(jìn)的細(xì)分方法和已知的細(xì)分方法得到的結(jié)果之間的比較;
圖15是改進(jìn)的細(xì)分方法的另一示例流程圖且是對(duì)圖5所示的方法的變形;
圖16是示出圖15的方法的示意圖;
圖17是圖15的方法的額外的預(yù)處理階段的流程圖;
圖18示出使用圖15的方法得到的示例結(jié)果;
圖19是示例性GPU管線的示意圖;以及
圖20示出可被實(shí)現(xiàn)為任何形式的計(jì)算和/或電子設(shè)備的并可配置成實(shí)現(xiàn)本文所述的改進(jìn)的細(xì)分方法的示例性基于計(jì)算的設(shè)備的各種部件。
共同的參考數(shù)字在全部附圖中用于指示相似的特征。
詳細(xì)描述
下面僅作為例子描述本發(fā)明的實(shí)施方式。這些例子代表實(shí)施本發(fā)明的、申請(qǐng)人當(dāng)前已知的最佳方式,雖然它們并不是本發(fā)明可被實(shí)現(xiàn)的唯一方式。該描述闡述例子的功能和用于構(gòu)造和操作例子的步驟的順序。然而,相同或等效的功能和順序可由不同的例子來(lái)實(shí)現(xiàn)。
存在多種已知的使用邊細(xì)分因數(shù)(TF)的細(xì)分方法,邊細(xì)分因數(shù)對(duì)(例如四邊形或三角形)補(bǔ)片的每條邊進(jìn)行定義并確定邊(和因而補(bǔ)片)應(yīng)被再分多少次。圖1示出當(dāng)使用不同的邊細(xì)分因數(shù)時(shí)因而產(chǎn)生的三角形如何不同,但對(duì)每條邊是相同的細(xì)分因數(shù)。
在圖1中的前四個(gè)例子(a)-(d)示出:
(a)整數(shù)分割,對(duì)于所有四條邊,邊TF=3
(b)整數(shù)分割,對(duì)于所有四條邊,邊TF=4
(c)二次冪整數(shù)分割,對(duì)于所有四條邊,邊TF=3
(d)二次冪整數(shù)分割,對(duì)于所有四條邊,邊TF=4
使用整數(shù)分割和二次冪整數(shù)分割,沿著每條邊的頂點(diǎn)總是均勻地間隔開(kāi);然而,不想要的視覺(jué)偽像(例如下面解釋的)非常可能出現(xiàn)在再分級(jí)別改變的且三角形不是很小的地方,但當(dāng)小多邊形帶來(lái)額外的渲染開(kāi)銷(xiāo)時(shí),使多邊形這么小是不合乎需要的。這個(gè)效應(yīng)對(duì)二次冪整數(shù)分割是特別動(dòng)態(tài)的,因?yàn)椴介L(zhǎng)可以大得多。
在圖1中的后四個(gè)例子(e)-(h)示出(與例子(a)-(d)不同)產(chǎn)生在變化的偏移處的頂點(diǎn)的分?jǐn)?shù)分割方法:
e)奇數(shù)分?jǐn)?shù)分割,對(duì)于所有四條邊,邊TF=3.0
f)奇數(shù)分?jǐn)?shù)分割,對(duì)于所有四條邊,邊TF=4.0
g)偶數(shù)分?jǐn)?shù)分割,對(duì)于所有四條邊,邊TF=3.0
h)偶數(shù)分?jǐn)?shù)分割,對(duì)于所有四條邊,邊TF=4.0
當(dāng)選擇細(xì)分方法時(shí),其他考慮因素不僅包括對(duì)邊細(xì)分設(shè)置的給定組合產(chǎn)生的三角形的數(shù)量(因?yàn)榧?xì)分的模型的渲染成本部分地取決于三角形的數(shù)量),而且包括那些三角形的高寬比。一般,圖形系統(tǒng)(軟件或硬件)將比渲染具有相同的面積但更高的周長(zhǎng)與面積比的(長(zhǎng)細(xì))三角形更快地渲染暗示最小周長(zhǎng)與面積比的給定屏幕面積(即屏幕像素)的“等邊”三角形。此外,當(dāng)值(例如明暗處理的結(jié)果)在頂點(diǎn)處被計(jì)算并接著跨三角形被內(nèi)插時(shí),有更等邊形狀的三角形應(yīng)導(dǎo)致更少的偽像。
另一考慮因素是用于產(chǎn)生三角形的模式的算法的復(fù)雜度。如果算法可保持簡(jiǎn)單和/或有規(guī)律(例如沒(méi)有需要不同地被處理的很多“特殊情況”),這可減小硬件或軟件實(shí)現(xiàn)成本。
最后合乎需要的考慮因素是在細(xì)分模式中的旋轉(zhuǎn)/反射對(duì)稱(chēng)性。例如,使用以比如順時(shí)針順序ABCD給出的頂點(diǎn)并使用適當(dāng)?shù)募?xì)分因數(shù)定義的四邊形補(bǔ)片產(chǎn)生與具有被列為BCDA的頂點(diǎn)的“等效”四邊形相同的最終三角形網(wǎng)將是優(yōu)選的。一些現(xiàn)有的細(xì)分方案不保證這個(gè)特性(例如見(jiàn)在圖1的例子(e)和(f)中的“奇數(shù)”細(xì)分方法中的中間正方形)。
在這個(gè)描述中,表面補(bǔ)片涉及通常有限的N維表面(或在等值線的情況下,N維曲線段),其為將參數(shù)映射函數(shù)應(yīng)用于有界限的2D域的結(jié)果,該2D域是四邊形或三角形(或在等值線的情況下,1D線段)。因而產(chǎn)生的表面或等值線可被考慮為N維的,因?yàn)樗刹粌H包括用于笛卡爾(或同質(zhì))空間定位的3(或4)維,而且包括其它參數(shù)例如紋理坐標(biāo)。如上所述,表面補(bǔ)片可彎曲以與它們代表的對(duì)象的表面保持一致和/或使位移映射被應(yīng)用。然而,細(xì)分(即補(bǔ)片的再分)不在“自然空間”中被執(zhí)行(即它不對(duì)彎曲表面補(bǔ)片執(zhí)行)而替代地在域空間中(這也可被稱(chēng)為參量空間或參數(shù)空間)被執(zhí)行,其中域中的任何位置可由被稱(chēng)為域空間坐標(biāo)的兩個(gè)坐標(biāo)(u,v)描述,這意味著細(xì)分過(guò)程與存在于最終表面中的任何曲率無(wú)關(guān)。
在本文描述了改進(jìn)的細(xì)分方法,且描述這個(gè)細(xì)分方法時(shí),術(shù)語(yǔ)“補(bǔ)片(patch)”用于指形成域的界限的兩個(gè)、三個(gè)或四個(gè)頂點(diǎn)(分別對(duì)于等值線、三角形或四邊形)的有序集合。術(shù)語(yǔ)“域(domain)”因此指由補(bǔ)片的頂點(diǎn)形成界限的二維空間。術(shù)語(yǔ)“頂點(diǎn)(vertex)”通常用于描述位置加上其它屬性,其中這些屬性根據(jù)上下文而不同。例如,來(lái)自域著色器的輸入控制點(diǎn)和輸出頂點(diǎn)包括3D位置加上其它參數(shù),例如法線、切線、紋理等,而在細(xì)分器內(nèi)的頂點(diǎn)(即在細(xì)分方法內(nèi)使用的頂點(diǎn))包括域空間坐標(biāo)和頂點(diǎn)細(xì)分因數(shù)。在細(xì)分器內(nèi)的這些頂點(diǎn)因此與輸入控制點(diǎn)或形成最終三角形的因而產(chǎn)生的N維頂點(diǎn)不相同。
在本文描述了改進(jìn)的細(xì)分方法,其不使用邊細(xì)分因數(shù)而是替代地使用為四邊形或三角形的每個(gè)角頂點(diǎn)或等值線的每個(gè)端頂點(diǎn)定義的細(xì)分因數(shù)。這些細(xì)分因數(shù)被稱(chēng)為“頂點(diǎn)細(xì)分因數(shù)”以將它們與在上面描述的已知方法中使用的邊細(xì)分因數(shù)區(qū)分開(kāi)。如下面詳細(xì)描述的,當(dāng)補(bǔ)片的任一頂點(diǎn)細(xì)分因數(shù)超過(guò)規(guī)定閾值時(shí),細(xì)分(即補(bǔ)片的再分)出現(xiàn)。當(dāng)新頂點(diǎn)被添加時(shí),這些將邊再分成兩個(gè)部分(其中在各種例子中,這兩個(gè)部分可相等,使得邊被平分),且該方法遞歸地作用于三角形補(bǔ)片。
本文所述的改進(jìn)的細(xì)分方法處理在已知的細(xì)分方法中產(chǎn)生的一個(gè)或多個(gè)(和在各種例子中,所有)下面的問(wèn)題:
·突然的舉動(dòng)(Snapping)——瞬間出現(xiàn)的大量細(xì)分的效應(yīng)。這可不僅引起在動(dòng)畫(huà)中的臨時(shí)視覺(jué)偽像,而且導(dǎo)致不連續(xù)的渲染時(shí)間。這特別是針對(duì)“二次冪”方法(例如圖1中的例子(c)和(d))的問(wèn)題。
·破裂——在邊界上的邊的再分需要是一致的以避免T結(jié)。在應(yīng)用位移映射之后,任何T結(jié)將幾乎一定導(dǎo)致觀看者能夠看穿對(duì)象的裂縫的出現(xiàn)。
·漂浮——根據(jù)頂點(diǎn)的細(xì)分因數(shù)在域空間中移動(dòng)頂點(diǎn)的位置導(dǎo)致當(dāng)位移的量改變時(shí)看起來(lái)發(fā)微光或“漂浮”的幾何結(jié)構(gòu)。
·無(wú)過(guò)/欠細(xì)分——例如,32的細(xì)分因數(shù)需要邊被再分成32段。少于此則可導(dǎo)致網(wǎng)沒(méi)有精制到足以對(duì)場(chǎng)景建模。多于此則可導(dǎo)致網(wǎng)太精制并使用太多的計(jì)算。
·細(xì)三角形——渲染細(xì)三角形可導(dǎo)致更多的混疊偽像以及在計(jì)算上昂貴,因?yàn)槿切蔚匿秩境杀静粌H取決于它的屏幕像素面積而且在某種程度上取決于它在屏幕像素中的周長(zhǎng)的長(zhǎng)度。因此渲染由N個(gè)“接近等邊的”三角形表示的補(bǔ)片比由N個(gè)“長(zhǎng)細(xì)”三角形表示的相同補(bǔ)片通常更有效,尤其是在細(xì)三角形隨著LOD改變而消失且基本上多余的時(shí)候。因此,下面所述的方法目的在于最大化最小的面積與周長(zhǎng)比的平方根(Root Area to Perimeter Ratio)。
·空間/時(shí)間復(fù)雜度——任何細(xì)分方法應(yīng)理想地是簡(jiǎn)單的和高度并行的并最小化時(shí)間和空間復(fù)雜度(即執(zhí)行渲染所花費(fèi)的時(shí)間和實(shí)現(xiàn)算法所需的存儲(chǔ)區(qū)的量)。它也必須不將太多的位添加到頂點(diǎn)的尺寸,因?yàn)檫@增加了對(duì)存儲(chǔ)器的要求。空間和時(shí)間復(fù)雜度也影響執(zhí)行細(xì)分所需的硬件的物理面積。
指定在補(bǔ)片的角處的TF導(dǎo)致在細(xì)分的補(bǔ)片內(nèi)的因而產(chǎn)生的三角形的尺寸和形狀上的更少的突然變化,因?yàn)檫叺姆指钗垂潭?即到由邊TF指定的值),但替代地由在邊的每端處的頂點(diǎn)TF確定,且不僅沿著原始邊(在參量空間中的1D方向上)平穩(wěn)地改變以產(chǎn)生在再分級(jí)別之間的逐漸過(guò)渡,而且也結(jié)合其它TF允許它在2D方向上跨補(bǔ)片平穩(wěn)地改變。這在圖2中用圖形示出,圖2示出,在域空間中在使用已知的方法定義在邊(圖202)處的細(xì)分因數(shù)和定義在角(或頂點(diǎn),圖204)處的細(xì)分因數(shù)之間的差異。第一圖202是在具有2和4的邊細(xì)分因數(shù)的兩個(gè)四邊形的情況下使用跨邊的所定義的二次冪定義的細(xì)分因數(shù)的結(jié)果。第二圖204使用下面所述的方法以及2(關(guān)于頂點(diǎn)206、208)和4(關(guān)于頂點(diǎn)210-216)的頂點(diǎn)細(xì)分因數(shù)。
在圖3和圖4中示出具有四邊形和三角形補(bǔ)片的各種整數(shù)和分?jǐn)?shù)細(xì)分因數(shù)的另外的例子。注意,僅為了比較目的,在例子中,給定數(shù)字頂點(diǎn)細(xì)分因數(shù)在已知的基于邊的細(xì)分方案中近似同等地采用因數(shù)的以2為底的對(duì)數(shù)。在每個(gè)例子之下的正文顯示以下列順序的頂點(diǎn)細(xì)分因數(shù):對(duì)于四邊形補(bǔ)片(左上、右上、左下、右下)和對(duì)于三角形補(bǔ)片(上、左下、右下)。從這些例子中可看到,在補(bǔ)片內(nèi)的再分級(jí)別之間有逐漸過(guò)渡,沒(méi)有長(zhǎng)細(xì)三角形被創(chuàng)建,以及頂點(diǎn)放置在域空間中的其最終位置處且當(dāng)LOD增加時(shí)不移動(dòng)(它們只在域空間中的固定位置處出現(xiàn)或消失)。
如下面所述的,連同基于頂點(diǎn)的細(xì)分因數(shù)一起,這個(gè)改進(jìn)的細(xì)分方法最小化(或消除)不希望有的視覺(jué)偽像,因?yàn)槊總€(gè)頂點(diǎn)(例如作為到三角形的再分的部分而被添加的每個(gè)新頂點(diǎn))總是被添加在域空間中的其最終位置處。結(jié)果是,當(dāng)細(xì)節(jié)級(jí)別(和因而TF)改變時(shí),頂點(diǎn)不像一些現(xiàn)有技術(shù)中的那樣在整個(gè)表面上“滑動(dòng)”,這可引起漂浮/擺動(dòng)偽像。
圖5是改進(jìn)的細(xì)分方法的流程圖。當(dāng)補(bǔ)片(被稱(chēng)為輸入補(bǔ)片)被饋送到細(xì)分器內(nèi)時(shí),該方法開(kāi)始。細(xì)分器(其可以是硬件細(xì)分器)接收輸入補(bǔ)片(塊502),其中這個(gè)輸入補(bǔ)片可以是三角形補(bǔ)片602、四邊形補(bǔ)片604或等值線補(bǔ)片606,如圖6所示。雖然四邊形補(bǔ)片606是在域空間中的正方形(頂點(diǎn)為(0,0)、(1,0)、(0,1)和(1,1)),但是其在自然空間中(即在3D或2D環(huán)境內(nèi))代表的形狀可以是不同的形狀。如上所述,細(xì)分是在域空間中而不是在自然空間中被執(zhí)行。
如果輸入補(bǔ)片是三角形補(bǔ)片或四邊形補(bǔ)片,則在細(xì)分算法遞歸地應(yīng)用于在輸入補(bǔ)片內(nèi)的三角形補(bǔ)片(塊506)之前補(bǔ)片經(jīng)歷“預(yù)處理”階段(塊504)。預(yù)處理階段用于確保細(xì)分獨(dú)立于方位,且因此,對(duì)等值線補(bǔ)片606是不需要的(因?yàn)樗惴▽?duì)稱(chēng)地工作,且所以沒(méi)有任何因而產(chǎn)生的細(xì)分的方位相關(guān)性)。
如果輸入補(bǔ)片是三角形補(bǔ)片602,則預(yù)處理階段(塊504)輸出一個(gè)三角形補(bǔ)片602(其與輸入三角形補(bǔ)片相同,且其中不需要細(xì)分)或三個(gè)三角形補(bǔ)片608-610。如果輸入補(bǔ)片是四邊形補(bǔ)片604,則預(yù)處理階段(塊504)輸出四個(gè)三角形補(bǔ)片612-615。如果輸入補(bǔ)片是等值線補(bǔ)片,則不需要預(yù)處理(由于上面闡述的原因)且細(xì)分算法遞歸地應(yīng)用于輸入等值線補(bǔ)片(塊508)。
圖7-10更詳細(xì)地示出改進(jìn)的細(xì)分方法的階段。如所述的該方法使用下面的標(biāo)記:
·THRES–細(xì)分的閾值,其可例如被設(shè)置為0.0或0.5,其中頂點(diǎn)TF是到以2為底的對(duì)數(shù)的細(xì)分的量的值。
·VERTEX.TF–頂點(diǎn)的細(xì)分因數(shù),其可以是任何實(shí)數(shù)(雖然在各種例子中,任何負(fù)值可被強(qiáng)制限制到零,使得細(xì)分因數(shù)是非負(fù)實(shí)數(shù))。在各種例子中,頂點(diǎn)TF是至少0.0(無(wú)細(xì)分)和至多6.0(最大細(xì)分),其中以2為底的對(duì)數(shù)的細(xì)分的量的值,例如5.0的細(xì)分因數(shù)相應(yīng)于32個(gè)再分。然而在其它例子中,最大頂點(diǎn)TF可超過(guò)6.0(或64,其中未使用以2為底的對(duì)數(shù))。
·INTERVAL–在每次迭代之后VERTEX.TF減小的非零數(shù)量,其可例如被設(shè)置為0.5,其中頂點(diǎn)TF是以2為底的對(duì)數(shù)的細(xì)分的量的值。
·MEAN()–給出二、三或四個(gè)頂點(diǎn)細(xì)分因數(shù)的“平均值”的對(duì)稱(chēng)函數(shù)。這可以是算術(shù)平均或可選的函數(shù),且下面更詳細(xì)描述一個(gè)這樣的可選函數(shù)。
為了下面的描述的目的,頂點(diǎn)TF是以2為底的對(duì)數(shù)的細(xì)分的量;然而,將認(rèn)識(shí)到,它可以可選地被寫(xiě)為它的實(shí)際全值,且在這種情況下,下面闡述的頂點(diǎn)TF的計(jì)算以及參數(shù)THRES和INTERVAL的值將相應(yīng)地被修改。然而,因?yàn)橛布?shí)現(xiàn)快得多,其中使用以2為底的對(duì)數(shù),在到細(xì)分器的輸入包括實(shí)際頂點(diǎn)TF(而不是使用以2為底的對(duì)數(shù))的例子中,輸入頂點(diǎn)TF可在實(shí)現(xiàn)本文所述的改進(jìn)的細(xì)分方法之前轉(zhuǎn)換成以2為底的對(duì)數(shù)。
圖7是三角形輸入補(bǔ)片602的預(yù)處理階段504的流程圖,且如圖6所示,三角形補(bǔ)片的頂點(diǎn)可被標(biāo)記為“TOP”、“RIGHT”和“LEFT”。哪個(gè)頂點(diǎn)是“上”是任意選擇的,且這個(gè)預(yù)處理階段確保算法是旋轉(zhuǎn)和反射性地對(duì)稱(chēng)的(即,使得相同的細(xì)分結(jié)果被實(shí)現(xiàn),而不考慮頂點(diǎn)在這個(gè)預(yù)處理階段中被考慮的順序)。
如圖7所述,當(dāng)三角形補(bǔ)片(TOP,RIGHT,LEFT)602被饋送到細(xì)分器內(nèi)且任何頂點(diǎn)細(xì)分因數(shù)大于閾值時(shí),THRES(在塊702中的“是”)細(xì)分出現(xiàn)。被表示為“MID”的新頂點(diǎn)616在三角形的中心處(例如在質(zhì)量中心處)形成(塊704),且新MID頂點(diǎn)的頂點(diǎn)TF被計(jì)算(在塊706中)為:
MID.TF=MEAN(TOP.TF,LEFT.TF,RIGHT.TF) (1)
其中MID.TF是MID頂點(diǎn)的頂點(diǎn)TF,TOP.TF是TOP頂點(diǎn)的頂點(diǎn)TF,LEFT.TF是LEFT頂點(diǎn)的頂點(diǎn)TF,以及RIGHT.TF是RIGHT頂點(diǎn)的頂點(diǎn)TF。所有四個(gè)細(xì)分因數(shù)(即TOP.TF、LEFT.TF、RIGHT.TF和MID.TF)然后減小了參數(shù)INTERVAL(即通過(guò)減去INTERVAL,其中以2為底的對(duì)數(shù)標(biāo)記被使用),因?yàn)橐恍┘?xì)分出現(xiàn)(塊708)。
三個(gè)三角形補(bǔ)片(MID,RIGHT,LEFT)610、(MID,LEFT,TOP)609和(MID,TOP,RIGHT)608然后形成(塊710),且正是這些三角形補(bǔ)片使用如下所述的細(xì)分算法被細(xì)分(在塊506中)。
如果沒(méi)有一個(gè)頂點(diǎn)細(xì)分因數(shù)大于閾值THRES(在塊702中的“否”),則沒(méi)有細(xì)分出現(xiàn)。在這種情況下,補(bǔ)片簡(jiǎn)單地作為一個(gè)基元穿過(guò)細(xì)分器(塊712),以便使該方法沒(méi)有過(guò)度細(xì)分。
圖8是四邊形輸入補(bǔ)片604的預(yù)處理階段504的流程圖,且如圖6所示,四邊形補(bǔ)片的頂點(diǎn)可被標(biāo)記為“TLEFT(或左上)”、“TRIGHT(或右上)”、“BRIGHT(或右下)”和“BLEFT(或左下)”。哪些頂點(diǎn)是“上”和哪些是“下”是任意選擇的,且這個(gè)預(yù)處理階段確保算法是旋轉(zhuǎn)和反射性地對(duì)稱(chēng)的(即,使得相同的細(xì)分結(jié)果被實(shí)現(xiàn),而不考慮頂點(diǎn)在這個(gè)預(yù)處理階段中被考慮的順序)。
如圖8所述,當(dāng)四邊形補(bǔ)片(TLEFT,TRIGHT,BLEFT,BRIGHT)604被饋送到細(xì)分器內(nèi)時(shí),被表示為“MID”的新頂點(diǎn)618在四邊形的中心處、即在域空間坐標(biāo)(0.5,0.5)處形成(塊804),且新MID頂點(diǎn)的頂點(diǎn)TF被計(jì)算(在塊806中)為:
MID.TF=MEAN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF) (2)其中MID.TF是MID頂點(diǎn)的頂點(diǎn)TF,TLEFT.TF是TLEFT頂點(diǎn)的頂點(diǎn)TF等。所有五個(gè)細(xì)分因數(shù)(即TLEFT.TF、TRIGHT.TF、BRIGHT.TF、BLEFT.TF和MID.TF)然后減小了參數(shù)INTERVAL(即通過(guò)減去INTERVAL,其中以2為底的對(duì)數(shù)標(biāo)記被使用),因?yàn)橐恍┘?xì)分出現(xiàn)(塊808)。
四個(gè)三角形補(bǔ)片(MID,TLEFT,TRIGHT)612、(MID,TRIGHT,BRIGHT)613、(MID,BRIGHT,BLEFT)614和(MID,BLEFT,TLEFT)615然后形成(塊810),且正是這些三角形補(bǔ)片使用如下所述的細(xì)分方法被細(xì)分(在塊506中)。
圖9是將算法遞歸地應(yīng)用于由預(yù)處理階段輸出的三個(gè)或四個(gè)三角形補(bǔ)片中的每個(gè)的流程圖,且這可參考圖10所示的三角形被描述。如圖10所示,三角形補(bǔ)片是在順時(shí)針?lè)较蛏系娜齻€(gè)頂點(diǎn)(TOP,RIGHT,LEFT)的有序集合。注意,第一頂點(diǎn)總是“TOP”頂點(diǎn),且對(duì)于初始三角形補(bǔ)片(如由預(yù)處理階段輸出的),這個(gè)“TOP”頂點(diǎn)相應(yīng)于在預(yù)處理期間添加的“MID”頂點(diǎn)608、618(塊704、804)。
如圖9所示,給定三角形補(bǔ)片1000(其在第一次迭代中是初始補(bǔ)片900),當(dāng)且僅當(dāng)下式成立時(shí)細(xì)分出現(xiàn):
LEFT.TF>THRES或RIGHT.TF>THRES (3)
其中LEFT.TF是LEFT頂點(diǎn)的頂點(diǎn)TF,且RIGHT.TF是RIGHT頂點(diǎn)的頂點(diǎn)TF(在塊902中的“是”)。
如果LEFT.TF>THRES或RIGHT.TF>THRES(在塊902中的“是”),則形成新頂點(diǎn)MID 1002(在塊904中),其在域空間(由箭頭1004指示)中將邊LEFT->RIGHT分成兩個(gè)部分。新MID頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)然后被計(jì)算(在塊906中)為:
MID.TF=MEAN(LEFT.TF,RIGHT.TF) (4)
其中MID.TF是MID頂點(diǎn)的頂點(diǎn)TF,LEFT.TF是LEFT頂點(diǎn)的頂點(diǎn)TF,以及RIGHT.TF是RIGHT頂點(diǎn)的頂點(diǎn)TF。為了協(xié)定起見(jiàn),定義MID再分的邊的頂點(diǎn)LEFT和RIGHT被表示為MID的“父親”。
在很多例子中,新頂點(diǎn)MID作為在域空間中的邊LEFT->RIGHT的二等分線被添加。然而,在其它例子中,新頂點(diǎn)MID可被添加在一個(gè)位置處,該位置在域空間中的邊LEFT->RIGHT上但并非絕對(duì)地平分它。在各種例子中,沿著邊的MID的位置可例如使用父頂點(diǎn)的頂點(diǎn)TF進(jìn)行加權(quán)。
兩個(gè)子三角形補(bǔ)片(MID,LEFT,TOP)1006和(MID,TOP,RIGHT)1008形成(塊908和910),且在每個(gè)三角形補(bǔ)片1006、1008中的所有細(xì)分因數(shù)減小了參數(shù)INTERVAL(塊912,即通過(guò)減去INTERVAL,其中以2為底的對(duì)數(shù)標(biāo)記被使用)。該方法然后在這些補(bǔ)片中的每個(gè)上遞歸。當(dāng)對(duì)在塊908或塊910中創(chuàng)建的三角形補(bǔ)片執(zhí)行該方法時(shí),“TOP”頂點(diǎn)相應(yīng)于被添加(在塊904中)以創(chuàng)建補(bǔ)片的“MID”頂點(diǎn)1002,且這對(duì)父補(bǔ)片的“TOP”頂點(diǎn)將是不同的(例如補(bǔ)片1000可被考慮為補(bǔ)片1006和1008的父親,且1000的“TOP”頂點(diǎn)1010與補(bǔ)片1006和1008中的每個(gè)的“TOP”頂點(diǎn)1002不同)。
如果在任何階段沒(méi)有細(xì)分出現(xiàn)(在塊902中的“否”),則基元(其為補(bǔ)片)被添加到緩沖器(塊914),例如到索引緩沖器。
如上所述,圖9的方法應(yīng)用于由預(yù)處理階段(塊504)產(chǎn)生的三個(gè)或四個(gè)三角形補(bǔ)片中的每個(gè)并遞歸地應(yīng)用于通過(guò)那些初始補(bǔ)片的再分而創(chuàng)建的任何補(bǔ)片。
因?yàn)轫旤c(diǎn)細(xì)分因數(shù)是有限的且INTERVAL是不變的和非零的,最終所有頂點(diǎn)細(xì)分因數(shù)(在所有三角形補(bǔ)片中)將至多是THRES且該過(guò)程將終止。
如可在圖10中看到的,最新添加的MID頂點(diǎn)是在被形成(在塊908和910中)的這兩個(gè)補(bǔ)片中的頂點(diǎn),且在這兩個(gè)補(bǔ)片中,這個(gè)頂點(diǎn)被考慮為“TOP”頂點(diǎn)。當(dāng)遞歸成兩個(gè)子補(bǔ)片時(shí),最新添加的MID頂點(diǎn)的頂點(diǎn)細(xì)分因數(shù)的當(dāng)前值必須被使用。在可通過(guò)為每個(gè)子補(bǔ)片復(fù)制頂點(diǎn)TF或有對(duì)算法的最后步驟而確保的示例實(shí)現(xiàn)中,其中對(duì)于任何補(bǔ)片且在它的兩個(gè)子補(bǔ)片上遞歸之后,每個(gè)頂點(diǎn)TF增加了參數(shù)INTERVAL。
在圖9中使用的相同算法也可應(yīng)用于等值線補(bǔ)片(在塊508中),雖然如上所述,不需要預(yù)處理,且在等值線補(bǔ)片的情況下,算法應(yīng)用于線(即等值線和子等值線)而不是如可參考圖6所述的三角形。
如果等值線補(bǔ)片(LEFT,RIGHT)606被饋送到細(xì)分器(作為初始補(bǔ)片900),則如果LEFT.TF或RIGHT.TF高于THRES(在塊902中的“是”),線被再分。如果LEFT.TF或RIGHT.TF高于THRES(在塊902中的“是”),則添加在域空間中再分(例如平分)LEFT->RIGHT等值線606(塊904)的新MID頂點(diǎn)620。最新添加的MID頂點(diǎn)的頂點(diǎn)TF被計(jì)算(在塊906中)為:
MID.TF=MEAN(LEFT.TF,RIGHT.TF) (5)
其中MID.TF是MID頂點(diǎn)的頂點(diǎn)TF,LEFT.TF是LEFT頂點(diǎn)的頂點(diǎn)TF,以及RIGHT.TF是RIGHT頂點(diǎn)的頂點(diǎn)TF。
MID頂點(diǎn)620的添加將原始等值線606分成兩個(gè)子等值線622、624(在塊908和910中形式),且每個(gè)頂點(diǎn)TF減小了2*INTERVAL(在塊912中,即通過(guò)減去2*INTERVAL,其中以2為底的對(duì)數(shù)標(biāo)記被使用)——注意,這比三角形補(bǔ)片產(chǎn)生再分的正確量更快地減小頂點(diǎn)TF。該方法然后在這些子等值線中的每個(gè)上遞歸并在所有頂點(diǎn)細(xì)分因數(shù)是至多THRES時(shí)終止。
上面所述的改進(jìn)的細(xì)分方法使用MEAN()函數(shù)。雖然這在一些例子中可以是頂點(diǎn)細(xì)分因數(shù)的算術(shù)平均,這在從一個(gè)頂點(diǎn)移動(dòng)到另一頂點(diǎn)時(shí)將導(dǎo)致幾何結(jié)構(gòu)的平穩(wěn)引入,這樣的函數(shù)將常常導(dǎo)致T結(jié)出現(xiàn)和因而針對(duì)頂點(diǎn)TF的某些值而破壞(例如在整個(gè)補(bǔ)片上的頂點(diǎn)TF中的差異是相當(dāng)極端的)。因此,在很多例子中,可選的函數(shù)如下用于MEAN():
MEAN(TF1,TF2,…)=MIN(AVG(TF1,TF2,…),MIN(TF1,TF2,…)+INTERVAL) (6)
其中AVG()是在括弧內(nèi)的值的列表的算術(shù)平均值(例如在上面的例子中的頂點(diǎn)TF1、頂點(diǎn)TF2、…),且MIN()是在括弧內(nèi)的值的列表(例如在上面的例子中的頂點(diǎn)TF1、頂點(diǎn)TF2、…)中的最小值。
上面給出的MEAN()函數(shù)是確保沒(méi)有破裂的最接近算術(shù)平均值的函數(shù),且這可展示為如下面所闡述的。
如上所述,在細(xì)分內(nèi)的T結(jié)可導(dǎo)致破裂,且因此可能希望確保沒(méi)有T結(jié)可在域的內(nèi)部中或沿著由兩個(gè)域共用的邊產(chǎn)生。本文所述的改進(jìn)的細(xì)分方法通過(guò)保證任何邊的再分唯一地由邊的端頂點(diǎn)的細(xì)分因數(shù)(且不由其它)定義來(lái)確保此。因此,如果邊被兩個(gè)域(即兩個(gè)相鄰域)共用,則域共用它的兩個(gè)端頂點(diǎn)(和它們的頂點(diǎn)細(xì)分因數(shù)),且相同的再分將產(chǎn)生。
如上所述,只有當(dāng)端頂點(diǎn)細(xì)分因數(shù)超過(guò)閾值時(shí),再分才出現(xiàn),所以沒(méi)有額外的再分可出現(xiàn)。唯一的可能問(wèn)題是如果由于以前的再分的級(jí)別未提前發(fā)生,再分在它應(yīng)出現(xiàn)時(shí)不出現(xiàn),且因此為了避免這個(gè)問(wèn)題,必須滿足下面的條件(其指的是具有如在圖10中所示的標(biāo)記的頂點(diǎn)的三角形補(bǔ)片1000):
在TOP->LEFT邊上所需的細(xì)分暗示在LEFT->RIGHT邊上發(fā)生的細(xì)分
即(TOP.TF>THRES或LEFT.TF>THRES)
=>(LEFT.TF+INTERVAL>THRES或RIGHT.TF+INTERVAL>THRES)
這個(gè)條件在不失去一般性的情況下考慮由于對(duì)稱(chēng)性只考慮左手邊。
可接著證明上面規(guī)定的MEAN()函數(shù)滿足這個(gè)條件:
情況1:如果LEFT.TF>THRES則LEFT>TF+INTERVAL>THRES
情況2:TOP.TF>THRES具有下面的兩個(gè)子情況:
情況2.1(TOP是如在圖10中的補(bǔ)片1000中所示的補(bǔ)片的中間頂點(diǎn),且這相應(yīng)于在圖6中的頂點(diǎn)616或618),即TOP.TF=MEAN(LEFT.TF,RIGHT.TF,…)),因此
THRES<TOP.TF
=MIN(AVG(LEFT.TF,RIGHT.TF,…),MIN(LEFT.TF,RIGHT.TF,…)+INTERVAL)
<=MIN(LEFT.TF,RIGHT.TF,…)+INTERVAL
<=LEFT.TF+INTERVAL
所以LEFT.TF+INTERVAL>THRES。
情況2.2(TOP通過(guò)具有LEFT的再分產(chǎn)生,作為端頂點(diǎn),如在圖11中的補(bǔ)片1100中所示,其中TOP 1102通過(guò)邊LEFT->OTHER的再分產(chǎn)生,即TOP.TF=MEAN(LEFT.TF,…)),所以
THRES<TOP.TF
=MIN(AVG(LEFT.TF,…),MIN(LEFT.TF,…)+INTERVAL)
<=MIN(LEFT.TF,…)+INTERVAL
<=LEFT.TF+INTERVAL
所以LEFT.TF+INTERVAL>THRES。
在情況2.2中,同一邏輯可應(yīng)用于TOP.TF=MEAN(RIGHT.TF,…)(其相應(yīng)于在圖11中所示的反射)以如所希望的得到RIGHT.TF+INTERVAL>THRES。還要注意的是,函數(shù)的選擇是最佳的,因?yàn)槌^(guò)最小值加上INTERVAL的任何函數(shù)將不總是滿足這些不等式。因此,MEAN()函數(shù)不能是更接近算術(shù)平均值的任何函數(shù)。
通過(guò)使用以2為底的對(duì)數(shù)標(biāo)記以及如圖12所示的THRES=0.0和INTERVAL=0.5以細(xì)分因數(shù)(2,1,1,1)來(lái)細(xì)分四邊形1202的例子,來(lái)進(jìn)一步描述改進(jìn)的細(xì)分方法。在預(yù)處理階段(塊504和圖8)中,添加具有細(xì)分因數(shù)1.25(在塊806中計(jì)算的算術(shù)平均值)的中間頂點(diǎn)1204(在塊804中)。形成四個(gè)三角形補(bǔ)片(在塊810中),中間頂點(diǎn)作為每個(gè)補(bǔ)片的上頂點(diǎn),將每個(gè)TF減小了0.5(在塊808中,這可在塊810之前或之后被執(zhí)行),如在圖12中的第二例子1206中所示的。
在每個(gè)三角形補(bǔ)片(塊506和圖9)上的第一遞歸中,每個(gè)下邊被再分(在塊904中,因?yàn)?.5高于閾值THRES=0.0),且四個(gè)新頂點(diǎn)(具有新頂點(diǎn)TF)和八個(gè)新補(bǔ)片形成(在塊904-910中),如在圖12的第三例子1208中所示的。所有細(xì)分因數(shù)然后減小0.5——如在圖12中的第四例子1210中所示的INTERVAL(在塊912中)的值。
在八個(gè)三角形補(bǔ)片的每個(gè)上的下一遞歸中,通過(guò)添加新頂點(diǎn)、計(jì)算那些新頂點(diǎn)的頂點(diǎn)TF并形成如在圖12中的第五例子1212中所示的16個(gè)新補(bǔ)片來(lái)再分(在塊904中,因?yàn)?.25高于THRES)八個(gè)補(bǔ)片中的每個(gè)的下邊。所有細(xì)分因數(shù)然后再次減小0.5(在塊912中),且在另一遞歸中,進(jìn)行最后兩次再分(如在圖12中的最后一個(gè)例子1214中所示的),其中只有左上頂點(diǎn)細(xì)分因數(shù)(0.5)高于閾值。在這個(gè)步驟之后,所有頂點(diǎn)細(xì)分因數(shù)都是至多0(且如圖12所示,頂點(diǎn)TF可以是負(fù)的)且該過(guò)程終止。
因?yàn)樯厦嫠龅母倪M(jìn)的細(xì)分方法獨(dú)立地處理每個(gè)補(bǔ)片,它可以以高并行程度實(shí)現(xiàn)。與任何細(xì)分方法一樣,沿著域邊界被共用的頂點(diǎn)可被緩存,使得它們不被復(fù)制。因?yàn)樵摲椒ㄊ沁f歸的,芯片(例如硅)空間和所需的存儲(chǔ)器的數(shù)量是最小的。下面概述示例要求:
所提出的方法所需的額外頂點(diǎn)成員是每個(gè)輸入頂點(diǎn)的固定點(diǎn)細(xì)分因數(shù)。M是輸出頂點(diǎn)緩沖器的當(dāng)前大小,且α()是M的某個(gè)函數(shù),取決于緩沖器如何被構(gòu)造。α()一般是在log(M)和M之間的某個(gè)數(shù)。
如上所述,當(dāng)渲染等邊三角形或具有高的面積與周長(zhǎng)比的平方根那些三角形時(shí),實(shí)現(xiàn)要渲染的最小數(shù)量的循環(huán)。類(lèi)似地,當(dāng)面積與周長(zhǎng)比的平方根消失、例如使三角形惡化時(shí),最壞性能出現(xiàn)。對(duì)于具有邊長(zhǎng)度a、b和c的給定三角形補(bǔ)片,所提出的方法產(chǎn)生至多四個(gè)不同類(lèi)別的三角形(一直到相似)A(具有以比a:b:c的邊)、B(具有以比a:d:c/2的邊)、C(具有以比d:b:c/2的邊)和D(具有以比a/2:b/2:d的邊),如圖13所示。在補(bǔ)片是等值線(即a=b)的情況下,則B類(lèi)似于C,且因此只有三個(gè)類(lèi)別。如果補(bǔ)片都是等值線且在上頂點(diǎn)處成直角,則有完全相似性(即只有單個(gè)類(lèi)別的三角形)。在所有情況下,三角形類(lèi)別的數(shù)量是有限的;因此最小的面積與周長(zhǎng)比的平方根是有界限的且不能消失,除非補(bǔ)片本身惡化。相反,很多已知的細(xì)分方法沒(méi)有關(guān)于面積與周長(zhǎng)比的平方根的下限,且實(shí)際上消失的三角形大量地出現(xiàn)。
圖14示出在使用本文所述的改進(jìn)的細(xì)分方法和已知的細(xì)分方法——奇數(shù)分?jǐn)?shù)分割(如上面參考圖1所述的)得到的結(jié)果之間的比較。示出八個(gè)單獨(dú)的比較1401-1408,且每次比較,使用改進(jìn)的細(xì)分方法得到的結(jié)果顯示在左邊,而使用奇數(shù)分?jǐn)?shù)分割得到的結(jié)果就顯示在右邊。
如在第一比較1401中所示的,改進(jìn)的細(xì)分方法以比奇數(shù)分?jǐn)?shù)分割多兩個(gè)的基元開(kāi)始以確保細(xì)分獨(dú)立于方位。如上所述,這四個(gè)三角形基元在預(yù)處理階段(塊504)中產(chǎn)生。使用在改進(jìn)的細(xì)分方法中的算法的細(xì)分(在塊506中)通過(guò)將兩個(gè)補(bǔ)片分成類(lèi)似的三角形而開(kāi)始,如在第二比較1402中所示的。相反,在奇數(shù)分?jǐn)?shù)分割(顯示在右邊)中,細(xì)分以添加12個(gè)新的細(xì)三角形并接著添加多得多的三角形來(lái)開(kāi)始,所有新的細(xì)三角形都幾乎是冗余的(因?yàn)樗鼈兡敲醇?xì),使得幾乎整個(gè)域由僅僅兩個(gè)基元組成,如在第二比較1402中清楚可見(jiàn)的,這意味著這些細(xì)三角形在移位之后不將任何細(xì)節(jié)添加到域的大部分),如在比較1403中所示的。
如在隨后的比較1403-1408中所示的,改進(jìn)的細(xì)分方法繼續(xù)添加一半面積的相似三角形以近似于在細(xì)分因數(shù)中的增加。奇數(shù)分?jǐn)?shù)分割繼續(xù)添加過(guò)多的最初冗余的細(xì)三角形以達(dá)到相同的效果。改進(jìn)的細(xì)分方法引入頂點(diǎn),這些頂點(diǎn)不在域空間中移動(dòng)。相反,在奇數(shù)分?jǐn)?shù)分割中,頂點(diǎn)在老頂點(diǎn)的頂部上開(kāi)始并向外生長(zhǎng)到適當(dāng)位置內(nèi),且因此,幾何結(jié)構(gòu)看起來(lái)起伏。改進(jìn)的細(xì)分方法穩(wěn)定在如在最后的比較1408中所示的十字形圖案內(nèi),而奇數(shù)分?jǐn)?shù)分割繼續(xù)將整行和整列的頂點(diǎn)添加在每個(gè)奇數(shù)LOD/TF處,這又在域空間中移動(dòng)所有頂點(diǎn)。
允許用戶(hù)規(guī)定補(bǔ)片的中心TF有時(shí)可能是合乎需要的,該中心TF在LOD上不同于補(bǔ)片的中心的角的頂點(diǎn)TF,特別是在動(dòng)畫(huà)中。例如,這可用于更好地近似與在四邊形或三角形補(bǔ)片之上的紋理相關(guān)的高度圖,例如,如果該圖在動(dòng)物的刺突的情況下具有在中間的非??焖俚奶S。圖15示出添加另一可選的預(yù)處理階段(塊1502)的對(duì)圖5(如上所述)的方法的變形,該預(yù)處理階段實(shí)現(xiàn)四邊形或三角形補(bǔ)片的中心TF的使用。如圖15所示,這個(gè)額外的預(yù)處理階段(在塊1502中)在上面所述的預(yù)處理階段(在塊504中)之前實(shí)現(xiàn),并分割輸入補(bǔ)片(其可以是四邊形或三角形)。與原始預(yù)處理階段(塊504)不同,額外的預(yù)處理階段(塊1502)也可應(yīng)用于等值線;然而它在這個(gè)上下文中較不有用。在等值線的情況下,等值線被再分,且最新添加的中間頂點(diǎn)被分配中心TF。再分然后如上所述在兩個(gè)子等值線(例如LEFT-MID和MID-RIGHT)上繼續(xù)進(jìn)行。
可參考圖16和17描述額外的預(yù)處理階段(塊1502)。圖16示出對(duì)四邊形輸入補(bǔ)片1602或三角形輸入補(bǔ)片1602的階段的應(yīng)用的示意圖,以及圖17示出額外的預(yù)處理階段的流程圖。在中心細(xì)分因數(shù)被啟用的情況下,用戶(hù)必須向細(xì)分器提供每補(bǔ)片中心TF以及每個(gè)角頂點(diǎn)的頂點(diǎn)TF(對(duì)于三角形補(bǔ)片是三個(gè)而對(duì)于四邊形補(bǔ)片是四個(gè))。
如圖16所示,額外的預(yù)處理階段將四邊形輸入補(bǔ)片1602分成四個(gè)四邊形補(bǔ)片1606-1609并將三角形輸入補(bǔ)片1604分成三個(gè)四邊形補(bǔ)片1610-1612。為了實(shí)現(xiàn)此,預(yù)處理四邊形輸入補(bǔ)片1602需要添加五個(gè)新頂點(diǎn)(塊1702):具有中心TF的中心頂點(diǎn)1614(由所有四個(gè)子域1606-1609共用)、中上頂點(diǎn)1616、中右頂點(diǎn)1618、中下頂點(diǎn)1620和中左頂點(diǎn)1622。通過(guò)采用最新添加的頂點(diǎn)的相鄰角TF的MEAN()對(duì)每個(gè)最新添加的頂點(diǎn)計(jì)算(在塊1706中)它們的細(xì)分因數(shù)。在各種例子中,可使用由方程(6)給出的MEAN()函數(shù),因?yàn)樗鼘?dǎo)致更一致的細(xì)分模式;然而在其它例子中,可使用算術(shù)平均值。
預(yù)處理三角形輸入補(bǔ)片1604需要添加四個(gè)新頂點(diǎn)(塊1704):具有中心TF的中心頂點(diǎn)1624(由所有三個(gè)子域共用)、中右頂點(diǎn)1626、中下頂點(diǎn)1628和中左頂點(diǎn)1630。通過(guò)采用最新添加的頂點(diǎn)的相鄰角TF的MEAN()對(duì)每個(gè)最新添加的頂點(diǎn)給出(如在塊1706中計(jì)算的)它們的細(xì)分因數(shù)。如上所述,在各種例子中,可使用由方程(6)給出的MEAN()函數(shù),因?yàn)樗鼘?dǎo)致更一致的細(xì)分模式;然而在其它例子中,可使用算術(shù)平均值。
額外的預(yù)處理階段(塊1708)的最后一個(gè)階段減小每個(gè)細(xì)分因數(shù),且在各種例子中,每個(gè)TF減小了2*INTERVAL。TF的這個(gè)減小(在輸入到塊504的原始預(yù)處理階段之前)確保在補(bǔ)片的每條邊界邊上做出正確數(shù)量的再分并指示該細(xì)分已出現(xiàn)。
在將原始輸入補(bǔ)片再分成三個(gè)或四個(gè)四邊形補(bǔ)片后,在額外的預(yù)處理階段(塊1502)中,這三個(gè)或四個(gè)四邊形補(bǔ)片(具有如在塊1708中計(jì)算的其頂點(diǎn)TF)被輸入到原始預(yù)處理階段(塊504),好像它們是原始輸入補(bǔ)片一樣,且該方法如上所述繼續(xù)進(jìn)行。圖18示出可使用圖15的方法得到的各種示例細(xì)分。
由于額外的預(yù)處理階段(塊1502和圖17)將每個(gè)域邊再分至少一次的事實(shí),即使使用0.0的TF,任何單個(gè)所連接的網(wǎng)也應(yīng)在有或沒(méi)有中心TF的情況下完全被細(xì)分,以確保沒(méi)有破裂出現(xiàn)(即,在單個(gè)所連接的網(wǎng)絡(luò)中的所有補(bǔ)片都應(yīng)使用同一方法,即它們都應(yīng)使用圖5的方法或圖15的方法,且沒(méi)有使用圖5的方法的一些輸入補(bǔ)片和使用圖15的方法的其它輸入補(bǔ)片)。
本文所述的改進(jìn)的細(xì)分方法處理在已知的細(xì)分方法中產(chǎn)生的上面所述的一個(gè)或多個(gè)問(wèn)題。在各種例子中,改進(jìn)的細(xì)分方法可處理上面詳述的很多或所有問(wèn)題,如下:
·無(wú)突然的舉動(dòng)——使用改進(jìn)的細(xì)分方法,當(dāng)細(xì)分因數(shù)增加時(shí)幾何結(jié)構(gòu)增加了小增量以產(chǎn)生平滑的過(guò)渡。這幫助渲染時(shí)間的預(yù)測(cè)。
·無(wú)破裂——如上面展示的,改進(jìn)的細(xì)分方法不產(chǎn)生在域內(nèi)或沿著域的邊界的T結(jié)。
·無(wú)漂浮——當(dāng)細(xì)分因數(shù)增加時(shí),由細(xì)分器引入的每個(gè)頂點(diǎn)維持其域空間位置且因此沒(méi)有“漂浮”偽像。
·無(wú)過(guò)/欠細(xì)分——在邊的每端處的整數(shù)頂點(diǎn)細(xì)分因數(shù)t相應(yīng)于2t個(gè)再分。此外,在四邊形上的t的平均頂點(diǎn)細(xì)分因數(shù)大致相應(yīng)于22t個(gè)頂點(diǎn)和多達(dá)兩倍的基元(其為最小的)。類(lèi)似地,三角形補(bǔ)片相應(yīng)于個(gè)頂點(diǎn)和多達(dá)兩倍的基元。
·無(wú)細(xì)三角形——如上所述,改進(jìn)的細(xì)分方法每補(bǔ)片只產(chǎn)生四個(gè)(或更少)類(lèi)別的三角形,且這限制每補(bǔ)片面積與周長(zhǎng)比的平方根的最小值。
·空間/時(shí)間復(fù)雜度——算法是遞歸的(如圖9所示),且支持相當(dāng)大的并行性的每個(gè)子域/補(bǔ)片可獨(dú)立地進(jìn)行處理。輸入頂點(diǎn)需要頂點(diǎn)細(xì)分因數(shù)的額外固定點(diǎn)值。
此外,本文所述的改進(jìn)的細(xì)分方法在各種例子中具有下面的另外的特質(zhì):
·方位無(wú)關(guān)——通過(guò)將補(bǔ)片分成三角形補(bǔ)片的扇,中間頂點(diǎn)作為每個(gè)的頂(在預(yù)處理階段中,塊504),對(duì)三角形的方位不做出選擇,所以將總是產(chǎn)生相同的細(xì)分。
·N邊形——改進(jìn)的細(xì)分方法可容易適合于通過(guò)將補(bǔ)片分成三角形的扇來(lái)支持具有N個(gè)邊的任何多邊形補(bǔ)片(在預(yù)處理階段504的變形中)。在每種情況下,對(duì)于平均細(xì)分因數(shù)t,該方法將產(chǎn)生大約個(gè)頂點(diǎn)和多達(dá)兩倍的基元。
雖然上面的例子(例如在圖5中)示出改進(jìn)的細(xì)分方法是針對(duì)三角形、四邊形和等值線補(bǔ)片來(lái)實(shí)現(xiàn)的,將認(rèn)識(shí)到,該方法可對(duì)那些補(bǔ)片的僅僅子集(例如只對(duì)四邊形補(bǔ)片、只對(duì)三角形補(bǔ)片或只對(duì)四邊形和三角形補(bǔ)片)實(shí)現(xiàn)的。
雖然圖5示出包括預(yù)處理階段(塊504)和細(xì)分算法的遞歸應(yīng)用(在塊506和508中)的改進(jìn)的細(xì)分方法,將認(rèn)識(shí)到,圖9所示的方法可以可選地獨(dú)立地實(shí)現(xiàn)而沒(méi)有預(yù)處理階段(塊504且如圖7和圖8所示的),或可選地,預(yù)處理階段(塊504)可以用與在圖7和圖8中所示的不同的方式實(shí)現(xiàn)。類(lèi)似地,在使用中心細(xì)分因數(shù)(如圖15所示)的情況下,該方法可以被實(shí)現(xiàn)而沒(méi)有預(yù)處理階段(塊504且如圖7和圖8所示的),或可選地,預(yù)處理階段(塊504)可以用與在圖7和圖8中所示的不同的方式實(shí)現(xiàn)。
在上面所述的改進(jìn)的細(xì)分方法的另外的變形中,頂點(diǎn)細(xì)分因數(shù)可以不同地被表示,即通過(guò)由一個(gè)或多個(gè)縮放、轉(zhuǎn)換或其它變換來(lái)變換它們。產(chǎn)生更新的頂點(diǎn)細(xì)分因數(shù)(例如在塊708、808和912中)因此不同于減去INTERVAL,例如頂點(diǎn)TF可通過(guò)將二增加到它們的冪并通過(guò)除以根號(hào)2來(lái)表示。更一般地,對(duì)于任何F(x)——在實(shí)數(shù)上的可逆函數(shù),細(xì)分因數(shù)TF’可由TF’=F(TF)給出。不是減去INTERVAL,下面的函數(shù)可用于更新頂點(diǎn)TF(如在塊708、808和912中計(jì)算的):
TF’:=F(F-1(TF’)-INTERVAL)
在這個(gè)例子中,測(cè)試條件(而不是由上面的方程(3)給出的條件)將是TF’>F(THRES)或TF’<F(THRES),其中不等式的選擇取決于F是保序的還是反序的。通過(guò)由F()共軛,在該方法中沒(méi)有語(yǔ)義差異。
在例子中,如果TF’=F(TF)=2TF(即在以2為底的對(duì)數(shù)中不再起作用),則用于更新頂點(diǎn)TF(例如在塊708、808和912中)的函數(shù)將是:
測(cè)試條件于是為T(mén)F’>20=1,因?yàn)?TF是保序的。
雖然在上面的描述中提供了THRES和INTERVAL的值的特定例子,在另外的例子中,可使用這些參數(shù)中的一個(gè)或兩個(gè)的不同值。
在上面的例子中,描述了兩個(gè)可能的函數(shù)MEAN():算術(shù)平均和由上面的方程(6)給出的MEAN()函數(shù)。在本文所述的改進(jìn)的細(xì)分方法的另外的示例實(shí)現(xiàn)中,另一函數(shù)可以可選地用作可以是對(duì)稱(chēng)或非對(duì)稱(chēng)的MEAN()函數(shù)(雖然這將導(dǎo)致方位獨(dú)立性的失去)。
雖然上面的例子使用THRES和INTERVAL中的每個(gè)的單個(gè)值以及單個(gè)MEAN()函數(shù)(例如算術(shù)平均和由方程(6)給出的MEAN()函數(shù)),另外的例子可使用THRES和/或MEAN的多個(gè)值和/或多個(gè)MEAN()函數(shù)。
在上面所述的改進(jìn)的細(xì)分方法中,如果LEFT.TF或RIGHT.TF超過(guò)THRES,則添加新頂點(diǎn)(以及在“或”被使用的場(chǎng)合,例如在方程(3)中,在其標(biāo)準(zhǔn)含義中,如果LEFT.TF和RIGHT.TF中的一個(gè)或兩個(gè)超過(guò)閾值則添加新頂點(diǎn))。在對(duì)上面所述的例子的變形中,細(xì)分可以只在LEFT.TF和RIGHT.TF都超過(guò)THRES時(shí)被執(zhí)行。
雖然在上面所述的改進(jìn)的細(xì)分方法中,如果LEFT.TF或RIGHT.TF超過(guò)THRES則添加新頂點(diǎn)(如在方程(3)中的),將要認(rèn)識(shí)到的是,在對(duì)所述的方法的變形中,如果LEFT.TF或RIGHT.TF超過(guò)或等于THRES,則可添加新頂點(diǎn)。
在上面的描述中,再分被描述為遞歸地被應(yīng)用(例如在塊506和508中)。然而在另外的例子中,該方法可以不遞歸地被應(yīng)用,例如它可迭代地被應(yīng)用(在所有產(chǎn)生的補(bǔ)片上執(zhí)行下一級(jí)別的再分之前,在所有當(dāng)前補(bǔ)片上執(zhí)行單個(gè)級(jí)別的再分)。在另一例子中,可實(shí)現(xiàn)另一非遞歸方法,例如測(cè)試在65乘65網(wǎng)格上的每個(gè)頂點(diǎn)是否應(yīng)被包括并接著基于頂點(diǎn)的位置來(lái)判斷任何被包括的頂點(diǎn)是哪些基元的部分。
在上面所述的例子中,改進(jìn)的細(xì)分方法被描述為在域空間中執(zhí)行。在對(duì)所述方法的另一變形中,可以可選地在域空間之外應(yīng)用細(xì)分。
被輸入到改進(jìn)的細(xì)分方法的頂點(diǎn)TF可由單獨(dú)的應(yīng)用產(chǎn)生(例如基于觀看者離每個(gè)頂點(diǎn)的距離,例如頂點(diǎn)的頂點(diǎn)TF可與頂點(diǎn)離眼睛的距離的倒數(shù)成比例)。在各種例子中,可提供API,其在將邊TF輸入到本文所述的方法內(nèi)之前將邊TF轉(zhuǎn)換成頂點(diǎn)TF(例如通過(guò)平均在頂點(diǎn)處相接的邊的所有邊TF)。
本文所述的改進(jìn)的細(xì)分方法可用于在運(yùn)行中執(zhí)行細(xì)分(例如,當(dāng)視點(diǎn)在3D場(chǎng)景中改變時(shí)),或可選地,方法可離線地用于對(duì)多個(gè)不同的視點(diǎn)預(yù)先計(jì)算三角形。
可在硬件中實(shí)現(xiàn)本文所述的改進(jìn)的細(xì)分方法。在各種例子中,可在如圖19所示的圖形處理單元(GPU)內(nèi)的硬件細(xì)分單元中實(shí)現(xiàn)該方法。圖19示出可在GPU內(nèi)的硬件中實(shí)現(xiàn)的示例GPU管線1900的示意圖。如圖19所示,管線1900包括頂點(diǎn)著色器1902,其負(fù)責(zé)執(zhí)行每個(gè)頂點(diǎn)計(jì)算,包括(例如根據(jù)頂點(diǎn)離攝像機(jī)的位置)計(jì)算所有這些的頂點(diǎn)細(xì)分因數(shù)。在計(jì)算頂點(diǎn)TF之前,頂點(diǎn)著色器將頂點(diǎn)變換到自然空間內(nèi)并可應(yīng)用一個(gè)或多個(gè)其它線性變換。頂點(diǎn)著色器1902不知道網(wǎng)拓?fù)淝抑恢辣火佀偷狡涞漠?dāng)前頂點(diǎn)。
在頂點(diǎn)著色器1902和硬件細(xì)分單元(或細(xì)分器)1904之間(或在頂點(diǎn)著色器和圖19中未示出的可選外殼著色器(optional hull shader)之間,其中管線1900包括在頂點(diǎn)著色器1902和細(xì)分器1904之間的一個(gè)或多個(gè)可選外殼著色器),補(bǔ)片(即頂點(diǎn)的有序集合)是使用拓?fù)?其中這可以是存儲(chǔ)在用戶(hù)在引出調(diào)用之前選擇的細(xì)分器中的預(yù)先構(gòu)建的選擇)來(lái)構(gòu)建的。這個(gè)補(bǔ)片信息被傳遞到外殼著色器(在被提供的場(chǎng)合)。然而,細(xì)分器1904只采用頂點(diǎn)TF,且其余的補(bǔ)片信息被繼續(xù)傳遞到域著色器1906。
硬件細(xì)分單元(或細(xì)分器)1904包括使用所接收的頂點(diǎn)TF來(lái)實(shí)現(xiàn)上面所述的改進(jìn)的細(xì)分方法(例如,如在圖5、7-9、15和17中所示的)的硬件邏輯。與頂點(diǎn)著色器不同,硬件細(xì)分單元(和任何可選外殼著色器)每補(bǔ)片而不是每頂點(diǎn)操作。為了簡(jiǎn)化實(shí)現(xiàn)用于計(jì)算新頂點(diǎn)TF(例如在塊706、806、906和1706中)的方程所需的硬件,計(jì)算可在log2中被執(zhí)行(如在上面所述的例子中)且所以可被實(shí)現(xiàn)為加法和減法(或者乘法和除法將被使用)。如上所述,硬件細(xì)分單元1904可配置成并行地執(zhí)行上面描述的方法的方面(例如在塊506和608中在不同的補(bǔ)片上的遞歸,例如,如圖9所示)。硬件細(xì)分單元1904輸出每個(gè)新頂點(diǎn)的域空間坐標(biāo)并將它傳遞到域著色器1906(例如通過(guò)在緩沖器中存儲(chǔ)每個(gè)補(bǔ)片的細(xì)節(jié),如在圖9的塊914中的)。
域著色器1906充當(dāng)由細(xì)分器1904產(chǎn)生的頂點(diǎn)的第二頂點(diǎn)著色器,并且每頂點(diǎn)(其由細(xì)分器產(chǎn)生)被執(zhí)行一次。域著色器提供域空間位置(u,v)并給出所有補(bǔ)片信息并輸出全頂點(diǎn)結(jié)構(gòu)。域著色器使用補(bǔ)片控制點(diǎn)和域空間坐標(biāo)來(lái)構(gòu)建新頂點(diǎn)并應(yīng)用任何位移映射(例如通過(guò)對(duì)在紋理中編碼的一些隆起部分或高度圖采樣)。
在域著色器1906對(duì)每個(gè)補(bǔ)片的每個(gè)所產(chǎn)生的頂點(diǎn)運(yùn)行之后,頂點(diǎn)被傳遞到光柵器(未在圖19中示出)。一前一后地,基元(以索引緩沖器的形式)從細(xì)分器傳遞到光柵器。
圖19的GPU管線1900僅作為例子被示出,且本文所述的使用頂點(diǎn)TF的改進(jìn)的細(xì)分方法可用在任何GPU體系結(jié)構(gòu)中。也將認(rèn)識(shí)到,硬件細(xì)分單元1904可用在GPU管線中,除了或代替頂點(diǎn)著色器1902、可選外殼著色器和域著色器1906之外,GPU還包括其它著色器。
上面所述的改進(jìn)的細(xì)分方法可以可選地在軟件(或軟件和硬件的組合)中實(shí)現(xiàn)。圖20示出可被實(shí)現(xiàn)為計(jì)算和/或電子設(shè)備的任何形式且可配置成實(shí)現(xiàn)上面所述的細(xì)分方法的示例性基于計(jì)算的設(shè)備2000的各種部件。
基于計(jì)算的設(shè)備2000包括一個(gè)或多個(gè)處理器2002,其可以是微處理器、控制器或用于處理計(jì)算機(jī)可執(zhí)行指令以控制設(shè)備的操作以便執(zhí)行上面描述的改進(jìn)的細(xì)分方法的任何其它適當(dāng)類(lèi)型的處理器。在例如片上系統(tǒng)體系結(jié)構(gòu)被使用的一些例子中,處理器2002可包括在硬件(而不是軟件或固件)中實(shí)現(xiàn)改進(jìn)的細(xì)分方法的一部分的一個(gè)或多個(gè)固定功能塊(也被稱(chēng)為加速器)??稍诨谟?jì)算的設(shè)備處提供包括操作系統(tǒng)2004的平臺(tái)軟件或任何其它適當(dāng)?shù)钠脚_(tái)軟件以使應(yīng)用軟件2006能夠在設(shè)備上執(zhí)行,且應(yīng)用軟件可包括細(xì)分模塊2008。這個(gè)細(xì)分模塊2008可例如包括預(yù)處理模塊(其實(shí)現(xiàn)圖5或圖15的塊504)、可選地額外的預(yù)處理模塊(其實(shí)現(xiàn)圖15的塊1502)和遞歸細(xì)分模塊(其實(shí)現(xiàn)圖5或圖15的塊506和/或508)。
可使用由基于計(jì)算的設(shè)備2000訪問(wèn)的任何計(jì)算機(jī)可讀介質(zhì)提供計(jì)算機(jī)可執(zhí)行指令。計(jì)算機(jī)可讀介質(zhì)可包括例如計(jì)算機(jī)存儲(chǔ)介質(zhì),例如存儲(chǔ)器2010和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)(即非臨時(shí)機(jī)器可讀介質(zhì)),例如存儲(chǔ)器2010,包括在任何方法或技術(shù)中實(shí)現(xiàn)的用于存儲(chǔ)信息(例如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù))的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于RAM、ROM、EPROM、EEPROM、閃存或其它存儲(chǔ)技術(shù)、CD-ROM、數(shù)字多用途光盤(pán)(DVD)或其它光學(xué)存儲(chǔ)器、盒式磁帶、磁帶、磁盤(pán)存儲(chǔ)器或其它磁性存儲(chǔ)設(shè)備或可用于存儲(chǔ)由計(jì)算設(shè)備訪問(wèn)的信息的任何其它非傳輸介質(zhì)。相反,通信介質(zhì)可體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或在已調(diào)制數(shù)據(jù)信號(hào),例如載波或其它傳輸機(jī)構(gòu)中的其它數(shù)據(jù)。如在本文定義的,計(jì)算機(jī)存儲(chǔ)介質(zhì)不包括通信介質(zhì)。雖然計(jì)算機(jī)存儲(chǔ)介質(zhì)(即非臨時(shí)機(jī)器可讀介質(zhì),例如存儲(chǔ)器2010)被顯示在基于計(jì)算的設(shè)備2000內(nèi),應(yīng)理解的是,存儲(chǔ)器可遠(yuǎn)程地被分布或定位并經(jīng)由網(wǎng)絡(luò)或其它通信鏈路(例如使用通信接口2012)被訪問(wèn)。
基于計(jì)算的設(shè)備2000還可包括布置成向可與基于計(jì)算的設(shè)備2000分離或合并成一整體的顯示設(shè)備顯示信息的輸入/輸出控制器。顯示信息可提供圖形用戶(hù)界面。輸入/輸出控制器也可布置成接收并處理來(lái)自一個(gè)或多個(gè)設(shè)備例如用戶(hù)輸入設(shè)備(例如鼠標(biāo)或鍵盤(pán))的輸入。在實(shí)施方式中,顯示設(shè)備也可充當(dāng)用戶(hù)輸入設(shè)備,如果它是觸敏顯示設(shè)備。輸入/輸出控制器也可向除了顯示設(shè)備以外的設(shè)備例如本地連接的打印設(shè)備輸出數(shù)據(jù)。
術(shù)語(yǔ)“處理器”和“計(jì)算機(jī)”在本文用于指具有處理能力使得它可執(zhí)行指令的任何設(shè)備或其部分。術(shù)語(yǔ)“處理器”可例如包括中央處理單元(CPU)、圖形處理單元(GPU或VPU)、物理處理單元(PPU)、無(wú)線電處理單元(RPU)、數(shù)字信號(hào)處理器(DSP)、通用處理器(例如通用GPU)、微處理器、設(shè)計(jì)成加速在CPU外部的任務(wù)的任何處理單元等。本領(lǐng)域中的技術(shù)人員將認(rèn)識(shí)到,這樣的處理能力合并到很多不同的設(shè)備內(nèi),且因此術(shù)語(yǔ)“計(jì)算機(jī)”包括機(jī)頂盒、媒體播放器、數(shù)字無(wú)線電裝置、PC、服務(wù)器、移動(dòng)電話、個(gè)人數(shù)字助理和很多其它設(shè)備。
本領(lǐng)域中的技術(shù)人員將認(rèn)識(shí)到,用于存儲(chǔ)程序指令的存儲(chǔ)設(shè)備可分布在網(wǎng)絡(luò)當(dāng)中。例如,遠(yuǎn)程計(jì)算機(jī)可存儲(chǔ)被描述為軟件的過(guò)程的例子。本地或終端計(jì)算機(jī)可訪問(wèn)遠(yuǎn)程計(jì)算機(jī)并下載軟件的一部分或全部以運(yùn)行程序??蛇x地,本地計(jì)算機(jī)可按需要下載軟件的片段或執(zhí)行在本地終端處的一些軟件指令和在遠(yuǎn)程計(jì)算機(jī)(或計(jì)算機(jī)網(wǎng)絡(luò))處的一些指令。本領(lǐng)域中的技術(shù)人員也將認(rèn)識(shí)到,通過(guò)利用本領(lǐng)域中的技術(shù)人員已知的常規(guī)技術(shù),軟件指令的全部或一部分可由專(zhuān)用電路(例如DSP、可編程邏輯陣列等)實(shí)現(xiàn)。
本文所述的方法可由配置有軟件的計(jì)算機(jī)執(zhí)行,軟件是以存儲(chǔ)在有形存儲(chǔ)介質(zhì)上的機(jī)器可讀形式、例如以包括用于配置計(jì)算機(jī)來(lái)執(zhí)行所述方法的組成部分的計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)程序的形式或以包括適合于當(dāng)程序在計(jì)算機(jī)上運(yùn)行時(shí)執(zhí)行本文所述的任何方法的所有步驟的計(jì)算機(jī)程序代碼模塊的計(jì)算機(jī)程序的形式,且其中計(jì)算機(jī)程序可體現(xiàn)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。有形(或非臨時(shí))存儲(chǔ)介質(zhì)的例子包括磁盤(pán)、拇指驅(qū)動(dòng)器、存儲(chǔ)卡等,且并不包括傳播信號(hào)。軟件可適合于在并行處理器或串行處理器上執(zhí)行,使得方法步驟可以按任何適當(dāng)?shù)捻樞蚧蛲瑫r(shí)被執(zhí)行。
本文描述的硬件部件可由非臨時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)產(chǎn)生,非臨時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有在其上編碼的計(jì)算機(jī)可讀程序代碼。
意圖還包括“描述”或定義實(shí)現(xiàn)上面所述的模塊、功能、部件或邏輯的硬件的配置的軟件,例如HDL(硬件描述語(yǔ)言)軟件,如對(duì)設(shè)計(jì)集成電路或?qū)ε渲每删幊绦酒褂玫?,以?shí)現(xiàn)期望功能。也就是說(shuō),可提供計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其具有存儲(chǔ)在其上的用于產(chǎn)生配置成執(zhí)行本文所述的任何方法的處理單元或用于產(chǎn)生包括本文所述的任何裝置的處理單元的計(jì)算機(jī)可讀程序代碼。也就是說(shuō),計(jì)算機(jī)系統(tǒng)可配置成從電路元件的定義和用于定義組合那些電路元件的規(guī)則的數(shù)據(jù)產(chǎn)生數(shù)字電路的表示,其中非臨時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可具有存儲(chǔ)在其上的處理器可執(zhí)行指令,其當(dāng)在這樣的計(jì)算機(jī)系統(tǒng)處被執(zhí)行時(shí)使計(jì)算機(jī)系統(tǒng)產(chǎn)生如本文所述的處理單元。例如,非臨時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可具有存儲(chǔ)在其上的計(jì)算機(jī)可讀指令,其當(dāng)在用于產(chǎn)生集成電路的表現(xiàn)形式的計(jì)算機(jī)系統(tǒng)處被執(zhí)行時(shí)使計(jì)算機(jī)系統(tǒng)產(chǎn)生如在本文的例子中所述的接收機(jī)的處理器的表現(xiàn)形式或產(chǎn)生配置成執(zhí)行如在本文的例子中所述的方法的處理器的表現(xiàn)形式。處理器的表現(xiàn)形式可以是處理器本身或可用于產(chǎn)生處理器的處理器的表示(例如掩模)。
存儲(chǔ)在實(shí)現(xiàn)所公開(kāi)的方面時(shí)使用的機(jī)器可執(zhí)行數(shù)據(jù)的存儲(chǔ)器可以是非臨時(shí)介質(zhì)。非臨時(shí)介質(zhì)可以是易失性的或非易失性的。易失性非臨時(shí)介質(zhì)的例子包括基于半導(dǎo)體的存儲(chǔ)器,例如SRAM或DRAM??捎糜趯?shí)現(xiàn)非易失性存儲(chǔ)器的技術(shù)的例子包括光學(xué)和磁性存儲(chǔ)器技術(shù)、閃存、相變存儲(chǔ)器、持久性RAM。
對(duì)“邏輯(logic)”的特定參考指執(zhí)行一種或多種功能的結(jié)構(gòu)。邏輯的例子包括布置成執(zhí)行那些功能的電路。例如,這樣的電路可包括晶體管和/或在制造過(guò)程中可用的其它硬件元件。作為例子,這樣的晶體管和/或其它元件可用于形成實(shí)現(xiàn)和/或包含存儲(chǔ)器例如寄存器、觸發(fā)器或鎖存器、邏輯運(yùn)算器例如布爾運(yùn)算、數(shù)學(xué)運(yùn)算器例如加法器、乘法器或移位器和互連的電路或結(jié)構(gòu)。這樣的元件可作為定制電路或標(biāo)準(zhǔn)單元庫(kù)、宏或以其它抽象級(jí)被提供??稍谔囟ǖ牟贾弥惺惯@樣的元件互連。邏輯可包括固定功能的電路,且電路可被編程以執(zhí)行一種或多種功能;這樣的編程可從固件或軟件更新或控制機(jī)制提供。被識(shí)別為執(zhí)行一種功能的邏輯也可包括實(shí)現(xiàn)組成功能或子過(guò)程的邏輯。在例子中,硬件邏輯具有實(shí)現(xiàn)固定功能操作或多個(gè)操作、狀態(tài)機(jī)或過(guò)程的電路。
如對(duì)技術(shù)人員將明顯的是,本文給出的任何范圍或設(shè)備值可擴(kuò)展或改變而不失去所尋求的效應(yīng)。
將理解的是,上面描述的益處和優(yōu)點(diǎn)可涉及一個(gè)實(shí)施方式或可涉及幾個(gè)實(shí)施方式。實(shí)施方式不限于解決任何或所有所陳述的問(wèn)題的那些實(shí)施方式或具有任何或全部所陳述的益處和優(yōu)點(diǎn)的那些實(shí)施方式。
對(duì)“一(an)”項(xiàng)目的任何參考指的是那些項(xiàng)目中的一個(gè)或多個(gè)。術(shù)語(yǔ)“包括”在本文用于意指包括所識(shí)別的方法塊或元件,但這樣的塊或元件并不包括排他列表,且裝置可包含額外的塊或元件,以及方法可包含額外的操作或元件。此外,塊、元件和操作本身并非不隱含地封閉的。
本文描述的方法的步驟可在適當(dāng)?shù)膱?chǎng)合以任何適當(dāng)?shù)捻樞蚧蛲瑫r(shí)被執(zhí)行。在附圖中的方框之間的箭頭示出方法步驟的一個(gè)示例順序,但并不意欲排除其它順序或平行的多個(gè)步驟的執(zhí)行。此外,單獨(dú)的塊可從任何方法刪除而不偏離本文描述的主題的精神和范圍。上面描述的任何例子的方面可與所描述的其它例子中的任一個(gè)的方面組合以形成另外的例子,而不失去所尋求的效應(yīng)。在附圖的元件被示為由箭頭連接的場(chǎng)合,要理解的是,這些箭頭示出在元件之間的通信(包括數(shù)據(jù)和控制消息)的僅僅一個(gè)示例流。在元件之間的流可以是在任一方向上或在兩個(gè)方向上的。
要理解的是,優(yōu)選實(shí)施方式的上述描述僅作為例子被給出,以及各種修改可由本領(lǐng)域中的技術(shù)人員做出。雖然上面以某個(gè)詳細(xì)程度或參考一個(gè)或多個(gè)單獨(dú)的實(shí)施方式描述了各種實(shí)施方式,本領(lǐng)域中的技術(shù)人員可對(duì)所公開(kāi)的實(shí)施方式進(jìn)行很多變更而不偏離本發(fā)明的精神或范圍。