国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      利用分級(jí)網(wǎng)格量化的存儲(chǔ)器有效光線跟蹤的制作方法

      文檔序號(hào):6333320閱讀:165來(lái)源:國(guó)知局
      專利名稱:利用分級(jí)網(wǎng)格量化的存儲(chǔ)器有效光線跟蹤的制作方法
      利用分級(jí)網(wǎng)格量化的存儲(chǔ)器有效光線跟蹤背景技術(shù)
      對(duì)于離線渲染和交互式應(yīng)用,光線跟蹤已變得越來(lái)越重要。它的靈活性和光學(xué)逼 真的圖像質(zhì)量使光線跟蹤成為解決全局照明等問(wèn)題的較佳算法。近年來(lái),已經(jīng)證明它適合 用于實(shí)時(shí)渲染?,F(xiàn)代光線跟蹤程序的性能可與用于許多場(chǎng)景的光柵化處理相競(jìng)爭(zhēng),并且可 能更穩(wěn)固且更容易使用。隨著完全可編程圖形體系結(jié)構(gòu)即將到來(lái),基于經(jīng)典光柵化處理的 渲染管線的其余優(yōu)點(diǎn)可能會(huì)減少。
      然而,光線跟蹤的一個(gè)問(wèn)題是僅當(dāng)整個(gè)景物適應(yīng)于器件存儲(chǔ)器時(shí)才能實(shí)現(xiàn)最佳的 性能。大多數(shù)交互式光線跟蹤實(shí)現(xiàn)方式都大量使用存儲(chǔ)器,因?yàn)檫@種方案產(chǎn)生了很高的幀 率。這對(duì)于實(shí)際應(yīng)用而言是個(gè)問(wèn)題,在具有快速但有限的存儲(chǔ)器的圖形板上不再如此。
      不情愿將數(shù)據(jù)精簡(jiǎn)用于快速光線跟蹤是因?yàn)榇蠖鄶?shù)壓縮算法對(duì)性能有影響并且 缺乏對(duì)隨機(jī)訪問(wèn)的支持。在渲染之前整個(gè)數(shù)據(jù)組的連續(xù)解壓縮可能不是一個(gè)選擇。最近開(kāi) 發(fā)的許多算法是在正確的方向上邁進(jìn),但是,它們要么僅僅實(shí)現(xiàn)了普通的壓縮率,要么要求 用超高速緩存對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行按塊解壓縮。對(duì)于在具有有限的存儲(chǔ)器的器件上對(duì)非常大的 模型進(jìn)行實(shí)時(shí)光線跟蹤而言,上述兩種限制都是有問(wèn)題的。


      圖1是示出了本文所描述的根據(jù)一實(shí)施方式的總體處理的流程圖。
      圖2示出了根據(jù)一實(shí)施方式在全局柵格上放置三角形的情況。網(wǎng)格表示頂點(diǎn)量 化。左未量化的頂點(diǎn)。中在沒(méi)有全局歸整的情況下葉節(jié)點(diǎn)中的局部量化;在相鄰的三角 形之間出現(xiàn)了間隙。右在歸整到全局柵格的情況下的局部量化產(chǎn)生了嚴(yán)密的網(wǎng)格。
      圖3是示出了根據(jù)一實(shí)施方式將頂點(diǎn)位置編碼成位串的流程圖。
      圖4示出了根據(jù)一實(shí)施方式頂點(diǎn)的編碼情況,其中,一個(gè)附加位可以指示最近的 邊界平面。
      圖5是示出了根據(jù)一實(shí)施方式使用查找表格使多個(gè)三角形的連通性模型化的流 程圖。
      圖6示出了根據(jù)一實(shí)施方式將未對(duì)準(zhǔn)的負(fù)載用于頂點(diǎn)解碼的情況。
      圖7是示出了根據(jù)一實(shí)施方式的緊湊邊界值層次的構(gòu)造過(guò)程的流程圖。
      圖8示出了根據(jù)一實(shí)施方式的邊界值層次的布局,其中,子節(jié)點(diǎn)可以被組織成多 個(gè)塊。
      圖9示出了本文所描述的根據(jù)一實(shí)施方式的處理過(guò)程的軟件或固件實(shí)現(xiàn)方式。
      具體實(shí)施方式
      現(xiàn)在參照附圖描述較佳的實(shí)施方式,其中,相同的標(biāo)號(hào)指示完全一樣的或功能相 似的元件。在這些圖中,每個(gè)標(biāo)號(hào)的最左邊的數(shù)字對(duì)應(yīng)于首次使用該標(biāo)號(hào)的那個(gè)圖。盡管討 論了特定的配置和安排,但是應(yīng)該理解,這僅僅是為了說(shuō)明示出。有關(guān)領(lǐng)域的技術(shù)人員將會(huì) 認(rèn)識(shí)到,在不背離本申請(qǐng)的精神和范圍的情況下,可以使用其它配置和安排。對(duì)于有關(guān)領(lǐng)域的技術(shù)人員而言,很明顯,這也可以被用在除本文所描述的以外的各種其它系統(tǒng)和應(yīng)用中。本文所描述的方法和系統(tǒng)可以將三角形網(wǎng)格及其邊界體層次(BVH)存儲(chǔ)到緊湊 分級(jí)數(shù)據(jù)結(jié)構(gòu)中。BVH可以被用作一種加速結(jié)構(gòu),并且被用作三角形網(wǎng)格的分級(jí)壓縮表示。 這利用了這樣一個(gè)事實(shí)BVH可以表示三角形網(wǎng)格的近似。網(wǎng)格的頂點(diǎn)可以作為量化的值 被存儲(chǔ)在位數(shù)很小的BVH葉之內(nèi)。然而,葉節(jié)點(diǎn)之內(nèi)的頂點(diǎn)位置的量化可能導(dǎo)致相鄰的三角形之間有間隙,如果它 們位于不同的葉中的話。這會(huì)發(fā)生,是因?yàn)閮蓚€(gè)葉節(jié)點(diǎn)之內(nèi)的量化位置可能未對(duì)準(zhǔn)。在一 個(gè)實(shí)施方式中,用全局量化柵格可以解決這一問(wèn)題,其中,在這種柵格上所有的葉節(jié)點(diǎn)可以 是對(duì)準(zhǔn)的。三角形頂點(diǎn)可以被歸整到相同的柵格,并且它們的位置可以是作為到它們各自 的邊界框的原點(diǎn)的整數(shù)偏移而被存儲(chǔ)的。一個(gè)葉節(jié)點(diǎn)之內(nèi)的整數(shù)位置可能通常具有很小的 范圍,并且可能是易于壓縮的。例如,可以用像Huffman編碼或算術(shù)編碼這樣的主動(dòng)壓縮算法對(duì)上述整數(shù)值進(jìn)行 編碼。在一個(gè)實(shí)施方式中,可以在位串中存儲(chǔ)數(shù)據(jù)。經(jīng)優(yōu)化的解包函數(shù)可以被用于以很低 的成本對(duì)它們進(jìn)行解碼。除了頂點(diǎn)位置以外,頂點(diǎn)連通性可以被壓縮。三角形可以作為條帶或指數(shù)化條帶 (隨便哪一個(gè)是更小的)被局部地存儲(chǔ)在BVH節(jié)點(diǎn)之內(nèi)。如量化的位置那種情況,頂點(diǎn)指數(shù) 可以具有很小的范圍,并且可以被壓縮。邊界體積層次自身也可以是以緊湊的形式被存儲(chǔ)的。BVH節(jié)點(diǎn)可以被量化。另外, 這些節(jié)點(diǎn)可以被存儲(chǔ)到多個(gè)簇中。這樣,子指針可以代表簇中的局部偏移,這種局部偏移可 以只需要少數(shù)的位。例如,大體上,BVH節(jié)點(diǎn)的大小可以從32個(gè)字節(jié)減小到4個(gè)字節(jié)。通 常,對(duì)BVH構(gòu)造算法沒(méi)有任何限制,使得可以使用常規(guī)的構(gòu)造程序。圖1示出了根據(jù)一實(shí)施方式的總體的處理。在110處,模型的三角形可以在全局 柵格上被量化并且被歸整。這可以按這樣一種方式來(lái)實(shí)現(xiàn),該方式消除了若在各個(gè)局部柵 格上對(duì)三角形進(jìn)行量化則可能出現(xiàn)的那些間隙。在120處,這些三角形的頂點(diǎn)的位置被編 碼成位串。這是以這樣一種方式執(zhí)行的,該方式使代表這些頂點(diǎn)所需的位的數(shù)目達(dá)到最小。 在130處,這些三角形的連通性被模型化。在一個(gè)實(shí)施方式中,這可以通過(guò)以條帶的形式考 慮這些三角形來(lái)執(zhí)行,下文將對(duì)此作更詳細(xì)地描述。在140中,該模型的一些或全部可以被 表示在BVH中。在一個(gè)實(shí)施方式中,可以以一種緊湊的方式來(lái)構(gòu)造BVH,下文對(duì)此作更詳細(xì) 地描述。上述過(guò)程可以結(jié)束于150。全局柵格上的量化圖2示出了根據(jù)一實(shí)施方式使三角形定位于全局柵格上。在邊界體層次的上下文 中將一形狀模型化為一組三角形時(shí),在將各個(gè)多邊形置于局部量化柵格上時(shí)該幾何結(jié)構(gòu)中 可能會(huì)出現(xiàn)裂紋或間隙。通過(guò)如下操作可以防止這種情況將所有的三角形頂點(diǎn)和葉邊界 框歸整到同一全局柵格。最左邊的圖210示出了一組相鄰的三角形,其中,這些頂點(diǎn)仍然未 量化并且沒(méi)有放置到柵格上。中間的圖220示出了每個(gè)三角形都被放置到它們自己的局部 柵格上并且被量化。使這些三角形合并可能導(dǎo)致這些原打算被結(jié)合起來(lái)的三角形之間有間 隙。這些間隙(比如間隙225)可能代表了局部量化的偽像。在一個(gè)實(shí)施方式中,可以使用 全局柵格,其中,三角形可以被歸整,使得間隙被消除。最右邊的圖230示出了這種情況。此 處,間隙225可以被消除。注意到,在BVH的上下文中,全局歸整的邊界框不需要被存儲(chǔ),因?yàn)樗鼈兛梢栽谟?jì)算機(jī)程序正實(shí)際運(yùn)行時(shí)被歸整以便于頂點(diǎn)的解壓縮。對(duì)頂點(diǎn)位置進(jìn)行編碼 為了節(jié)省存儲(chǔ)器,可以使用位串來(lái)指定三角形頂點(diǎn)。在一個(gè)實(shí)施方式中,可以相對(duì) 于邊界框原點(diǎn)0對(duì)頂點(diǎn)位置進(jìn)行編碼。因此,考慮到要編碼的一組頂點(diǎn)(Ai),首先可以計(jì)算 從0到Ai中的每個(gè)頂點(diǎn)的δ矢量(Di= {Xi,yi,Zi})。對(duì)max(Xi、max(yi)、max(Zi)分別進(jìn) 行編碼所需的位的數(shù)目(nx,ny,nz)可以被計(jì)算。(nx,ny,nz)提供了每個(gè)頂點(diǎn)的每個(gè)坐標(biāo)最 多需要的位的總數(shù)n,并且可以引導(dǎo)至可變位編碼方案。在一個(gè)實(shí)施方式中,每個(gè)頂點(diǎn)所需 的位的數(shù)目(nx,ny,nz)是在位串中被編碼的。隨后,可以使頂點(diǎn)數(shù)據(jù)入隊(duì)。圖3示出了根據(jù)一個(gè)實(shí)施方式對(duì)頂點(diǎn)進(jìn)行編碼。在310處,對(duì)于每個(gè)頂點(diǎn),可以計(jì) 算δ矢量(Di = {Xi,Yi, zj),其中,該矢量的每個(gè)分量描述了在該維度中從邊界框的原點(diǎn) 到該頂點(diǎn)的距離。在320處,對(duì)于所有的頂點(diǎn)Ai,可以確定每個(gè)維度的最大值。這些最大值 被顯示成maX(Xi) ^max(Yi) ^max(Zi)。在330處,對(duì)這些最大值中的每一個(gè)進(jìn)行編碼所需的 位的數(shù)目可以被確定。這產(chǎn)生了三個(gè)值(nx,ny,nz),用于代表這些最大值。在340處,這些 值(nx,ny,nz)可以被置于位串中,其后就是Ai的頂點(diǎn)數(shù)據(jù)。上述過(guò)程可以結(jié)束于350。一種對(duì)邊界框內(nèi)的頂點(diǎn)數(shù)據(jù)進(jìn)行編碼的技術(shù)可以包括計(jì)算從原點(diǎn)起的整數(shù)δ矢 量。然而,葉邊界框是它們包含的那些頂點(diǎn)的實(shí)際的邊界框。因?yàn)橐恍╉旤c(diǎn)位于邊界框面 之一上或附近,所以計(jì)算從最近的平面起的(不是從原點(diǎn)起的)δ值可以導(dǎo)致更小的δ矢 量,可以用更少的位來(lái)表示這些更小的S矢量。為此,在一個(gè)實(shí)施方式中,對(duì)于該δ矢量的每個(gè)分量,可以添加一個(gè)額外的位以 標(biāo)識(shí)最近的平面,上述距離是從該最近的平面起測(cè)量的。這可以減小頂點(diǎn)數(shù)據(jù)的最終的大 小(即位的數(shù)目)。這可能對(duì)于那些包含許多大三角形的模型特別地有用。在圖4的二維 示例中,對(duì)于每個(gè)頂點(diǎn)(包括頂點(diǎn)D),可以產(chǎn)生δ矢量。此處,對(duì)于任何給定的頂點(diǎn),Xfflin 可以被用于指明在χ方向上從該頂點(diǎn)到原點(diǎn)0(被標(biāo)為405)的距離。變量ymin可以被用于 指明在y方向上從原點(diǎn)405到D的距離。對(duì)于頂點(diǎn)D,y維度中最近的“平面”將對(duì)應(yīng)于上 方的邊界410 ;x維度中最近的“平面”將對(duì)應(yīng)于最右邊的邊界420。因此,頂點(diǎn)D將被編 碼成(xmaxD,y_D),其中,這些坐標(biāo)分別代表了從上方的邊界410起的距離以及從最右邊的邊 界420起的距離。然后,對(duì)于每個(gè)坐標(biāo),可以添加額外的位,以標(biāo)識(shí)最近的邊界。在第一坐 標(biāo)的情況下,它的額外的位將表示上方或下方的邊界;在第二坐標(biāo)的情況下,它的額外的位 將表示右邊或左邊的邊界。對(duì)頂點(diǎn)數(shù)據(jù)進(jìn)行解碼可以包括讀取每個(gè)分量所需的位的數(shù)目;以及對(duì)頂點(diǎn)數(shù)據(jù) 進(jìn)行解碼。應(yīng)該理解,圖4示出了二維模型,為的是使說(shuō)明簡(jiǎn)化和容易解釋。該示例可以被擴(kuò) 展到三維的情況,其中,邊界將是平面而非線段。除了 X和y坐標(biāo)以外,還將有Z坐標(biāo)以對(duì) 任何給定的頂點(diǎn)進(jìn)行編碼。三角形連通性三角形連通性也可以被模型化。有若干種方式來(lái)實(shí)現(xiàn)這一點(diǎn)。在一個(gè)方法中,對(duì)于 每個(gè)三角形,可以存儲(chǔ)三個(gè)頂點(diǎn)位置,從而復(fù)制共用的頂點(diǎn)??紤]到圖4所提供的葉示例, 頂點(diǎn)位置序列{ABE,EBD,CED}可以被直接編碼。另一種可能性是存儲(chǔ)頂點(diǎn)位置的數(shù)組,然 后對(duì)于每個(gè)三角形存儲(chǔ)三個(gè)指數(shù),其中,這些指數(shù)可以是指該數(shù)組中所標(biāo)識(shí)的頂點(diǎn)位置。在圖4的情況中,{ABCDE}可以被存儲(chǔ)以便用于頂點(diǎn)數(shù)據(jù)。指數(shù)可以被定義,例如,O用于第一 標(biāo)識(shí)頂點(diǎn)(A),l用于第二標(biāo)識(shí)頂點(diǎn)(B)等等。結(jié)果,{
      , [4,1,3], [2,4,3]}可以被 用于命名這些三角形。例如,
      代表三角形ABE。另一種使三角形連通性模型化的方式是將鄰接的三角形視為條帶。使用條帶或指 數(shù)化的條帶可以提供減小葉大小和解碼次數(shù)的機(jī)會(huì)。在一個(gè)實(shí)施方式中,使用了葉中所包 含的三角形網(wǎng)格的條帶系統(tǒng)。這種系統(tǒng)可以在多個(gè)葉中處理三角形網(wǎng)格布局,例如,四個(gè)三 角形的條帶之后是三個(gè)三角形的條帶,再之后是一個(gè)三角形。這一方案可以使用查找表格 (LUT),該查找表格可以是自動(dòng)產(chǎn)生的并且可以如下地設(shè)計(jì)·限制每個(gè)葉的三角形的最大數(shù)目(例如14個(gè)); 上述LUT的每個(gè)條目處理一個(gè)網(wǎng)格布局。例如,條目STRIP3X3_STRIP2X3_TRIX4 將處理這樣一種布局,該布局包括3個(gè)由三個(gè)三角形構(gòu)成的條帶、3個(gè)由兩個(gè)三角形構(gòu)成的 條帶以及4個(gè)三角形;·為了限制條目的數(shù)目,根據(jù)它們的大小對(duì)這些條帶進(jìn)行分選。因此,STRIP4X1_ STRIP3X3將是一個(gè)有效的條目,而STRIP3X3_STRIP4X1則不是;·對(duì)于每個(gè)條目,存儲(chǔ)三角形的數(shù)目以及它們的第一頂點(diǎn)的偏移。例如,條目 STRIP3X1_TRIX2是由5個(gè)三角形和5個(gè)三角形偏移{0,1,2,5,8}構(gòu)成的;·這些條帶使順時(shí)針和逆時(shí)針的三角形交替;存儲(chǔ)每個(gè)三角形的取向。上述LUT可以與條帶或指數(shù)化條帶的使用無(wú)關(guān)。如果該葉存儲(chǔ)了三角形條帶,則 該表格所提供的偏移可以給出頂點(diǎn)位置的偏移。相反,如果該葉存儲(chǔ)了指數(shù)化條帶,則該表 格可以提供頂點(diǎn)指數(shù)的偏移。在壓縮期間,條帶與指數(shù)化條帶都可以被計(jì)算,并且可以只保 留較小的表示。然后,可以用額外的位來(lái)標(biāo)記這些葉,以指示條帶或指數(shù)化條帶的存在性。圖5示出了根據(jù)一實(shí)施方式將條帶用于三角形連通性的模型化的有關(guān)處理過(guò)程。 在510處,可以選擇一個(gè)數(shù)目,從而代表單個(gè)葉中可以包含的三角形的數(shù)目的限值。在520 處,可以創(chuàng)建查找表格,其中,每個(gè)條目對(duì)應(yīng)于單個(gè)網(wǎng)格布局。在530處,多個(gè)條帶可以被存 儲(chǔ)在每個(gè)條目中,按大小對(duì)它們進(jìn)行組織。在540處,三角形的數(shù)目和每個(gè)第一頂點(diǎn)的偏移 可以被存儲(chǔ)在每個(gè)條目處。在550處,三角形取向可以被存儲(chǔ)。上述過(guò)程可以結(jié)束于560。解碼為了使某些體系結(jié)構(gòu)中的解碼步驟加速,在一個(gè)實(shí)施方式中,可以使用目標(biāo)體系 結(jié)構(gòu)的未對(duì)準(zhǔn)的負(fù)載能力。這種體系結(jié)構(gòu)的一個(gè)示例是x86體系結(jié)構(gòu)。像x86系列的芯片 在存儲(chǔ)器負(fù)載方面可以是特別寬松的。此處,64位四倍長(zhǎng)字可以按下列方式被載入而不管 它們的對(duì)準(zhǔn)情況對(duì)于表示每個(gè)頂點(diǎn)所需的許多位n,計(jì)算適應(yīng)于四倍長(zhǎng)字的頂點(diǎn)的最大數(shù)目pn = [64/n]。使用Pn個(gè)頂點(diǎn)的未對(duì)準(zhǔn)的序列來(lái)存儲(chǔ)頂點(diǎn)。該最后的步驟是在圖6的實(shí)施方式中示出的此處,η等于44位并且pn等于1。一 個(gè)44位頂點(diǎn)可以被編碼,并且可以留下4個(gè)空白的位以在字節(jié)邊界上結(jié)束。因此,總共48 個(gè)位被分配給該頂點(diǎn)。在先前一個(gè)的開(kāi)始之后,下一個(gè)頂點(diǎn)可以被編碼6個(gè)字節(jié)(48位= (8位/字節(jié))*(6字節(jié)))。因?yàn)镻n個(gè)頂點(diǎn)的每個(gè)序列現(xiàn)在都在新的字節(jié)上開(kāi)始,所以解碼步驟被改進(jìn),其中,下面的體系結(jié)構(gòu)支持快速的未對(duì)準(zhǔn)的負(fù)載。對(duì)于快速的解碼,可以首先計(jì)算查找表格(LUT),其中,LUT為每個(gè)頂點(diǎn)大小η ε [1. . . 64]存儲(chǔ)2個(gè)數(shù)值頂點(diǎn)的數(shù)目Pn,該數(shù)目可以 被存儲(chǔ)在四倍長(zhǎng)字之內(nèi);以及在字節(jié)中相對(duì)于要解碼的下一個(gè)頂點(diǎn)(或多個(gè)頂點(diǎn))的位置 的偏移sn。解碼步驟可以按下列進(jìn)行,其中q是四倍長(zhǎng)字,解碼當(dāng)前正在從那里進(jìn)行1.從q起對(duì)pn個(gè)頂點(diǎn)進(jìn)行解碼。當(dāng)所有的頂點(diǎn)適應(yīng)于q時(shí),該操作可能需要SHIFT 和AND指令的序列。2.在q之后,載入下一個(gè)四倍長(zhǎng)字定位的Sn字節(jié)。為了改進(jìn)解碼步驟,可以使用整數(shù)SIMD操作。根據(jù)一個(gè)實(shí)施方式,一旦來(lái)自位串 的δ值被獲取,則使用SIMD操作的無(wú)分支代碼可以檢索整數(shù)歸整位置并且接下來(lái)使用歸 整柵格的原點(diǎn)和單元大小來(lái)計(jì)算世界空間浮動(dòng)點(diǎn)位置。附錄A給出了頂點(diǎn)數(shù)據(jù)解碼的偽代 碼的示例BVH樹(shù)布局下文描述了 兩級(jí)BVH,該兩級(jí)BVH可使用壓縮的和未壓縮的節(jié)點(diǎn);分級(jí)量化,該分 級(jí)量化可減小邊界框存儲(chǔ)器消耗;以及塊分配和塊相關(guān)指數(shù),該塊分配和塊相關(guān)指數(shù)可減 小對(duì)子節(jié)點(diǎn)的引用的大小。圖7示出了根據(jù)一實(shí)施方式的處理過(guò)程。在710處,可以使用 分級(jí)編碼來(lái)表達(dá)子邊界框即子節(jié)點(diǎn)的位置。子邊界框的最小和最大位置可以是相對(duì)于其母 節(jié)點(diǎn)來(lái)表達(dá)的。偏移可以被用于定義子邊界框的角落的位置,其中,上述偏移是相對(duì)于母框 的一點(diǎn)(比如原點(diǎn))而言的。如果只可以使用4位對(duì)每個(gè)子邊界框分量進(jìn)行編碼,則邊界 框存儲(chǔ)器占用等于24位。因此,在一個(gè)實(shí)施方式中,使用4字節(jié)(32位)/節(jié)點(diǎn)允許用8位 使子節(jié)點(diǎn)指數(shù)化并且按下文描述的方式對(duì)額外的信息進(jìn)行編碼。在720處,子節(jié)點(diǎn)可以被分組成多個(gè)塊。如圖8的實(shí)施方式所示,可以使用兩個(gè)指 數(shù)化系統(tǒng)。在一個(gè)塊之內(nèi),可以使用數(shù)目很小的位使這些子節(jié)點(diǎn)指數(shù)化。在圖8中,例如, 可以使用小的指數(shù)使來(lái)自根節(jié)點(diǎn)R的節(jié)點(diǎn)N指數(shù)化。為了引用當(dāng)前的塊之外的子節(jié)點(diǎn),四 字節(jié)整數(shù)可以被存儲(chǔ)在專用的前向節(jié)點(diǎn)中。在圖示中,底部節(jié)點(diǎn)B可以指向前向節(jié)點(diǎn)F。前 向節(jié)點(diǎn)F自身可以指向塊根R,其中,這些根R是各個(gè)子樹(shù)的根。通過(guò)使用這種布局,四字節(jié)節(jié)點(diǎn)格式可以被構(gòu)建,使得· 24位可以被用于邊界框(參見(jiàn)附錄B)。· 6位可以被用于使子節(jié)點(diǎn)指數(shù)化?!?2位可以被用于區(qū)分葉節(jié)點(diǎn)和三個(gè)內(nèi)部節(jié)點(diǎn)類型Χ、Υ、Ζ,可能需要它們對(duì)兩個(gè)子 節(jié)點(diǎn)進(jìn)行分選。在730處,葉數(shù)據(jù)可以與樹(shù)節(jié)點(diǎn)交織。在使葉數(shù)據(jù)(像三角形指數(shù)或頂點(diǎn)位置) 指數(shù)化時(shí),使用一個(gè)或多個(gè)四字節(jié)指數(shù)可能是昂貴的。如圖8的實(shí)施方式所示,使葉數(shù)據(jù)和 樹(shù)節(jié)點(diǎn)交織可以避免引用外部的數(shù)組。通過(guò)在每個(gè)塊之后使葉數(shù)據(jù)入隊(duì),可以相對(duì)于存儲(chǔ) 器中的葉位置來(lái)指示葉數(shù)據(jù)。在740處,BVH中的底部節(jié)點(diǎn)可以被壓縮,從而留下至少一部分的頂部節(jié)點(diǎn)未被壓 縮。當(dāng)大部分光線橫跨頂部節(jié)點(diǎn)時(shí),這可能在維持很小的存儲(chǔ)器占用的同時(shí)限制了性能影 響。上述過(guò)程可以結(jié)束于750。
      實(shí)現(xiàn)方式 上述處理過(guò)程可以以硬件、固件、或軟件、或它們的某種組合的方式來(lái)實(shí)現(xiàn)。另外, 本文所揭示的任何一種或多種特征可以以硬件、軟件、固件或其組合的方式來(lái)實(shí)現(xiàn),其中包 括分立的和集成的電路邏輯、專用集成電路(ASIC)邏輯和微處理器,并且可以被實(shí)現(xiàn)成特 定域集成電路封裝的一部分或集成電路封裝的組合。在本文中,術(shù)語(yǔ)“軟件”是指計(jì)算機(jī)程 序產(chǎn)品,這種產(chǎn)品包括計(jì)算機(jī)可讀介質(zhì),這種介質(zhì)中存儲(chǔ)了計(jì)算機(jī)程序邏輯,可使計(jì)算機(jī)系 統(tǒng)執(zhí)行本文所揭示的一個(gè)或多個(gè)特征和/或特征組合。例如,計(jì)算機(jī)程序產(chǎn)品可以包括緊 致盤(pán)(CD)、閃存、或只讀存儲(chǔ)器(ROM)、或其它非易失性存儲(chǔ)器設(shè)備。圖9示出了上述處理過(guò)程的軟件或固件實(shí)施方式。系統(tǒng)900可以包括處理器920 以及存儲(chǔ)器910的主體,存儲(chǔ)器910可以包括一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),這種介質(zhì)可以存 儲(chǔ)計(jì)算機(jī)程序邏輯940。例如,存儲(chǔ)器910可以被實(shí)現(xiàn)成硬盤(pán)和驅(qū)動(dòng)器、可移除介質(zhì)(比如 緊致盤(pán)和驅(qū)動(dòng)器)、或ROM器件。處理器920和存儲(chǔ)器910可以使用本領(lǐng)域技術(shù)人員公知 的任何技術(shù)(比如總線)進(jìn)行通信。存儲(chǔ)器910中所包含的邏輯可以被讀取,并被處理器 920執(zhí)行。一個(gè)或多個(gè)I/O端口和/或I/O器件被統(tǒng)一顯示成I/O 930,它也可以連接到處 理器920和存儲(chǔ)器910。根據(jù)一個(gè)實(shí)施方式,計(jì)算機(jī)程序邏輯可以包括模塊950-970。柵格邏輯950可以負(fù) 責(zé)全局柵格上的三角形的量化,使得這些三角形被歸整。編碼邏輯960可以負(fù)責(zé)將頂點(diǎn)位 置編碼成位串以及編碼三角形連通性,正如上文所描述的那樣。BVH邏輯970可以負(fù)責(zé)BVH 的構(gòu)建以及緊湊的方式,正如上文所描述的那樣。本文是在功能構(gòu)造模塊的幫助下揭示了系統(tǒng)和方法,這些功能構(gòu)造模塊示出了多 種功能、特征以及它們的關(guān)系。為了方便描述,本文已經(jīng)任意地定義了這些功能構(gòu)造模塊的 至少一些邊界??梢远x備選的邊界,只要指定的功能及其關(guān)系被恰當(dāng)?shù)貓?zhí)行就可以。盡管本文揭示了各種實(shí)施方式,但是應(yīng)該理解,它們僅僅是作為示例而非限制進(jìn) 行呈現(xiàn)的。對(duì)于本領(lǐng)域技術(shù)人員而言,很明顯,在不背離本文所揭示的方法和系統(tǒng)的精神和 范圍的情況下,可以在形式和細(xì)節(jié)等方面作出各種改變。由此,權(quán)利要求書(shū)的寬度和范圍不 應(yīng)該受到本文所揭示的任何示例性實(shí)施方式限制。附錄 A快速頂點(diǎn)數(shù)據(jù)解碼//在3個(gè)字節(jié)中的壓縮的AABB。4位被用于每個(gè)分量struct CAABB{void decode(aos3f pMin, aos3f pMax,aos3f&tMin, aos3f&tMax)const ;
      H每個(gè)分量存儲(chǔ)最小/最大值uint8_t pMinMax[3];H做出從8位最小/最大值到浮點(diǎn)的轉(zhuǎn)換static const float dLUTMinMax[256][2];};Il使用SSE4. 1指令的快速收集FINLINE aos3f
      aos3f:gather(const float氺x,const float氺y, const float氺z){aos3f to ;to. vec = _mm_load_ss (x);to. vec = _mm_castsil28_ps(_mm_insert_epi32(_mm_castps_si 128 (to. vec), * ((int*) y), 1)); to. vec = _mm_castsi128_ps(_mm_insert_epi32(_mm_castps_sil28(to. vec),*((int*)z),2));return to ;}H使用SSE手動(dòng)_編碼收集的快速解壓縮FINLINE voidCAABB4 decode (aos3f pMin, pMax, aos3f&tMin,aos3f&tM£ix) const{const aos3f ext = pMax-pMin ;const floats = dLUTMinMax[this- > pMinMax
      ];const float*y = dLUTMinMax [this- > pMinMax [1]];const float*z = dLUTMinMax [this- > pMinMax [2]];const aos3f deltaMin = aos3f::gather(x, y, z);const aos3f deItaMax = aos3f::gather(x+1, y+1, z+1);const aos3f tmpMin = pMin+ext氺deltaMin ;const aos3f tmpMax = pMin+ext氺deltaMax ;tMin = tmpMin ;tMax = tmpMax ;}附錄B快速壓縮的節(jié)點(diǎn)解碼//在3個(gè)字節(jié)中的壓縮的AABB。4位被用于每個(gè)分量struct CAABB {void decode(aos3f pMin, aos3f pMax,aos3f&tMin, aos3f&tMax)const ;H每個(gè)分量存儲(chǔ)最小/最大值uint8_t pMinMax[3];H做出從8位最小/最大值到浮點(diǎn)的轉(zhuǎn)換static const float dLUTMinMax[256][2];};Il使用SSE4. 1指令的快速收集FINLINE aos3faos3fgather(const float氺x,const float氺y,const float氺z){aos3f to ;
      to. vec = _mm_load_ss (χ);to. vec = _mm_castsil28_ps(_mm_insert_epi32(_mm_castps_sil28 (to. vec),* ((int*) y),1));to. vec = _mm_castsil28_ps(_mm_insert_epi32(_mm_castps_si 128 (to. vec), * ((int*) ζ), 2));return to ;}H使用SSE手動(dòng)_編碼收集的快速解壓縮FINLINE voidCAABB4 decode (aos3f pMin, pMax, aos3f&tMin,aos3f&tM£ix) const{const aos3f ext = pMax-pMin ;const floats = dLUTMinMax[this- > pMinMax
      ];const float*y = dLUTMinMax [this- > pMinMax [1]];const float*z = dLUTMinMax [this- > pMinMax [2]];const aos3f deltaMin = aos3f::gather(x, y, z);const aos3f deItaMax = aos3f::gather(x+1, y+1, z+1);const aos3f tmpMin = pMin+ext氺deltaMin ;const aos3f tmpMax = pMin+ext氺deltaMax ;tMin = tmpMin ;tMax = tmpMax ;}
      權(quán)利要求
      1.一種方法,包括在全局柵格上使景物的三角形量化,使得相鄰的三角形被歸整到一起; 將三角形的頂點(diǎn)位置編碼成可變長(zhǎng)度位串; 使三角形的連通性模型化;以及構(gòu)建緊湊邊界體層次(BVH),用于代表所述景物的至少一部分, 其中,由配置成執(zhí)行圖形處理的處理器來(lái)執(zhí)行所述方法。
      2.如權(quán)利要求1所述的方法,其特征在于,頂點(diǎn)位置的編碼包括對(duì)于每個(gè)頂點(diǎn)i,計(jì)算δ矢量Di = {Xi,Yi, zj,用于描述從包括該頂點(diǎn)的邊界框的原 點(diǎn)起的距離;對(duì)于邊界框中所有的頂點(diǎn),從各個(gè)頂點(diǎn)的δ矢量中確定最大的x、y、ζ分量max (Xi)、 max (Ji) λ max (Zi);確定對(duì)max (Xi)、max (Yi)、max (Zi)分別進(jìn)行編碼所需的位的數(shù)目(nx,ny, nz);以及 對(duì)(nx,ny,nz)進(jìn)行編碼,其中,頂點(diǎn)的δ矢量跟在經(jīng)編碼的(nx,ny,ηζ)的后面。
      3.如權(quán)利要求1所述的方法,其特征在于,頂點(diǎn)位置的編碼包括對(duì)于每個(gè)頂點(diǎn),計(jì)算δ矢量Di = {χ,, Yi, zj,其中,Di的每個(gè)分量指示沿著該分量的 維度該頂點(diǎn)從包括該頂點(diǎn)的邊界框的最近的平面起的距離,其中,最近的平面垂直于該維 度并且是包含該原點(diǎn)的平面或是與包含該原點(diǎn)的平面相反的平面;對(duì)于邊界框中所有的頂點(diǎn),從各個(gè)頂點(diǎn)的δ矢量中確定最大的x、y、ζ分量max(Xi)、 max (Ji) λ max (Zi);確定對(duì)max (Xi)、max (Yi)、max (Zi)分別進(jìn)行編碼所需的位的數(shù)目(nx,ny, nz); 對(duì)(nx,ny,nz)進(jìn)行編碼,其中,頂點(diǎn)的δ矢量跟在經(jīng)編碼的(nx,ny,ηζ)的后面;以及 向XpypZi中的每一個(gè)添加額外的位,其中,額外的位標(biāo)識(shí)最近的平面。
      4.如權(quán)利要求1所述的方法,其特征在于, 連通性的模型化包括標(biāo)識(shí)每個(gè)三角形的每個(gè)頂點(diǎn),其中,當(dāng)所述三角形的頂點(diǎn)是多個(gè)三角形的頂點(diǎn)時(shí),對(duì)于多個(gè)三角形中的每一個(gè)三角 形單獨(dú)地對(duì)頂點(diǎn)進(jìn)行標(biāo)識(shí)。
      5.如權(quán)利要求1所述的方法,其特征在于, 連通性的模型化包括對(duì)每個(gè)頂點(diǎn)進(jìn)行一次標(biāo)識(shí); 將一指數(shù)與每個(gè)頂點(diǎn)關(guān)聯(lián)起來(lái);以及通過(guò)列出與每個(gè)三角形的三個(gè)頂點(diǎn)相關(guān)聯(lián)的三個(gè)指數(shù),來(lái)標(biāo)識(shí)每個(gè)三角形。
      6.如權(quán)利要求1所述的方法,其特征在于, 連通性的模型化包括在BVH中,指定每個(gè)葉的三角形的最大數(shù)目;構(gòu)建查找表格(LUT),其中,LUT的每個(gè)條目與一組條帶相關(guān)聯(lián),其中,每個(gè)條帶包括一 個(gè)或多個(gè)鄰接的三角形的序列,其中,在LUT中沒(méi)有任何三角形被表示了不止一次; 對(duì)于每個(gè)條目,存儲(chǔ)三角形的數(shù)目以及每個(gè)三角形的第一頂點(diǎn)的偏移;以及 存儲(chǔ)每個(gè)三角形的取向。
      7.如權(quán)利要求1所述的方法,其特征在于,緊湊BVH的構(gòu)建包括對(duì)于每個(gè)子節(jié)點(diǎn),定義相對(duì)于相關(guān)聯(lián)的母節(jié)點(diǎn)的邊界體而指定的邊界體;將子節(jié)點(diǎn)分組成多個(gè)塊;對(duì)于每個(gè)塊,定義該塊中的每個(gè)子節(jié)點(diǎn)的指數(shù);對(duì)于具有葉的每個(gè)塊,在該塊之后列出與該塊相關(guān)聯(lián)的葉數(shù)據(jù);以及以壓縮的格式存儲(chǔ)底部節(jié)點(diǎn),并且以未壓縮的格式存儲(chǔ)頂部節(jié)點(diǎn)的至少一部分。
      8.如權(quán)利要求7所述的方法,其特征在于,該塊中的子節(jié)點(diǎn)被映射到轉(zhuǎn)發(fā)節(jié)點(diǎn),使得轉(zhuǎn)發(fā)節(jié)點(diǎn)指向該子節(jié)點(diǎn)的下級(jí)子樹(shù),其中該 子樹(shù)位于單獨(dú)的塊中。
      9.一種系統(tǒng),包括 處理器;以及與所述處理器進(jìn)行通信的存儲(chǔ)器,所述處理器用于存儲(chǔ)多個(gè)處理指令以便指導(dǎo)所述處理器執(zhí)行下列操作 在全局柵格上使景物的三角形量化,使得相鄰的三角形被歸整到一起; 將三角形的頂點(diǎn)位置編碼成可變長(zhǎng)度位串; 使三角形的連通性模型化;以及構(gòu)建緊湊邊界體層次(BVH),用于代表所述景物的至少一部分。
      10.如權(quán)利要求9所述的系統(tǒng),其特征在于,用于指導(dǎo)所述處理器對(duì)頂點(diǎn)位置進(jìn)行編碼的指令包括用于指導(dǎo)所述處理器執(zhí)行下列 操作的指令對(duì)于每個(gè)頂點(diǎn)i,計(jì)算δ矢量Di = {Xi,Yi, zj,用于描述從包括該頂點(diǎn)的邊界框的原 點(diǎn)起的距離;對(duì)于邊界框中所有的頂點(diǎn),從各個(gè)頂點(diǎn)的δ矢量中確定最大的x、y、ζ分量max (Xi)、 max (Ji) λ max (Zi);確定對(duì)max (Xi)、max (Yi)、max (Zi)分別進(jìn)行編碼所需的位的數(shù)目(nx,ny, nz);以及 對(duì)(nx,ny,nz)進(jìn)行編碼,其中,頂點(diǎn)的δ矢量跟在經(jīng)編碼的(nx,ny,ηζ)的后面。
      11.如權(quán)利要求9所述的系統(tǒng),其特征在于,用于指導(dǎo)所述處理器對(duì)頂點(diǎn)位置進(jìn)行編碼的指令包括用于指導(dǎo)所述處理器執(zhí)行下列 操作的指令對(duì)于每個(gè)頂點(diǎn),計(jì)算δ矢量Di = {χ,, Yi, zj,其中,Di的每個(gè)分量指示沿著該分量的 維度該頂點(diǎn)從包括該頂點(diǎn)的邊界框的最近的平面起的距離,其中,最近的平面垂直于該維 度并且是包含該原點(diǎn)的平面或是與包含該原點(diǎn)的平面相反的平面;對(duì)于邊界框中所有的頂點(diǎn),從各個(gè)頂點(diǎn)的δ矢量中確定最大的x、y、ζ分量max (Xi)、 max (Ji) λ max (Zi);確定對(duì)max (Xi)、max (Yi)、max (Zi)分別進(jìn)行編碼所需的位的數(shù)目(nx,ny, nz); 對(duì)(nx,ny,nz)進(jìn)行編碼,其中,頂點(diǎn)的δ矢量跟在經(jīng)編碼的(nx,ny,ηζ)的后面;以及 向XpypZi中的每一個(gè)添加額外的位,其中,額外的位標(biāo)識(shí)最近的平面。
      12.如權(quán)利要求9所述的系統(tǒng),其特征在于,用于指導(dǎo)所述處理器使連通性模型化的指令包括用于指導(dǎo)所述處理器執(zhí)行下列操作的指令標(biāo)識(shí)每個(gè)三角形的每個(gè)頂點(diǎn),其中,當(dāng)所述三角形的頂點(diǎn)是多個(gè)三角形的頂點(diǎn)時(shí),對(duì)于多個(gè)三角形中的每一個(gè)三角 形單獨(dú)地對(duì)頂點(diǎn)進(jìn)行標(biāo)識(shí)。
      13.如權(quán)利要求9所述的系統(tǒng),其特征在于,用于指導(dǎo)所述處理器使連通性模型化的指令包括用于指導(dǎo)所述處理器執(zhí)行下列操作 的指令對(duì)每個(gè)頂點(diǎn)進(jìn)行一次標(biāo)識(shí); 將一指數(shù)與每個(gè)頂點(diǎn)關(guān)聯(lián)起來(lái);以及通過(guò)列出與每個(gè)三角形的三個(gè)頂點(diǎn)相關(guān)聯(lián)的三個(gè)指數(shù),來(lái)標(biāo)識(shí)每個(gè)三角形。
      14.如權(quán)利要求9所述的系統(tǒng),其特征在于,用于指導(dǎo)所述處理器使連通性模型化的指令包括用于指導(dǎo)所述處理器執(zhí)行下列操作 的指令在BVH中,指定每個(gè)葉的三角形的最大數(shù)目;構(gòu)建查找表格(LUT),其中,LUT的每個(gè)條目與一組條帶相關(guān)聯(lián),其中,每個(gè)條帶包括一 個(gè)或多個(gè)鄰接的三角形的序列,其中,在LUT中沒(méi)有任何三角形被表示了不止一次; 對(duì)于每個(gè)條目,存儲(chǔ)三角形的數(shù)目以及每個(gè)三角形的第一頂點(diǎn)的偏移;以及 存儲(chǔ)每個(gè)三角形的取向。
      15.如權(quán)利要求9所述的系統(tǒng),其特征在于,用于指導(dǎo)所述處理器構(gòu)建緊湊BVH的指令包括用于指導(dǎo)所述處理器執(zhí)行下列操作的 指令對(duì)于每個(gè)子節(jié)點(diǎn),定義相對(duì)于相關(guān)聯(lián)的母節(jié)點(diǎn)的邊界體而指定的邊界體;將子節(jié)點(diǎn)分組成多個(gè)塊;對(duì)于每個(gè)塊,定義該塊中的每個(gè)子節(jié)點(diǎn)的指數(shù);對(duì)于具有葉的每個(gè)塊,在該塊之后列出與該塊相關(guān)聯(lián)的葉數(shù)據(jù);以及以壓縮的格式存儲(chǔ)底部節(jié)點(diǎn),并且以未壓縮的格式存儲(chǔ)頂部節(jié)點(diǎn)的至少一部分。
      16.如權(quán)利要求15所述的系統(tǒng),其特征在于,該塊中的子節(jié)點(diǎn)被映射到轉(zhuǎn)發(fā)節(jié)點(diǎn),使得轉(zhuǎn)發(fā)節(jié)點(diǎn)指向該子節(jié)點(diǎn)的下級(jí)子樹(shù),其中該 子樹(shù)位于單獨(dú)的塊中。
      17.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)可讀介質(zhì),在計(jì)算機(jī)可讀介質(zhì)中存儲(chǔ)了計(jì)算機(jī)程 序邏輯,所述計(jì)算機(jī)程序邏輯包括用于使處理器在全局柵格上使景物的三角形量化的邏輯,使得相鄰的三角形被歸整到 一起;用于使處理器將三角形的頂點(diǎn)位置編碼成可變長(zhǎng)度位串的邏輯; 用于使處理器使三角形的連通性模型化的邏輯;以及用于使處理器構(gòu)建緊湊邊界體層次(BVH)的邏輯,所述緊湊邊界體層次(BVH)用于代 表所述景物的至少一部分。
      18.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,用于使處理器對(duì)頂點(diǎn)位置進(jìn)行編碼的邏輯包括用于使處理器對(duì)每個(gè)頂點(diǎn)i計(jì)算δ矢量Di = {x^y^zj的邏輯,所述δ矢量用于描 述從包括該頂點(diǎn)的邊界框的原點(diǎn)起的距離;用于使處理器對(duì)于邊界框中所有的頂點(diǎn)從各個(gè)頂點(diǎn)的δ矢量中確定最大的x、y和ζ 分量 max (Xi)、max (Yi)、max (Zi)的邏輯;用于使處理器確定對(duì)max (Xi)、max (yi)和max(Zi)分別進(jìn)行編碼所需的位的數(shù)目(nx, ny,nz)的邏輯;以及用于使處理器對(duì)(nx,ny,nz)進(jìn)行編碼的邏輯,其中,頂點(diǎn)的δ矢量跟在經(jīng)編碼的(ηχ, ny, nz)的后面。
      19.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于, 用于使處理器對(duì)頂點(diǎn)位置進(jìn)行編碼的邏輯包括用于使處理器對(duì)每個(gè)頂點(diǎn)計(jì)算δ矢量Di= {Xi,yi,Zi}的邏輯,其中,Di的每個(gè)分量指 示沿著該分量的維度該頂點(diǎn)從包括該頂點(diǎn)的邊界框的最近的平面起的距離,其中,最近的 平面垂直于該維度并且是包含該原點(diǎn)的平面或是與包含該原點(diǎn)的平面相反的平面;用于使處理器對(duì)于邊界框中所有的頂點(diǎn)從各個(gè)頂點(diǎn)的δ矢量中確定最大的x、y、ζ分 量 max (Xi)、max (Yi)、max (Zi)的邏輯;用于使處理器確定對(duì)max (Xi)、max(yi)、max (Zi)分別進(jìn)行編碼所需的位的數(shù)目(nx,ny, nz)的邏輯;用于使處理器對(duì)(nx,ny,nz)進(jìn)行編碼的邏輯,其中,頂點(diǎn)的δ矢量跟在經(jīng)編碼的(ηχ, ny,nz)的后面;以及用于使處理器向Xi、yi、Zi中的每一個(gè)添加額外的位的邏輯,其中,額外的位標(biāo)識(shí)最近的 平面。
      20.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于, 用于使處理器對(duì)連通性進(jìn)行模型化的邏輯包括用于使處理器標(biāo)識(shí)每個(gè)三角形的每個(gè)頂點(diǎn)的邏輯,其中,當(dāng)所述三角形的頂點(diǎn)是多個(gè)三角形的頂點(diǎn)時(shí),對(duì)于多個(gè)三角形中的每一個(gè)三角 形單獨(dú)地對(duì)頂點(diǎn)進(jìn)行標(biāo)識(shí)。
      21.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于, 用于使處理器對(duì)連通性進(jìn)行模型化的邏輯包括用于使處理器對(duì)每個(gè)頂點(diǎn)進(jìn)行一次標(biāo)識(shí)的邏輯; 用于使處理器將一指數(shù)與每個(gè)頂點(diǎn)關(guān)聯(lián)起來(lái)的邏輯;以及用于使處理器通過(guò)列出與每個(gè)三角形的三個(gè)頂點(diǎn)相關(guān)聯(lián)的三個(gè)指數(shù)來(lái)標(biāo)識(shí)每個(gè)三角 形的邏輯。
      22.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于, 用于使處理器對(duì)連通性進(jìn)行模型化的邏輯包括用于使處理器在BVH中指定每個(gè)葉的三角形的最大數(shù)目的邏輯; 用于使處理器構(gòu)建查找表格(LUT)的邏輯,其中,LUT的每個(gè)條目與一組條帶相關(guān)聯(lián), 其中,每個(gè)條帶包括一個(gè)或多個(gè)鄰接的三角形的序列,其中,在LUT中沒(méi)有任何三角形被表 示了不止一次;用于使處理器對(duì)每個(gè)條目存儲(chǔ)三角形的數(shù)目以及每個(gè)三角形的第一頂點(diǎn)的偏移的邏 輯;以及用于使處理器存儲(chǔ)每個(gè)三角形的取向的邏輯。
      23.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于, 用于使處理器構(gòu)建緊湊BVH的邏輯包括用于使處理器對(duì)每個(gè)子節(jié)點(diǎn)定義相對(duì)于相關(guān)聯(lián)的母節(jié)點(diǎn)的邊界體而指定的邊界體的 邏輯;用于使處理器將子節(jié)點(diǎn)分組成多個(gè)塊的邏輯; 用于使處理器對(duì)每個(gè)塊定義該塊中的每個(gè)子節(jié)點(diǎn)的指數(shù)的邏輯; 用于使處理器對(duì)具有葉的每個(gè)塊在該塊之后列出與該塊相關(guān)聯(lián)的葉數(shù)據(jù)的邏輯;以及 用于使處理器以壓縮的格式存儲(chǔ)底部節(jié)點(diǎn)并且以未壓縮的格式存儲(chǔ)頂部節(jié)點(diǎn)的至少 一部分的邏輯。
      24.如權(quán)利要求23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,該塊中的子節(jié)點(diǎn)被映射到轉(zhuǎn)發(fā)節(jié)點(diǎn),使得轉(zhuǎn)發(fā)節(jié)點(diǎn)指向該子節(jié)點(diǎn)的下級(jí)子樹(shù),其中該 子樹(shù)位于單獨(dú)的塊中。
      全文摘要
      在一個(gè)緊湊數(shù)據(jù)結(jié)構(gòu)中,壓縮方法和系統(tǒng)對(duì)景物的邊界體層次(BVH)和三角形進(jìn)行編碼。在計(jì)算機(jī)程序正實(shí)際運(yùn)行時(shí)有效的解壓縮被執(zhí)行,并且可以被用在交互式光線跟蹤中。量化的頂點(diǎn)和三角形條帶可以被存儲(chǔ)在BVH葉節(jié)點(diǎn)中。局部頂點(diǎn)位置和頂點(diǎn)指數(shù)可以使用在位串中編碼的數(shù)目很小的位。在遍歷期間,經(jīng)優(yōu)化的算法可以對(duì)該幾何結(jié)構(gòu)進(jìn)行解碼,從而允許隨機(jī)訪問(wèn)具有最小的開(kāi)銷。
      文檔編號(hào)G06T1/00GK102034259SQ20101050070
      公開(kāi)日2011年4月27日 申請(qǐng)日期2010年9月25日 優(yōu)先權(quán)日2009年10月1日
      發(fā)明者B·塞戈維亞, M·厄恩斯特 申請(qǐng)人:英特爾公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1