專利名稱:移位參數(shù)曲面的分層包圍的制作方法
移位參數(shù)曲面的分層包圍
背景技術(shù):
本發(fā)明總體上涉及圖形處理,并且更具體地涉及渲染系統(tǒng)(諸如交互式、實(shí)時(shí)和離線/膠片渲染)中的曲面細(xì)分(tessellation).現(xiàn)代圖形處理器包含用于將曲面細(xì)分成許多小三角形的專用硬件。DirectX 11應(yīng)用程序接口(“DX11”)(API)向圖形流水線中增加了三個(gè)新階段,用以支持曲面細(xì)分外殼著色器、固定功能曲面細(xì)分單元和域著色器。外殼著色器對(duì)每個(gè)面片(patch)執(zhí)行一次,并對(duì)每個(gè)控制點(diǎn)執(zhí)行一次,通常用來計(jì)算曲面細(xì)分系數(shù)并用來改變控制點(diǎn)基礎(chǔ)。固定功能曲面細(xì)分單元將曲面細(xì)分系數(shù)作為輸入,并生成在輸入圖元的域中的頂點(diǎn)位置的大的集合以及在頂點(diǎn)之間的連接信息。該連接信息形成許多小三角形。對(duì)從曲面細(xì)分單元生成的每一個(gè)頂點(diǎn)位置,執(zhí)行一次域著色器。域著色器的一個(gè)典型用途就是使用例如一組控制點(diǎn)、重心坐標(biāo)和詳細(xì)紋理作為輸入來計(jì)算參數(shù)曲面的位置和法線。該輸出是由一組屬性定義的移位頂點(diǎn)。一個(gè)屬性是位置,但該著色器也能計(jì)算移位頂點(diǎn)的法線/切線/雙切線/紋理坐標(biāo) /顏色/透明度或其他屬性。
圖1是示出了頂角控制點(diǎn)和向量b和t的圖形;通過形成面片的頂角之間的向量, 從而可以導(dǎo)出OBB軸;圖2在上行中示出了在用于包圍具有兩個(gè)分離的移位頂峰的三次多項(xiàng)式的25個(gè)步驟之后得到的邊界的示例,左圖使用AABB,右圖使用0ΒΒ,其軸由貝塞爾曲線的控制點(diǎn)確定,而在下行中將Perlin噪聲增加到移位著色器;圖3是經(jīng)過相同次數(shù)細(xì)分的AABB包圍對(duì)比于OBB包圍的三維示例;圖4示出了對(duì)于法線面片的法線包圍技術(shù),最左側(cè)的圖示出了在歸一化前的法線面片,中間的圖示出了作為被歸一化以使其映射到單位球上的每個(gè)控制點(diǎn),并且最后,最右側(cè)的圖示出了被椎體包圍的投影,該椎體是針對(duì)面片的歸一化法線的保守邊界;圖5示出了給定的由T和B表示的兩個(gè)參數(shù)導(dǎo)數(shù)的包圍椎體,包圍T中的任意向量和B中的任意向量的叉積的椎體可以被導(dǎo)出并且在這里被表示為N ;圖6示出了其中執(zhí)行16步細(xì)分的使用屏幕空間包圍盒尺寸作為分類標(biāo)準(zhǔn)的兩個(gè)不同視圖的示例,以及在細(xì)分密度上結(jié)果差異;圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例的包圍移位貝塞爾曲面面片和包圍算法的流程圖;圖8是根據(jù)一個(gè)實(shí)施例的通過找到移位貝塞爾面片的OBB來計(jì)算移位面片的邊界的更詳細(xì)的流程的流程圖;圖9是通過使用控制點(diǎn)定義基礎(chǔ)面片的OBB的一個(gè)實(shí)施例的流程圖;圖10是查找歸一化法線的一個(gè)實(shí)施例的流程圖;圖11是查找歸一化法線的另一個(gè)實(shí)施例的流程圖;圖12是本發(fā)明的一個(gè)實(shí)施例的硬件描述。
具體實(shí)施例方式減少域著色器計(jì)算的次數(shù)可以減少圖形流水線的該階段所需的計(jì)算資源。這可以通過剔除對(duì)最終圖像無貢獻(xiàn)的面片來實(shí)現(xiàn)。為了使得該剔除更高效,可以使用一種用于計(jì)算移位曲面的分層邊界的算法。此外,在基于碎塊(tile-based)的渲染架構(gòu)中,需要輸入圖元的邊界以便高效地將輸入圖元分類到碎塊中?!鞍鼑w(bounding volume)”是一測(cè)定體積的物體,例如包圍另一物體的盒或球。由于域著色器是可編程的,因此很難給出輸出位置的保守并緊密的邊界,這可能導(dǎo)致需要將已生成的小三角形逐個(gè)分類到碎塊中。這增加了碎塊隊(duì)列的存儲(chǔ)器需求,增加了帶寬使用,并降低了面片圖元層上的遮擋剔除的效率。取而代之的是,如圖7所示,可以僅僅基于域著色器在運(yùn)行中計(jì)算這些邊界(框 12),而無需用戶指定的參數(shù)。因此,當(dāng)圖元被分割成較小的子面片時(shí),該邊界可以被適應(yīng)性地改善以創(chuàng)建分層。在一個(gè)實(shí)施例中,一種算法通過使用高效法線包圍、定向包圍盒和移位紋理的最小-最大mipmap分層,使得能夠保守并緊密地包圍動(dòng)態(tài)移位參數(shù)曲面(諸如貝塞爾面片)。面片可以被剔除(框16)。如果未被剔除,則可以對(duì)圖元進(jìn)行曲面細(xì)分和域著色 (框⑶。在一些實(shí)施例中,由于面片不是必須被發(fā)送給曲面細(xì)分單元,針對(duì)該面片的域著色器和曲面細(xì)分單元任務(wù)可以減少。在一些實(shí)施例中,如果輸入面片被剔除,則無需進(jìn)行曲面細(xì)分和域著色。類似地,在一些實(shí)施例中,如果子面片被剔除,則無需進(jìn)一步處理該子面片。否則,該子面片被曲面細(xì)分并被域著色。雙三次貝賽爾面片(bi-cubic Bezier patch)的集合是用于平滑曲面的常用渲染圖元??梢允褂霉乃惴▽atmull-Clark細(xì)分曲面轉(zhuǎn)換為這種參數(shù)面片的集合,同時(shí)如實(shí)地近似遞歸細(xì)分處理的有限曲面。普遍做法是沿面片的法線向量的方向增加來自高分辨率紋理的移位,以便增加最終曲面的細(xì)節(jié)。移位貝賽爾面片可以用于渲染API中的域著色器中。貝賽爾面片由其控制點(diǎn)簡(jiǎn)潔地表示,并且該參數(shù)曲面表示能夠被有效地并行計(jì)算(與遞歸細(xì)分曲面不同)。貝賽爾面片p(u,v)是參數(shù)曲面,即通過兩個(gè)參數(shù)坐標(biāo)u和ν來定義的曲面。術(shù)語 “基礎(chǔ)面片”表示尚未被移位的貝賽爾面片,以與最終被移位的曲面相區(qū)別。用于在參數(shù)坐標(biāo)(U,v)處計(jì)算移位貝賽爾面片的域著色器計(jì)算基礎(chǔ)面片位置p(u,v)、基礎(chǔ)面片的歸一化法線A(W,V)和(通常)從紋理t(u,ν)得到的移位值。如果該移位沿基礎(chǔ)面片的法線方向進(jìn)行,則域著色器(乘以模型-視圖-投影矩陣之前)為d. (u,v) = p(u,v) + n(u,v)t(u,v)(1)在同種坐標(biāo)中,模型視圖投影矩陣M乘以d(u,v),獲得剪裁空間位置(clip space position)q q(u,v) = Md(u,v) = M{p{u,v) + h{u,v)t{u,v))(2)歸一化設(shè)備坐標(biāo)由Sx = qx/qw和Sy = qy/qw給出??梢哉业皆趨?shù)域上的保守邊界9(11,力,其中£1<=11<=13且(3<=¥<=(1。接下來,我們描述如何包圍ρ (U,V)。貝賽爾面片具有凸包(convex hull)性質(zhì), 且它們易于被其控制點(diǎn)所包圍。為貝賽爾面片查找按坐標(biāo)軸排列的包圍盒(axis-alignebounding box, AABB)占用每個(gè)控制點(diǎn)的3個(gè)最小操作和3個(gè)最大操作。通過反復(fù)應(yīng)用貝塞爾細(xì)分,經(jīng)細(xì)分的面片的控制點(diǎn)殼體(cage)向底層的基礎(chǔ)面片快速收斂。此外,如果初始面片在每一步被遞歸地分割成兩部分PA和pB,則需要生成pA 的de Casteljau步驟將為pB生成作為副產(chǎn)品的控制點(diǎn)。這考慮到了能夠高效地實(shí)現(xiàn)。我們可以從基礎(chǔ)面片定義的軸的控制點(diǎn)導(dǎo)出定向包圍盒(oriented bounding box,0BB)的軸。該盒比AABB更緊密地包圍基礎(chǔ)面片。對(duì)于在相同迭代中兩個(gè)經(jīng)細(xì)分的面片中的每一個(gè),基礎(chǔ)面片和法線面片、以及移位紋理和查找被改善。參照?qǐng)D8,其示出了在圖7的框12表示的用于計(jì)算移位曲面的邊界的步驟,通過使用貝塞爾細(xì)分,基礎(chǔ)面片沿著一個(gè)軸被細(xì)分???4表示的基礎(chǔ)面片包圍涉及從控制點(diǎn)尋找OBB軸,并將所有控制點(diǎn)投影到這些軸上。接著,沿著每個(gè)軸的最小值和最大值被找出以導(dǎo)出包含所有控制點(diǎn)的0ΒΒ,并且貝塞爾面片的凸包性質(zhì)意味著曲面被包含于該OBB中。接下來,如框15所示,在最小/最大紋理分層中查找最小移位和最大移位。此后, 在菱形19,執(zhí)行檢查以判斷移位是否為零。如果為零,則將模型視圖投影應(yīng)用到面片的包圍盒的8個(gè)頂角(框20),并返回該邊界(框23)。如果該移位不是零,則在框21,通過使用下面描述的所謂的TPATCH和NPATCH的技術(shù)之一進(jìn)行法線包圍,然后,進(jìn)行模型視圖投影轉(zhuǎn)換 (框20)并返回邊界(框23)。最后,在框23,應(yīng)用模型視圖投影轉(zhuǎn)換。對(duì)于貝塞爾面片,頂角控制點(diǎn)之間的向量(圖1)相加得到兩個(gè)軸(圖9的框24)。 假定面片具有(m+1) X (n+1)個(gè)控制點(diǎn),我們用c^c^Ab* cm,n來表示四個(gè)頂角控制點(diǎn), 并形成兩個(gè)向量t = cmj0-c0j0+cm,n-c0jn(3)b = c0jn-c0j0+cm,n-cmj0(4)t和b分別可以看作U參數(shù)方向和ν參數(shù)方向的近似平均梯度。上述二者不必正交。上述二者的叉積(圖9的框26)得到第三個(gè)軸n = t叉乘b。為了形成正交坐標(biāo)系, 我們?cè)O(shè)定χ = t,y = η叉乘t,ζ = n,并歸一化每個(gè)向量(圖9的框28)。最終坐標(biāo)系統(tǒng)是:(:i,j),f)。在大多數(shù)情形下,與使用AABB相比,這顯著減小了包圍盒的大小??梢詫?dǎo)出更精細(xì)的基于控制點(diǎn)殼體的OBB適配方案,但在實(shí)踐中,上述簡(jiǎn)單方法為緊密包圍曲面的OBB 產(chǎn)生軸。在圖2的曲線中和圖3的貝塞爾面片中,突出示出了用AABB包圍與用OBB包圍的質(zhì)量的不同。對(duì)于簡(jiǎn)單情況,我們僅使用AABB。如我們將在后面示出的,OBB軸在法線包圍算法中也非常有用。在域上包圍面片法線樹…V)比包圍基礎(chǔ)位置ρ (u,ν)困難很多。計(jì)算基礎(chǔ)面片p(u,v)的兩個(gè)參數(shù)導(dǎo)數(shù)的叉積作為法線方向。按照張量積貝塞爾曲面的標(biāo)準(zhǔn)表示,貝塞爾面片P(u,v):R2 ? R3由以下公式定義
權(quán)利要求
1.一種用于包圍移位參數(shù)曲面的方法,包括包圍使用從參數(shù)曲面導(dǎo)出的坐標(biāo)系的所述參數(shù)曲面;和在同一坐標(biāo)系中包圍移位向量。
2.如權(quán)利要求1所述的方法,包括計(jì)算所述移位參數(shù)曲面的分層邊界。
3.如權(quán)利要求2所述的方法,包括當(dāng)按照應(yīng)用定義的優(yōu)先級(jí)度量將所述參數(shù)曲面分割成較小的子面片時(shí),適應(yīng)性地改善邊界。
4.如權(quán)利要求3所述的方法,其中,包圍包括改善位置、法線和紋理邊界。
5.如權(quán)利要求4所述的方法,包括反復(fù)應(yīng)用貝賽爾細(xì)分,直到滿足應(yīng)用定義的閾值。
6.如權(quán)利要求1所述的方法,包括對(duì)頂角控制點(diǎn)之間的向量取平均以得到兩個(gè)軸;得到所述兩個(gè)軸的叉積;并且歸一化每個(gè)向量以形成面向?qū)ο蟮陌鼑凶鴺?biāo)系。
7.如權(quán)利要求6所述的方法,包括從參數(shù)導(dǎo)數(shù)導(dǎo)出法線向量貝塞爾面片;將控制點(diǎn)投影到單位球上;并且在面向?qū)ο蟮陌鼑凶鴺?biāo)系中包圍單位球上的立體角,以給出在基礎(chǔ)面片上的所述基礎(chǔ)面片的歸一化法線的邊界。
8.如權(quán)利要求6所述的方法,包括使用用于導(dǎo)出基礎(chǔ)面片的歸一化法線的邊界的椎體。
9.如權(quán)利要求6所述的方法,包括從一個(gè)參數(shù)方向上的導(dǎo)數(shù)形成第一錐體;從不同的參數(shù)方向上的導(dǎo)數(shù)形成第二錐體;并且通過在所述坐標(biāo)系中計(jì)算所述第一椎體和所述第二錐體的叉積而形成第三錐體。
10.如權(quán)利要求1所述的方法,包括剔除子面片、曲面細(xì)分和域著色。
11.如權(quán)利要求1所述的方法,包括通過使用所獲得的邊界以將較高階圖元分類到屏幕空間的碎塊中。
12.如權(quán)利要求1所述的方法,包括建立包圍體的層次以用于光線跟蹤。
13.如權(quán)利要求1所述的方法,包括將所述曲面轉(zhuǎn)換成在計(jì)算機(jī)顯示器上顯示的可視形式。
14.一種用于處理圖形的裝置,包括處理器;和存儲(chǔ)設(shè)備,其耦合到所述處理器,所述存儲(chǔ)設(shè)備用于包圍使用從參數(shù)曲面導(dǎo)出的坐標(biāo)系的所述參數(shù)曲面,并且用于在同一坐標(biāo)系中包圍移位向量。
15.如權(quán)利要求14所述的裝置,包括顯示器,其用于顯示由包圍所述移位參數(shù)曲面得到的圖像。
16.如權(quán)利要求14所述的裝置,所述存儲(chǔ)設(shè)備存儲(chǔ)用于計(jì)算所述移位參數(shù)曲面的分層邊界的指令。
17.如權(quán)利要求16所述的裝置,所述存儲(chǔ)設(shè)備存儲(chǔ)用于當(dāng)按照應(yīng)用定義的優(yōu)先級(jí)度量將所述參數(shù)曲面分割成較小的子面片時(shí),適應(yīng)性地改善邊界的指令。
18.如權(quán)利要求16所述的裝置,所述存儲(chǔ)設(shè)備存儲(chǔ)用于改善正的、法線和紋理邊界的指令。
19.如權(quán)利要求18所述的裝置,所述存儲(chǔ)設(shè)備存儲(chǔ)用于反復(fù)應(yīng)用貝塞爾細(xì)分,直到滿足應(yīng)用定義的閾值的指令。
20.如權(quán)利要求14所述的裝置,所述存儲(chǔ)設(shè)備存儲(chǔ)用于對(duì)頂角控制點(diǎn)之間的向量取平均以得到兩個(gè)軸,得到所述兩個(gè)軸的叉積,并且歸一化每個(gè)向量以形成面向?qū)ο蟮陌鼑凶鴺?biāo)系的指令。
全文摘要
對(duì)于交互式和實(shí)時(shí)渲染中的曲面細(xì)分,移位參數(shù)曲面的分層包圍可以是很常見的使用情況??梢允褂酶咝У姆ň€包圍技術(shù)、最小-最大mipmap分層和定向包圍盒技術(shù)。在一些實(shí)施例中,這為移位曲面的包圍體提供了非??斓氖諗?,而無需曲面細(xì)分和對(duì)曲面進(jìn)行移位??梢詫?duì)不同類型的剔除、光線跟蹤使用該包圍技術(shù),并且用于在碎塊疊鋪架構(gòu)中對(duì)較高階圖元進(jìn)行分類。
文檔編號(hào)G06T17/20GK102214369SQ20111012635
公開日2011年10月12日 申請(qǐng)日期2011年4月7日 優(yōu)先權(quán)日2010年4月7日
發(fā)明者J·哈塞爾格倫, J·蒙克貝里, R·托特, T·阿克寧-穆勒 申請(qǐng)人:英特爾公司