TW201447813A - 產生防鋸齒體素資料 - Google Patents

產生防鋸齒體素資料 Download PDF

Info

Publication number
TW201447813A
TW201447813A TW102147982A TW102147982A TW201447813A TW 201447813 A TW201447813 A TW 201447813A TW 102147982 A TW102147982 A TW 102147982A TW 102147982 A TW102147982 A TW 102147982A TW 201447813 A TW201447813 A TW 201447813A
Authority
TW
Taiwan
Prior art keywords
voxel
sampling
graphic element
sampling point
primitive
Prior art date
Application number
TW102147982A
Other languages
English (en)
Inventor
Cyril Crassin
Yury Y Uralsky
Eric Enderton
Eric B Lum
Duluk, Jr
Henry Packard Moreton
David Luebke
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of TW201447813A publication Critical patent/TW201447813A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

本發明的一具體實施例揭示一種執行體素化的技術,該技術牽涉到識別由具有一前側與一後側的一第一圖形圖元交叉之一體素;及選擇該體素內的複數個取樣點。該技術另牽涉到針對該等複數個取樣點內含的每一取樣點,決定該取樣點是位於該第一圖形圖元的該前側,或位於該第一圖形圖元的該後側。最終,該技術牽涉到針對該等複數個取樣點內含的至少一第一取樣點,儲存一第一結果在一體素遮罩內,用以反應該第一取樣點是否位於該第一圖形圖元的該前側或位於該第一圖形圖元的該後側。

Description

產生防鋸齒體素資料
本發明通常關於電腦圖形,更具體地,關於產生防鋸齒體素資料。
體素化為一種將幾何物件(例如三角形網狀)轉換成體積圖片元素,也就是體素之技術。體素化處理可與光柵化處理比較,其中幾何物件投射到視面,並且指派至一或多個像素位置。不過,一像素代表視面的二維部分,一體素則代表三維場景內的一立方體。如此,體素化處理決定每一幾何物件交叉哪個體積元素,而不是只決定每一幾何物件覆蓋哪些像素。建構之後,三維場景的體素呈現可用於許多後續計算,包含照明(例如全體照明)、物件邊界的流體動態及實體模擬的碰撞偵測之計算等等。
傳統圖形處理系統通常以二分法執行體素化,也就是傳統系統決定一體素為「已佔用」,若該體素與一幾何物件交叉;或「未佔用」,若該體素未與該幾何物件交叉。這種二分法會在三維圖形與塑模當中導致許多問題,例如,建構包含移動物件的場景之體素呈現時,一物件可從未佔用一訊框內的一體素移至完全佔用該下一訊框內的該體素。這種突然改變導致體素隨幾何物件相對該場景移動(例如隨物件穿越一場景)而「突然」變成佔用及未佔用。同樣地,上述二方法所導入的不精準對於使用體素化呈現所執行許多種的後續計算有負面衝擊,例如,上述二分法導入的四捨五入誤差會導致執行下游照明計算、碰撞偵測分析或流體動態計算等等之時的計算不準確性。
因此,業界需要一種更有效將幾何物件體素化之方式。
本發明之一具體實施例揭示一種執行體素化的方法,該方法 牽涉到識別與具有一前側與一後側的一第一圖形圖元交叉之一體素,並且選擇該體素內的複數個取樣點。該方法另牽涉到針對該等複數個取樣點內含的每一取樣點,決定該取樣點是否位於該第一圖形圖元的該前側,或位於該第一圖形圖元的該後側。最終,該方法牽涉到針對該等複數個取樣點內含的至少一第一取樣點,儲存一第一結果在一體素遮罩內,用以反應該取樣點是否位於該第一圖形圖元的該前側或位於該第一圖形圖元的該後側。
進一步具體實施例提供一非暫態電腦可讀取媒體,及執行上述方法的一計算裝置。
所揭示技術之一優點在於,可有效率地建構一幾何物件的體素化呈現,並且用來決定分數佔用及/或閉塞值。然後使用已決定的佔用及/或閉塞值來執行後續圖形操作或塑模計算,不用像傳統體素化方式導入許多人工與不準確性。此外,本說明書內描述的該等體素遮罩、表面方程、及標量欄提供精確度、精準度及處理工作負載的變化等級,其可選取及用於建構適用於各式各樣應用的幾何物件之體素化呈現。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動程式
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧使用者輸入裝置
110‧‧‧顯示裝置
112‧‧‧平行處理子系統
113‧‧‧第二通訊路徑
114‧‧‧系統磁碟
116‧‧‧開關
118‧‧‧網路配接器
120-121‧‧‧外接卡
202‧‧‧平行處理單元
204‧‧‧平行處理記憶體
205‧‧‧輸入/輸出橋接器
206‧‧‧主介面
207‧‧‧任務/工作單元
208‧‧‧一般處理叢集
210‧‧‧記憶體交換開關單元
212‧‧‧前端
214‧‧‧記憶體介面
215‧‧‧劃分單元
220‧‧‧動態隨機存取記憶體
230‧‧‧處理叢集陣列
305‧‧‧管線管理員
310‧‧‧串流多重處理器
315‧‧‧貼圖單元
325‧‧‧預先光柵運算
328‧‧‧記憶體管理單元
330‧‧‧工作分配交換開關
335‧‧‧第一點五層快取
400‧‧‧圖形處理管線
410‧‧‧資料組合器
415‧‧‧頂點處理單元
420‧‧‧曲面細分起始處理單元
425‧‧‧幾何處理單元
450‧‧‧視埠縮放、消隱與裁切單元
455‧‧‧光柵器
460‧‧‧片段處理單元
465‧‧‧光柵操作單元
500‧‧‧三維場景
510‧‧‧體素
520‧‧‧圖形圖元
525‧‧‧頂點
610‧‧‧取樣點
630‧‧‧後側
635‧‧‧前側
640‧‧‧表面法線
700‧‧‧方法
810‧‧‧交叉平面
1010‧‧‧取樣點
1020‧‧‧交叉平面
如此上面簡單彙總可詳細了解本發明上述特色的方式,本發明的更特定說明則參照具體實施例,某些具體實施例說明於附圖。不過吾人應該注意,附圖只說明本發明的典型具體實施例,因此並不對本發明範疇產生限制,本發明承認其他等效具體實施例。
第一圖為例示構成實施本發明之一或多個態樣之電腦系統的方塊圖;第二圖例示根據本發明之一具體實施例的平行處理子系統;第三圖為根據本發明之一具體實施例之第二圖中平行處理單元之一者內的一般處理叢集的方塊圖;第四圖為根據本發明之一具體實施例之可構成第二圖中平行處理單元之一或多者來實施之一圖形處理管線的概念圖;第五圖為例示根據本發明之一具體實施例之三維場景內的一圖形圖元的體素化; 第六A圖和第六B圖例示根據本發明之一具體實施例之用於執行多樣本防鋸齒(MSAA,Multi-Sample Anti-Aliased)體素化之技術;第七A圖為根據本發明之一具體實施例之用於執行多樣本防鋸齒體素化之方法步驟的流程圖:第七B圖為根據本發明之一具體實施例之用於分析分布在一體素內取樣點之方法步驟的流程圖;第八A圖和第八B圖例示根據本發明之一具體實施例之使用表面方程以執行體素化之技術;第九圖為根據本發明之一具體實施例之使用表面方程以執行體素化之方法步驟的流程圖;第十A圖和第十B圖例示根據本發明之一具體實施例之使用標量欄以執行體素化之技術;及第十一圖為根據本發明的一具體實施例之使用標量欄以執行體素化之方法步驟的流程圖。
在以下描述中,揭示許多特定細節以對本發明有更徹底之理解。但是,精通技術人士應瞭解,在沒有一或多個該等特定細節之下還是可實施本發明。
系統概觀
第一圖為例示構成實施本發明一或多個態樣的電腦系統100之方塊圖。電腦系統100包括一中央處理單元(CPU,Central Processing Unit)102,及通過一互連路徑通訊的一系統記憶體104,其中該路徑可包括一記憶體橋接器105。系統記憶體104可構成儲存一裝置驅動程式103。例如可為北橋晶片的記憶體橋接器105透過匯流排或其他通訊路徑106(例如超傳輸連結),連接一I/O(輸入/輸出)橋接器107。例如可為南僑晶片的輸入/輸出橋接器107接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並透過通訊路徑106和記憶體橋接器105將該輸入轉送至中央處理單元102。一平行處理子系統112透過匯流排或第二通訊路徑113(例如週邊組件互連(PCI)Express、加速圖形連接埠(Accelerated Graphics Port) 或HyperTransport連結)連接記憶體橋接器105;在一具體實施例中,平行處理子系統112為傳遞像素給顯示裝置110(任何傳統陰極射線管、液晶監視器、發光二極體顯示器等等)的圖形子系統。系統磁碟114也連接I/O橋接器107,並且可構成儲存內容與應用程式以及資料,供中央處理單元102及平行處理子系統112使用。系統磁碟114提供非揮發性儲存裝置給應用程式與資料,並且可包括固定式或可移除式硬碟機、快閃記憶體裝置以及CD-ROM(小型光碟唯讀記憶體)、DVD-ROM(數位多用途光碟-ROM)、藍光、HD-DVD(高傳真DVD)或其他磁性、光學或固態儲存裝置。
一開關116提供I/O橋接器107與其他組件,像是網路配接器118以及許多外接卡120和121之間的連接。其他組件(未明確顯示),包括萬用序列匯流排(USB,Universal Serial Bus)或其他連接埠連接、小型光碟(CD)光碟機、數位多用途光碟(DVD)光碟機、檔案記錄裝置等等,也可連接輸入/輸出橋接器107。第一圖顯示的許多通訊路徑,包括特別指名的通訊路徑106和113,可使用任何合適的協定來實施,例如PCI Express、AGP(加速圖形連接埠)、HyperTransport或任何其他匯流排或點對點通訊協定,以及不同組件之間的連接可使用業界內已知的不同協定。
在一具體實施例中,平行處理子系統112併入將圖形與視訊處理最佳化的電路,包括例如視訊輸出電路,並且構成一圖形處理單元(GPU,Graphics Processing Unit)。在另一具體實施例中,平行處理子系統112併入將一般用途處理最佳化的電路,同時保留底層計算架構,本說明書內有更詳細描述。在仍舊另一具體實施例中,平行處理子系統112可在單一子系統內合併一或多個其他系統元件,例如結合記憶體橋接器105、中央處理單元102和輸入/輸出橋接器107以形成一晶片上系統(SoC,System on Chip)。
應瞭解,本說明書中顯示的該系統為例示,故可進行改變與修改。包括橋接器的數量與配置、中央處理單元102的數量及平行處理子系統112的數量這類連接拓撲可依照需求修改。例如在某些具體實施例中,系統記憶體104直接連接中央處理單元102,而不是透過橋接器,並且其他裝置透過記憶體橋接器105以及中央處理單元102與系統記憶體104通訊。 在其他替代拓撲中,平行處理子系統112連接輸入/輸出橋接器107或直接連接中央處理單元102,而不是連接記憶體橋接器105。仍舊在其他具體實施例中,輸入/輸出橋接器107和記憶體橋接器105可整合成為單一晶片,替代現有的一或多個分散裝置。大型組件可包括兩或多個中央處理單元102及兩或多個平行處理子系統112。本說明書中顯示的該等特定組件為選擇性;例如可支援任何數量的外接卡或週邊裝置。在某些具體實施例中,可省略開關116,並且網路配接器118和外接卡120、121直接連接I/O橋接器107。
第二圖例示根據本發明一具體實施例的平行處理子系統112。如所示,平行處理子系統112包括一或多個平行處理單元(PPU,Parallel Processing Unit)202,每一者耦接至區域平行處理(PP,Parallel Processing)記憶體204。一般來說,平行處理子系統包括數量為U的平行處理單元,其中U1。(本說明書中多個類似物件的實例用參考號碼標示出該物件,並且括號標示所需的實例。)平行處理單元202及平行處理記憶體204可使用一或多個積體電路裝置來實施,例如可程式處理器、特殊應用積體電路(ASIC,Application Specific Integrated Circuit)或記憶體裝置,或以任何其他技術可行方式。
請即重新參考第一圖以及第二圖所示,在一具體實施例中,平行處理子系統112內的某些或全部平行處理單元202為具有著色管線的圖形處理器,其可構成執行許多操作,這些操作有關透過記憶體橋接器105和第二通訊路徑113,從中央處理單元102及/或系統記憶體104供應的圖形資料(例如幾何物件)產生像素資料、與區域平行處理記憶體204(可用來當成圖形記憶體,包括例如傳統訊框緩衝區)互動以儲存與更新像素資料、傳遞像素資料給顯示裝置110等等。在某些具體實施例中,平行處理子系統112可包括操作當成圖形處理器的一或多個PPU 202,及用於一般用途計算的一或多個其他PPU 202。該等平行處理單元可相同或不同,並且每一平行處理單元可擁有一專屬的平行處理記憶體裝置或無專屬的平行處理記憶體裝置。平行處理子系統112內的一或多個平行處理單元202可輸出資料至顯示裝置110,或平行處理子系統112內的每一平行處理單元202可輸出 資料至一或多個顯示裝置110。
在操作上,中央處理單元102為電腦系統100的主要處理器,控制與協調其他系統組件的操作。尤其是,中央處理單元102發出指令控制平行處理單元202的操作。在某些具體實施例中,中央處理單元102將每一平行處理單元202的指令串流寫入至一資料結構(第一圖或第二圖未明確顯示),其可位於系統記憶體104內、平行處理記憶體204內或可存取中央處理單元102和平行處理單元202的其他儲存位置內。每一資料結構已經寫入一推送緩衝區的指標,開始在該資料結構內處理該指令串流。平行處理單元202讀取來自一或多個推送緩衝區的指令串流,然後關於中央處理單元102的操作非同步執行指令。利用應用程式透過裝置驅動程式103來控制不同推送緩衝區的排程,指定每一推送緩衝區的執行優先順序。
請即重新參考第二圖以及第一圖,每一平行處理單元202包括一I/O(輸入/輸出)單元205,其透過連接記憶體橋接器105(或在替代具體實施例中,直接至中央處理單元102)的通訊路徑113,與電腦系統100的其餘組件通訊。平行處理單元202與電腦系統100其餘組件的連接也可改變。在某些具體實施例中,平行處理子系統112實施成為可插入電腦系統100內擴充槽的外接卡。在其他具體實施例中,平行處理單元202可與例如記憶體橋接器105或輸入/輸出橋接器107這類匯流排橋接器整合在單一晶片上。仍舊在其他具體實施例中,平行處理單元202的某些或全部元件可與中央處理單元102整合在單一晶片上。
在一具體實施例中,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一平行處理單元202,如業界內所熟知。在一具體實施例中,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一平行處理單元202,如業界內所熟知。一輸入/輸出單元205產生在通訊路徑113上傳輸的封包(或其他信號),也從通訊路徑113上接收所有傳入封包(或其他信號),將該等傳入封包導引至平行處理單元202的適當組件。例如,有關處理任務的指令可導引至主介面206,而有關記憶體操作的指令(例如讀取或寫入平行處理記憶體204)可導引至記憶體交換開關單元210。主介面206讀取每一推送緩衝區,並將該推送緩衝區內儲存的該指令串流輸出至一 前端212。
每一平行處理單元202有利地實施一高度平行處理架構。如細節內所示,平行處理單元202(0)包括一處理叢集陣列230,其包括數量為C的一般處理叢集(GPC,General Processing Cluster)208,其中C1。每個一般處理叢集208可同時執行大量的(例如數百或數千)執行緒,其中每一執行緒是一程式的實例。在許多應用當中,不同的一般處理叢集208可分配用於處理不同類型的程式,或用於執行不同類型的計算。一般處理叢集208的分配絕大部分取決加諸於每一類型程式或計算的工作負荷。
一般處理叢集208從任務/工作單元207內的工作分配單元當中接收要執行的處理任務,該工作分配單元接收指標來處理任務,其編碼為任務中繼資料(TMD,Ttask Metadata)並儲存在記憶體內。該指標至任務中繼資料包括在指令串流內,其儲存當成一推送緩衝區並由前端單元212從主介面206接收。可編碼為任務中繼資料的處理任務包括要處理的資料索引,以及定義如何處理該資料的狀態參數與指令(例如要執行哪個程式)。任務/工作單元207從前端212接收任務,並且確保在每一任務中繼資料指定的處理開始之前已經將一般處理叢集208構成有效狀態。一優先順序可指定給每一任務中繼資料,用來排定該處理任務的執行時間。或者,該任務中繼資料可包括一參數,其控制該任務中繼資料加入處理任務清單(或處理任務指標清單)的頭部或尾部,藉此提供優先順序的另一控制等級。
記憶體介面214包括數量為D的劃分單元215,這些單元每一直接連接一部分平行處理記憶體204,其中D1。如所示,劃分單元215的數量一般等於動態隨機存取記憶體(DRAM,Dynamic Random Access Memory)220的數量。在其他具體實施例中,劃分單元215的數量可不等於記憶體裝置的數量。精通技術人士應瞭解,動態隨機存取記憶體220可用其他合適的裝置取代,並且可為一般傳統設計,因此省略其詳細說明。像是訊框緩衝區或貼圖地圖這類著色目標可通過動態隨機存取記憶體220儲存,允許劃分單元215平行寫入每一著色目標的部分,以有效使用平行處理記憶體204的可用頻寬。
一般處理叢集208之任一者可處理寫入平行處理記憶體204 內任一動態隨機存取記憶體220的資料。交換開關單元210構成將每個一般處理叢集208的輸出繞送至任意劃分單元215的輸入或至用於進一步處理的其他一般處理叢集208。一般處理叢集208透過交換開關單元210與記憶體介面214通訊,以讀取或寫入許多外部記憶體裝置。在一具體實施例中,交換開關單元210具有一連接記憶體介面214來與輸入/輸出單元205通訊,以及一連接區域平行處理記憶體204,藉此讓不同一般處理叢集208內的處理核心與系統記憶體104或不在平行處理單元202區域上的其他記憶體通訊。在第二圖所示的具體實施例中,交換開關單元210直接連接輸入/輸出單元205。交換開關單元210可使用虛擬通道,以分隔一般處理叢集208與劃分單元215之間的流量串流。
一般處理叢集208同樣可編程執行有關廣泛應用的處理任務,包括但不受限於線性與非線性資料傳輸、計算表面方程(例如平面方程、二次曲面方程等等)及/或與一表面的距離、視訊及/或音訊資料篩選、模型化運算(例如套用實體規則來決定位置、速度以及其他物件屬性)、影像著色運算(例如曲線細分著色、影點著色、幾何著色及/或像素著色程式)等等。PPU 202可從系統記憶體104及/或區域平行處理記憶體204將資料傳輸進入內部(晶片上)記憶體、處理該資料並將結果資料寫回系統記憶體104及/或區域平行處理記憶體204,其中這種資料可由其他系統組件存取,包括CPU 102或另一平行處理子系統112。
一平行處理單元202可提供任何數量的區域平行處理記憶體204,包括非區域記憶體,並且可任何情況下使用區域記憶體和系統記憶體。例如,平行處理單元202可為統一記憶體架構(UMA,Unified Memory Architecture)具體實施例內的圖形處理器。在這種具體實施例中,提供一些或無專屬圖形(平行處理)記憶體,並且平行處理單元202完全或幾乎完全使用系統記憶體104。在統一記憶體架構具體實施例中,平行處理單元202可整合至橋接器晶片或處理器晶片,或提供當成分散式晶片,具有高速連結(例如PCI Express)透過橋接器晶片或其他通訊方式將平行處理單元202連接系統記憶體。
如上述,任何數量的平行處理單元202可包括在一平行處理 子系統112內。例如,單一外接卡上可提供多個平行處理單元202,或多張外接卡可連接通訊路徑113,或一或多個平行處理單元202可整合到一橋接器晶片上。多平行處理單元系統內的平行處理單元202可彼此相同或不同。例如,不同的平行處理單元202可具有不同數量的處理核心、不同大小的區域平行處理記憶體等等。當存在多個平行處理單元202時,這些平行處理單元可平行操作,以比單一平行處理單元202還要高產量的方式來處理資料。合併一或多個平行處理單元202的系統可在許多設置與外型因素之下實施,包括桌上型、膝上型或手持式個人電腦、智慧型手機、伺服器、工作站、遊戲機、嵌入式系統等等。
第三圖為根據本發明之一具體實施例之第二圖中平行處理單元202之一者內的一般處理叢集208的方塊圖。每個一般處理叢集208可構成同時執行大量執行緒,其中「執行緒」一詞代表在特定輸入資料集上執行的特定程式之實例。在某些具體實施例中,單一指令、多重資料(Single-Instruction,Multiple-Data,SIMD)指令發行技術用於支援大量執行緒的平行執行,而不用提供多個獨立指令單元。在其他具體實施例中,單一指令、多重執行緒(SIMT,Single-Instruction,Multiple-Thread)技術用於支援大量一般同步執行緒的平行執行,使用共用指令單元,其構成發出指令至每個一般處理叢集208內的處理引擎集。不同於一單一指令、多重資料執行引擎,其中所有處理區域一般執行一致的指令,單一指令、多重執行緒執行允許不同執行緒更迅速遵循分散的執行路徑通過一已知執行緒程式。業界內精通技術人士應瞭解,單一指令、多重資料處理區域代表一單一指令、多重執行緒處理區域的函數子集。
透過將處理任務分配至串流多重處理器(SM,Streaming Multiprocessor)310的管線管理員305可有利地控制一般處理叢集208的操作。管線管理員305也可構成利用指定串流多重處理器310所輸出已處理資料的目的地,控制一工作分配交換開關330。
在一具體實施例中,每個一般處理叢集208包括數量為M的串流多重處理器310,其中M1,每一串流多重處理器310構成處理一或多個執行緒群組。另外,每一串流多重處理器310有利地包括可管路化 的相同功能執行單元集(例如執行單元與載入儲存單元),允許完成先前指令之前發出新指令,如先前技術所知。本發明可提供任何功能執行單元組合。在一具體實施例中,該等功能單元支援許多種運算,包括整數與浮點演算(例如加法與乘法)、比較運算、布林運算(AND、OR、XOR)、位元位移和許多代數函數的計算(例如平面插值、三角函數以及對數函數等等);並且該相同功能單元可用來執行不同運算,包括執行體素化運算(例如交叉與投射計算、取樣點測試、距離與體積計算、表格查尋等等)。
傳輸至特定一般處理叢集208的該系列指令構成一執行緒,如本說明書先前所定義,並且通過串流多重處理器310內平行處理引擎(未顯示)的特定數量同時執行的執行緒之集合在此稱為「線程束」或「執行緒群組」。如本說明書所使用,「執行緒群組」代表在不同輸入資料上同時執行相同程式的執行緒群組,其中該群組的一執行緒指派給串流多重處理器310內不同的處理引擎。一執行緒群組可包括數量比串流多重處理器310內處理引擎數量還要少的執行緒,在此案例中,某些處理引擎會在循環期間處理該執行緒群組時閒置。執行緒群組也可包括數量比串流多重處理器310內處理引擎數量還要多的執行緒,在此案例中,將在連續時脈循環上進行處理。因為每一串流多重處理器310可同時支援最多G個執行緒群組,所以在任何已知時間上一般處理叢集208內可執行最多G*M個執行緒群組。
此外,在串流多重處理器310內可同時啟用複數個相關執行緒群組(在不同執行相位內)。此執行緒群組的集合稱為「協作執行緒陣列」(CAT,Cooperative Thread Array)或「執行緒陣列」。特定協作執行緒陣列的大小等於m*k,其中k為執行緒群組內同時執行的執行緒數量,通常為串流多重處理器310內平行處理引擎數量的整數倍數,並且m為串流多重處理器310內同時啟用的執行緒群組數量。協作執行緒陣列的大小通常由程式設計師及該協作執行緒陣列可用的硬體資源數量(例如記憶體或暫存器)來決定。
每一串流多重處理器310包括第一層(L1)快取單元,或使用串流多重處理器310之外對應L1快取單元內的空間,其用於執行載入與儲 存操作。每一串流多重處理器310也要存取所有一般處理叢集208之間共用的第二層(L2)快取單元,並且可用於在執行緒之間傳輸資料。最後,SM 310也要存取至晶片外「全域」記憶體,其可包括例如平行處理記憶體204及/或系統記憶體104。應瞭解,平行處理單元202之外的任何記憶體可用來當成全域記憶體。此外,第1.5層(L1.5)快取單元335可包括在一般處理叢集208內,構成接收並固定由串流多重處理器310要求透過記憶體介面214從記憶體擷取的資料,包括指令、統一資料及常數資料,並且將該要求的資料提供給串流多重處理器310。具有一般處理叢集208內多個串流多重處理器310的具體實施例得利於共用共用指令和在L1.5快取單元335內快取的資料。
每個一般處理叢集208可包括一記憶體管理單元(MMU,Memory Management Unit)328,其構成將虛擬位址映射至實體位址。在其他具體實施例中,記憶體管理單元328可位於記憶體介面214內。記憶體管理單元328包括一組頁面表記錄(PTE,Page Table Entry),用於將一拼貼以及選擇性一快取線索引的虛擬位址映射至實體位址。記憶體管理單元328可包括能夠位於多重處理器串流多重處理器310或L1快取單元或一般處理叢集208內的位址轉換後備暫存器(TLB,Translation Lookaside Buffer)或快取。該實體位址經過處理來分配表面資料存取地點,以便讓有效要求交錯於劃分單元215之間。該快取線索引可用於決定一快取線的要求是否命中或誤失。
在圖形與計算應用當中,一般處理叢集208可構成,使得每一串流多重處理器310耦接至一貼圖單元315,用於執行貼圖映射操作,例如決定貼圖樣本位置、讀取貼圖資料及篩選該貼圖資料。貼圖資料從內部貼圖L1快取(未顯示)讀取,或在某些具體實施例內從串流多重處理器310內的該L1讀取,並且依照需求從所有一般處理叢集208之間共用的L2快取、平行處理記憶體204或系統記憶體104擷取。每一串流多重處理器310輸出處理過的任務至工作分配交換開關330,以便將該處理過的任務提供至另一一般處理叢集208供進一步處理,或透過交換開關單元210將該處理過的任務儲存在L2快取、平行處理記憶體204或系統記憶體104內。preROP (預先光柵運算)325構成從串流多重處理器310接收資料、將資料引導至劃分單元215內的光柵操作單元,並且執行顏色混合、組織像素彩色資料及執行位址轉譯的最佳化。
應瞭解,本說明書中顯示的該核心架構為例示,所以可進行改變與修改。任何數量的處理單元,例如串流多重處理器310或貼圖單元315、preROP 325可包括在一般處理叢集208內。此外,如第二圖所示,平行處理單元202可包括任意數量功能彼此類似的一般處理叢集208,如此執行行為並不取決於接收特定處理任務的一般處理叢集208。此外,每個一般處理叢集208得利於與其他一般處理叢集208無關的操作,運用分離並分散的處理單元、L1快取單元,以執行一或多個應用程式的任務。
精通此技術人士應瞭解,第一圖、第二圖和第三圖描述的架構並非用於限制本發明範疇,本說明書內的技術可在任何正確設置的處理單元上實施,在不悖離本發明範疇之下包括但不受限於一或多個CPU、一或多個多核心CPU、一或多個平行處理單元202、一或多個一般處理叢集208、一或多個圖形或特殊用途處理單元等等。
在本發明的具體實施例中,吾人想要使用一計算系統的平行處理單元202或其他處理器,運用執行緒陣列來執行一般用途計算。該執行緒陣列內的每一執行緒可指派一唯獨的執行緒識別碼(「執行緒ID」),其可在該執行緒執行期間存取該執行緒。該執行緒ID可定義為一維度或多維度數值,控制該執行緒處理行為的許多態樣。例如,一執行緒ID可用於決定設定一執行緒的哪個輸入資料部分要處理及/或決定設定一執行緒的哪個輸入資料部分要產生或寫入。
每個執行緒指令的序列可包括至少一指令,其定義該代表性執行緒與該執行緒陣列的一或多個其他執行緒之間的協作行為。例如,該序列的每個執行緒指令可包括:一中斷指令,將在該順序內特定點上該代表執行緒運算執行中斷,直到一或多個其他執行緒到達該特定點上為止:一儲存指令,用以該代表執行緒將一或多個其他執行緒可存的資料儲存至一共用記憶體內;及一讀取與更新指令,用以該代表執行緒根據其執行緒ID自動讀取與更新一共用記憶體內一或多個該等其他執行緒已經存取過的 資料等等。該協作執行緒陣列程式也可包括一計算指令,用以計算該共用記憶體內所要讀取資料的位址,其中該位址為執行緒ID的函數。利用定義合適的功能並且提供同步技術,資料可利用CAT的一執行緒寫入共用記憶體內的一已知位置,並且以可預測方式用相同協作執行緒陣列的不同執行緒從該位置當中讀取。因此,支援在執行緒之間共用的任何資料圖案,並且一協作執行緒陣列內的任何執行緒可與相同協作執行緒陣列內任何其他執行緒共用資料。在協作執行緒陣列執行緒之間共用的資料內容(若有的話)由該協作執行緒陣列程式決定;如此,應瞭解,在使用協作執行緒陣列的特定應用當中,根據該協作執行緒陣列程式,協作執行緒陣列的執行緒彼此之間不會確實共用資料,並且在本說明書中可同時使用「協作執行緒陣列」與「執行緒陣列」等詞。
圖形管線架構
第四圖為根據本發明之一具體實施例之可構成第二圖中平行處理單元202之一或多者來實施之一圖形處理管線400概念圖。例如,一般處理叢集208之一者可構成執行頂點處理單元415、幾何處理單元425及片段處理單元460之一或多者的功能。資料組合器410、圖元組合器420、光柵器455及光柵操作單元465的功能也可由一般處理叢集208與對應劃分單元215內的其他處理引擎所執行。另外,可使用一或多個功能的專屬處理單元,實施圖形處理管線400。
資料組合器410集合高階表面、圖元等等的頂點資料,並且將包括該等頂點屬性的該頂點資料輸出至頂點處理單元415。頂點處理單元415為一可程式執行單元,其構成執行頂點著色程式,依照該頂點著色程式所規定照明與轉換頂點資料。例如,頂點處理單元415可編程將該頂點資料從一物件型座標代表(物件空間)轉換成一替代型座標系統,例如世界空間或標準化裝置座標(NDC,Normalized Device Coordinates)空間。頂點處理單元415可用資料組合器410讀取一般處理叢集208快取、平行處理記憶體204或系統記憶體104內儲存的資料,用來處理該頂點資料。
圖元組合器420接收來自頂點處理單元415的頂點屬性,依照需求讀取儲存的頂點屬性,並且建構圖形圖元讓幾何處理單元425處理。 圖形圖元包括三角形、線段、點等等。幾何處理單元425為一可程式執行單元,其構成執行幾何著色程式,依照該幾何著色程式所規定轉換接收自圖元組合器420的圖形圖元。另外,幾何處理單元425可編程計算用來將該等新圖形圖元光柵化的參數,例如平面方程係數、計算體素交叉、執行投射計算、計算曲度值並且執行其他種體素化運算。
在某些具體實施例中,幾何處理單元425也可新增或刪除該幾何串流內的元件。幾何處理單元425輸出將新圖形圖元指定至一視埠縮放、消隱以及裁切單元450的該等參數與頂點。幾何處理單元425可讀取儲存在平行處理記憶體204或系統記憶體104內的資料,用來處理該幾何資料。視埠縮放、消隱與裁切單元450執行裁切(例如將平面或表面裁切成一體素)、消隱與視埠縮放,並且將處理過的圖形圖元輸出至一光柵器455。
光柵器455掃描轉換新圖形圖元,且將片段與覆蓋率資料輸出至片段處理單元460。光柵器455可在二維及/或三維內執行光柵化,以產生二維及/或三維覆蓋率資料,二維覆蓋率可由光柵器455使用防鋸齒單元(例如多樣本防鋸齒硬體)來產生。三維覆蓋率可儲存在一體素遮罩內。此外,光柵器455可構成執行z消隱、深度測試及其他z型最佳化。例如,光柵器455可構成決定圖形圖元相對於一或多個取樣點的覆蓋率,及/或有關該圖形圖元的該等一或多個取樣點的深度。
片段處理單元460為一可程式執行單元,其構成執行片段著色程式,依照該片段著色程式所規定轉換接收自光柵器455的片段。例如,片段處理單元460可編程執行操作,例如透視修正、貼圖映射、著色、混色等等,以產生輸出至光柵操作單元465的已著色片段。片段處理單元460可讀取儲存在平行處理記憶體204或系統記憶體104內的資料,用來處理該片段資料。根據該編程的取樣率,片段可依照像素、取樣或其他細密度來著色。
光柵操作單元465為一種處理單元,其執行光柵操作,例如模板、z測試、混色等等,並且將像素資料當成處理過的圖形資料,以儲存在圖形記憶體。該處理過的圖形資料可儲存在圖形記憶體,例如平行處理記憶體204,及/或系統記憶體104,用於顯示在顯示裝置110或由中央處理 單元102或平行處理子系統112進一步處理。在本發明的某些具體實施例中,光柵操作單元465構成將寫入記憶體的z或顏色資料壓縮,並且將從記憶體讀取的z或顏色資料解壓縮。
產生防鋸齒體素資料
第五圖例示為根據本發明一具體實施例之三維場景500內之一圖形圖元520的體素化。如第五圖所示,每一體素510代表該場景500內的一立方體形體積。圖元520與體素之間的每一交叉可定義三維體素片段,在此有時稱為「片段」。
圖元520可為大型幾何物件的一部分,例如三維場景500內的三維物件的三角形網狀呈現。因此,圖元520可包括一正面與一背面。在許多具體實施例中,圖元520的該正面定義為面向該幾何物件外面的表面,並且該背面定義為面向該幾何物件內部的表面。圖元520的該正面與背面之方向可由圖元520的表面法線來指示,及/或由其中圖元520的頂點順序來指定,例如,圖元520的該正面可由圖元520的表面法線的方向來指示,其可由指定圖元520的頂點525的順序(例如順時鐘或逆時鐘)來決定。
雖然以下技術用特定硬體單元(例如幾何處理單元425、光柵器455、片段處理單元460、光柵操作單元465等等)執行來說明,不過以下描述的每種技術用軟體、專屬硬體或兩者的組合,以同等方式來執行。例如,描述成使用該光柵器455執行的技術(例如產生一覆蓋遮罩)可用軟體以同等方式執行(例如使用片段處理單元460)。此外,描述成使用軟體執行的技術可使用專屬硬體執行來取代。此外,雖然以下技術使用取樣點來描述,不過本說明書內描述的每一技術可使用任何一參考點或參考位置(例如體素彎角、體素邊緣、體素面、一中心點、偏心點等等)來執行。
第六A圖和第六B圖例示根據本發明之一具體實施例之用於執行多樣本防鋸齒(MSAA,Multi-Sample Anti-Aliased)體素化之技術。利用分析體素510-1內的每一取樣點610(例如610-1),決定取樣點610是在圖元520-1的前側635或後側630,來執行多樣本防鋸齒體素化。此分析結果可儲存在體素遮罩內,並且計算體素510-1的分數佔用及/或閉塞(例如體素510-1在一或多個方向內阻擋光線到哪個程度)值。例如,分數佔用可評 估當成幾何物件內部至圖元520-1所屬取樣點610的一小部分(例如圖元520-1後側630上取樣點610的分數)。閉塞值可由將該三維覆蓋(例如儲存在該體素遮罩內)投射到一或多個平面來評估,在計算分數佔用及/或閉塞值之後,這些值用於執行下游計算,例如照明、流體動態及碰撞偵測計算。以下關於第七A圖和第七B圖更詳細描述執行多樣本防鋸齒體素化的示範技術。
第七A圖為根據本發明之一具體實施例之用於執行多重樣本防鋸齒體素化之方法步驟的流程圖。雖然已經結合第一圖至第四圖的系統來描述該等方法步驟,不過精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統在本發明範疇內。
如所示,方法700從步驟710開始,在此幾何處理單元425決定一體素510-1與一或多個圖元520交叉。在步驟715,幾何處理單元425選擇與圖元510-1交叉的圖元520-1,如第六A圖和第六B圖所示。
其次,在步驟720,複數個取樣點610(例如610-1)分布在體素510-1內。除了第六A圖和第六B圖例示的該取樣點分布以外,將取樣點610分布在體素510-1內可包括在體素510-1的一或多個邊緣及/或彎角上的分布取樣點610。取樣點610可排列在規則晶格上,如此投射到該等三個主要平面(例如x、y和z平面)的每一者上,導致相同圖案,如第六A圖和第六B圖所例示。不過,本發明的具體實施例也考慮使用取樣點610的任何規則或不規則圖案或網格。
任意數量的取樣點610可分布在體素510-1內,取樣點610的數量可根據例如所要的細密度、精確度、處理工作負載等等。在一具體實施例中,取樣點610(例如4x4x4取樣點)可分布在體素510-1內,如此該體素的計算佔用量化為1/64。當將小型動畫物件體素化時,例如具有小、尖銳部位的物件,選擇太少數取樣點610會導致「鋸齒狀(Popping)」。另一方面,選擇太多取樣點610可能增加處理需求,超過想要的程度。
在步驟725,光柵器455(及/或片段處理單元460)分析每一取樣點610,以決定取樣點610是在圖元520-1的前側635或後側630。如上面所討論,一取樣點是在圖元520-1的前側635或後側630,可指出該取 樣點是在圖元520所屬幾何物件(例如三角形網狀)之外或內。此分析可使用許多技術來執行,以下描述兩種示範技術。
在第一技術,光柵器455(及/或片段處理單元460)針對一平面(或表面)方程評估每一取樣點610,以決定取樣點610是在該平面的前側635或後側630。該分析結果可儲存在一體素遮罩內,例如利用設定一遮罩位元給該平面後側630(或前側635)的每一取樣點610。根據圖元520-1頂點的座標及/或獲自於圖元520-1與體素510-1交叉之座標,該平面方程評估每一取樣點610,例如,利用將圖元520-1裁切成體素510-1來決定一已裁切平面620的方程,可獲取該平面方程。此外,針對已評估的每一取樣點610之該平面方程可為利用平均或聚集多重圖元520的交叉所計算的聚集面(或高維曲面)方程。
在用於分析取樣點610的第二技術中,圖元520-1投射到取樣點610的二維平面,並且光柵器455(及/或片段處理單元460)決定取樣點610的平面之覆蓋率。位於或有關該二維平面的取樣點610只包括分布在體素510-1內的取樣點610總數之一部分,例如,若4x4x4網格的取樣點610分布在體素510-1內,則取樣點的二維平面可包括取樣點610的4x4平面(即是16個取樣點)。決定取樣點610的平面覆蓋率之後,光柵器455執行每一已覆蓋取樣點之上及/或之下的欄取樣點610之深度測試,以決定每一取樣點610是在圖元520-1的前側635或後側630。對於每一未覆蓋取樣點610之上及/或之下的取樣點610之欄並不執行深度測試,以下參閱第七B圖例示此技術的一具體實施例。
第七B圖為根據本發明之一具體實施例之用於分析分布在一體素510內的取樣點610之方法步驟的流程圖。雖然已經結合第一圖至第四圖的系統來描述該等方法步驟,不過精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統在本發明範疇內。
如所示,方法702從步驟750開始,其中光柵器455(及/或片段處理單元460)選擇要在其上投射圖元520-1的一平面。為了將圖元520-1的投射面積最大化(例如增加正確計算用於圖元520-1所覆蓋所有樣本的覆蓋率之可能性),選取的平面可為垂直於圖元520-1的表面法線640之 主導軸之平面。該主導軸可為主要軸之一者(例如x、y或z軸)。在其他具體實施例中,其上投射圖元520-1的該平面可為與所要取樣點610數量交叉的平面,或具有方位可讓取樣點610的已知圖案或網格有效分析之平面。在步驟755,光柵器455將圖元520-1投射到該選取的平面。在步驟760,光柵器455決定該選取平面內或與之相關的圖元520-1針對每一取樣點610之投射覆蓋率。
其次,在步驟765,光柵器455選擇一已覆蓋的取樣點610,並且在步驟770,定義延伸在該已覆蓋取樣點610之上及/或之下的取樣點610之欄。然後在步驟775由光柵器455分析取樣點610的該欄內的每一取樣點610(例如利用深度測試),以決定取樣點610是在圖元520-1的前側635或後側630。在步驟780,光柵器455將該分析結果儲存在一體素遮罩內,例如利用設定要在圖元520-1的後側630(或前側635)決定的每一取樣點610的一位元。最終,在步驟785,光柵器455選擇另一已覆蓋取樣點610,若有必要,重複步驟765的該分析處理。
優點係,用於分析取樣點610的該第二技術可減少所分析的取樣點610之數量,例如,若光柵器455決定(在步驟760)一或多個取樣點610未被圖元520-1的投影所覆蓋,則在未覆蓋取樣點610之上及/或之下的取樣點610之該(等)欄上不會執行進一步分析。
在已經分析每一取樣點610之後,在步驟730進行結果是否先前已經儲存用於體素510-1之決定,例如,若一或多個其他圖元520與體素510-1交叉並且之前已經分析過,則先前已經儲存結果用於體素510-1。若無結果已經儲存用於體素510-1,則在步驟735將步驟725內計算的結果儲存在該體素遮罩內。若先前已經儲存結果用於體素510-1,則片段處理單元460(或光柵操作單元465)可使用布林運算子(例如OR、AND、NOT等等),將步驟725計算的該等結果與步驟737的該儲存結果結合,例如,若一位元已經設定用於在步驟725內決定的該等結果或是先前儲存在該體素遮罩內的該等結果之一取樣點610,則一位元可設定用於該已儲存體素遮罩內的取樣點610。在步驟740,若另一圖元520交叉體素510-1,則可在步驟715開始選擇與分析體素520,且在步驟737的組合該等結果與該體素遮 罩。
最終,在步驟745,一旦已經針對體素510-1計算並儲存覆蓋率(例如儲存在體素遮罩內),則片段處理單元460可使用該等結果,決定體素510-1的該(等)面所指向及/或體素510-1的該表面曲度之方向。例如當兩或多個圖元520的該等邊緣在一體素510內相遇時,可決定曲度。此外,覆蓋結果可用來決定體素510-1與圖元520交叉的分數(即是在圖元520的前側635或後側630上體素510-1的分數)及/或圖元520所屬幾何物件所佔用的體素510-1之分數(即是分數佔用)。在一具體實施例中,該體素的分數佔用可由已經設定在該體素遮罩內的位元之分數來決定。例如,若在體素510-1內分布64個取樣點,並且已經設定該體素遮罩內對應16個不同取樣點610的位元,然後該體素的該分數佔用為16/64或1/4。
片段處理單元460可進一步使用該體素遮罩來計算閉塞值(例如方向閉塞、周圍閉塞等等),例如,方向閉塞值可由將由該體素遮罩所指示的該三維覆蓋投射到一或多個平面上來計算。在一具體實施例中,該等覆蓋值可沿著該等三個主要軸投射到三個平面上,並且可儲存三個二維遮罩給體素510-1。然後可利用根據該等三個主要軸之每一者內的向量幅度內插該等二維遮罩,可計算一特定向量的方向閉塞。在其他具體實施例中,取代將步驟725內計算的該等結果儲存在一體素遮罩內,而是該等結果可儲存在三個二維遮罩內(例如用以提高記憶體效率)。二維遮罩可儲存用於該等三個主要軸的每一者。片段處理單元460可然後使用二維遮罩來計算閉塞值,如上述。
當每一體素510中的取樣點610數量較高,相較於一個三維遮罩,則儲存三個投射的二維遮罩可減少所需的記憶體總量。尤其是,儘管三維遮罩內的取樣點610數量隨取樣點610立方體解析度而增加,三個二維遮罩內的取樣點610數量則隨取樣點610平方解析度而成長。
第八A圖和第八B圖例示根據本發明之一具體實施例之使用表面方程執行體素化之技術。利用根據交叉體素510之一或多個圖元520(例如520-2)計算一表面方程,可執行此特定體素技術。該表面方程可利用累積平面方程來計算,例如利用集中與體素510交叉的每一圖元520之平 面係數。該表面方程可包括一平面方程(例如來字體素510內一參考點的一平均法線及一平均距離),或該表面方程可包括一較高階方程(例如二次曲面表面),以便更精準代表複數個交叉圖元520的特性(例如曲度)。一旦計算後,可使用該表面方程來計算體素510的分數佔用及/或閉塞值。以下關於第九圖更詳細描述使用表面方程執行體素化的示範技術。
第九圖為根據本發明之一具體實施例之使用表面方程執行體素化之方法步驟的流程圖。雖然已經結合第一圖至第四圖的系統來描述該等方法步驟,不過精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統在本發明範疇內。
如所示,方法900從步驟910開始,在此幾何處理單元425決定一體素510-2是否交叉一或多個圖元520。在步驟915,幾何處理單元425選擇交叉圖元510-2的圖元520-2,如第八A圖和第八B圖所示。其次,在步驟920,片段處理單元460計算由圖元520-2與體素510-2的交叉所定義的平面係數。交叉平面810的係數可關於體素510-2內參考點來定義,例如,交叉平面810的係數可關於體素510-2之彎角、邊緣或中心來定義。
在已經計算平面係數之後,在步驟925進行有關係數先前是否已經儲存用於體素510-2之決定,例如,若一或多個其他圖元520交叉體素510-2且先前已經分析過,則先前已經儲存用於體素510-2的係數。若無結果已經儲存用於體素510-2,則在步驟930將步驟920內計算的係數儲存用於體素510-2。若先前已經儲存係數用於體素510-2,則光柵器操作單元465可將步驟920內計算的係數與步驟935上儲存的係數結合,例如,結合該等係數可包括計算平均面係數或計算一高維曲面方程。
當大部分交叉圖元520具有約略相同的方位時,聚集面方程來計算一平均面方程提供體素510-2表面的精確呈現。不過,當交叉圖元520具有非常不同的方位時,計算平均面方程會提供不佳的基本幾何體近似值。因此,在這種情況下,可使用高維曲面呈現。在一具體實施例中,取代計算並儲存平均面方程,可使用三或更多係數計算二次曲面表面,例如,使用4x4對稱矩陣的10個係數,可儲存二次曲面表面。優點在於,從平面方程與線性組合可輕易獲得二次曲面矩陣。
除了儲存平均面(或表面)方程,片段處理單元460可計算與儲存體素510-2的曲度(例如平均曲度幅度),例如,隨著曲度的幅度增加,在後續著色操作當中,垂直於該平面方向之方向的不透明度會增加。曲度幅度可計算並儲存用於體素510-2的每一頂點,並且內插當成每一像素屬性。
在步驟940,若另一圖元520交叉體素510-2,則在步驟915開始選擇與分析體素520,如先前所描述,並且光柵器操作單元465可將該等結果係數與步驟935上的已儲存係數結合。
最後,在步驟945,一旦已經計算並儲存體素510-2的表面係數,則片段處理單元460可使用該等係數來決定體素510-2交叉圖元520的總量(例如分數)(即是在圖元520的前側635或後側630上體素510-2的總量)及/或圖元520所屬幾何物件所佔用的該體素總量(即是分數佔用)。
一種決定分數佔用的技術為執行一球體平面交叉,例如片段處理單元460可計算與該平均面交叉的球體半徑,其中該球體半徑代表從該平均面到該體素內參考點(例如該體素的中心)的距離。然後使用該半徑執行一維查尋,以評估體素510-2的該分數佔用,例如,可從體素510-2的中心到該平均面的表面來計算該球體半徑。此查表技術的計算需求較低,並且可補償立方體彎角效果,如此該已評估的分數佔用隨圖元520進入或離開體素510-2逐漸改變。此外,多表查尋值可內插(例如使用線性內插),以更精確評估佔用率。
另一種決定分數佔用的技術包括將該平均面與體素510-2交叉,並且計算該平均面上後側630之上體素510-2的體積(例如交叉圖元520所屬該(等)幾何物件內部體素510-2之體積)。另外,因為決定該平均面後側630上該體素510-2的精準體積要耗費較多計算資源,所以利用先評估具有低精準面的該平均面執行表查尋以決定分數佔用。
該等表面係數可進一步用來計算閉塞值(例如方向閉塞、周圍閉塞等等)。例如,片段處理單元460可利用裁切體素510-2的該平均面,並且將該已裁切面投射到一或多個平面,以計算方向閉塞值。在一具體實施例中,該裁切面可沿著該等三個主要軸投射到三個平面,並且可儲存該 結果二維遮罩給體素510-2。然後可利用根據該等三個主要軸每一者內的一已知向量的幅度將該等二維遮罩內插,可計算該向量的方向閉塞。另外,使用其他分析技術,利用在一或多個方向內取樣,及/或使用一查尋表和該平均面的一低精準評估,可評估方向閉塞。
第十A圖和第十B圖例示根據本發明的一具體實施例之使用標量欄以執行體素化之技術。此體素化技術可利用決定交叉體素510-3的每一圖元520之一或多個標量值來執行,每一標量值可由測量圖元520表面與體素510-3內的一參考點(例如取樣點1010-1、取樣點1010-2及取樣點1010-3)之間的距離來決定。然後該結果標量欄可用來決定體素510的分數佔用及/或閉塞值,例如,利用分析標量欄內一或多個標量值的幅度及/或符號,可決定分數佔用與閉塞值。以下關於第十一圖更詳細描述使用標量欄執行體素化的示範技術。
第十一圖為根據本發明之一具體實施例之使用標量欄以執行體素化之方法步驟的流程圖。雖然已經結合第一圖至第四圖的系統來描述該等方法步驟,不過精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統在本發明範疇內。
如所示,方法1100從步驟1110開始,在此幾何處理單元425決定一體素510-3是否交叉一或多個圖元520。在步驟1115,幾何處理單元425選擇交叉圖元510-3的圖元520-3,如第十A圖和第十B圖所示。在步驟1120,一或多個參考點(例如取樣點1010)分布在體素510-1內。將取樣點1010分布在體素510-3內可包括將取樣點1010分布在體素510-3的一或多個邊緣及/或彎角(例如頂點)、或體素510-3的中央。雖然第十A圖和第十B圖例示的取樣點1010排列在規格晶格內,不過可使用取樣點1010的任何規則或不規則圖案或網格。
根據例如想要的細密度、精確度、處理工作負載等等,任何數量的取樣點1010可分布在體素510-3內。在一具體實施例中,8個取樣點1010分布在體素510-3的彎角上。儲存用於這些取樣點的該等標量值可或不可在相鄰體素510之間共用(例如聚集)。在另一具體實施例中,單一取樣點1010可位於體素510-3的彎角或體素510-3的中心。在另一具體實施 例中,針對每一選取的圖元520,只分析位於交叉一圖元520的該(等)體素邊緣頂點處的取樣點1010。
其次,在步驟1125,片段處理單元460計算每一取樣點1010與圖元520-3的表面間之距離。圖元520-3表面上計算每一距離的該位置可代表取樣點1010與圖元520-3之間的最短距離。根據取樣點1010與圖元520-3表面之間的距離,可在步驟1130決定標量值,該標量值可與計算的距離成正比(或相等)。此外,根據體素510-3交叉圖元520的面積(例如交叉平面1020的面積),可加權該標量值。此外,根據對應的取樣點1010是在圖元520-3的前側635或後側630,可將一符號(即是正或負)指派給每一標量值。在第十A圖和第十B圖例示的具體實施例中,正標量值儲存用於要在圖元520的前側635上決定的取樣點1010(例如取樣點1010-2),並且負標量值儲存用於要在圖元520的後側630上決定的取樣點1010(例如取樣點1010-1)。此外,零值可指派給要在圖元520的平面中決定的每一取樣點1010(例如取樣點1010-3)。
利用相對於單一取樣點1010分析多個圖元520所計算之標量值可由光柵器操作單元465集中,標量值可使用指派給每一圖元520的面積加權來集中。在一具體實施例中,在已經針對圖元520計算一或多個標量值之後,在步驟1135上做出有關先前是否已經儲存標量值用於一或多個取樣點1010之決定。例如,若一或多個其他圖元520交叉體素510-3(或相鄰體素510)並且之前已經分析過,則可事先儲存標量值用於取樣點1010。若無結果已經儲存用於取樣點1010,則在步驟1140儲存於步驟1130決定的該(等)標量值。若先前已經儲存一或多個標量值用於取樣點1010,則在步驟1130內決定的該(等)標量值可與步驟1145內決定的該(等)已儲存標量值結合,例如利用加總該等標量值。在步驟1150,若另一圖元520交叉體素510-3,則可在步驟1115開始選擇與分析體素520,並且該(等)已決定標量值可與步驟1145的該(等)已儲存值結合。在儲存所計算得標量值之前,與體素510-3相關連的該等標量值可初始為小正(或負)值(例如1e-7),如此空白體素510不會出現在特定表面上(例如交叉圖元520)。
在步驟1155,一旦已經計算出標量欄(例如包括用於每一取 樣點1010的帶符號標量值),則片段處理單元460可使用該標量欄決定體素510-3交叉圖元520的分數(即是在圖元520的前側635或後側630上體素510-3的分數)及/或圖元520所屬幾何物件所佔用的體素510-3之分數(即是分數佔用)。片段處理單元460可進一步使用該標量欄來計算閉塞值(例如方向閉塞、周圍閉塞等等),在一具體實施例中,使用隱面、線、點等等,其上已經評估該標量值為零,決定用於體素510-3的分數佔用及閉塞值。然後測量、投射等等該零值表面(或零值線),來決定分數佔用與閉塞,如上面關於第八A圖至第九圖的表面方程技術所討論。例如,利用將該零值表面投射到一或多個平面可評估閉塞。此外,許多其他技術,其中某些可共用上面關於第五圖至第九圖所描述的該等技術之特性,可用來使用該標量欄決定佔用與閉塞值,如以下所述。
在一技術中,針對每一體素510,使用該等標量值的該等符號(例如指派至體素510彎角上取樣點1010得標量值之符號),評估具有低精準平面的體素510之該表面,來執行一表查尋。此技術可與該移動立方體演算法比較。然後可直接使用從該查尋表中取得的一或多個值來計算佔用與閉塞,不需要計算體素510的表面。
在另一技術當中,利用分析位於與一主要軸垂直的體素510-3一面的彎角上之該等標量值,評估沿著該主要軸的方向閉塞。然後一或多條零值線,沿著其該等標量值內插至零,然後可在該面上使用雙線性內插來計算。該等零值線可用來評估與該體素相關聯的該方向閉塞。例如,利用計算體素510-3的一面上所繪製該零值線之任一側的面積比率,可決定一方像閉塞值。在仍舊另一技術中,可加入與體素510相關聯的該等標量值,並且該等標量值的總和可用來決定一閉塞值。例如,零總和可表示該閉塞大約是0.5(或50%閉塞),一正總和表示該閉塞小於0.5,並且一負總和表示該閉塞大於0.5。該總和的幅度可進一步指示該閉塞高於或低於0.5的程度。
在仍舊其他具體實施例中,可決定用於每一體素510的一標量值,並且該標量值可直接映射至體素510的該佔用。將該標量值映射至 體素510的佔用可包括將該(等)標量值附加至[0,1,1-S]。例如,利用將該標量值1-S的倒數附加至範圍[0,1],可趨近該佔用。此技術在單一取樣點1010位於體素510中心上非常有用。
雖然第六A圖至第十一圖所描述的技術關於單一體素510(例如510-1、510-2、510-3)來描述,不過上述每一技術可套用來建構交叉任何數量體素510的幾何物件(例如圖元520的網狀)之體積呈現。
總結來說,揭示三種技術用來建構幾何物件的體素化呈現。用於執行體素化的多樣本防鋸齒技術將取樣點分布在一體素內、決定哪個圖元與該體素交叉,並且分析該交叉圖元以決定每一取樣點是在該幾何物件內或之外。利用反覆通過所有該等樣本並且針對一或多個三維平面方程評估每一樣本,如此可在三維內分析交叉圖元。另外,可在二維內決定每一交叉圖元的取樣點覆蓋率,接著對每一已覆蓋樣本之上及/或之下的樣本欄進行深度測試。然後將該結果體素遮罩投射至一或多個參考平面以決定閉塞值,或分析該體素遮罩來決定該體素由該幾何物件所佔用的分數。
此外,用來執行體素化的技術使用表面方程,計算與該體素交叉的每一圖元之一或多個表面係數(例如平面係數)。對應多個交叉圖元的多組平面係數集中,來計算用於體素510-2的平均面,然後使用二維平面方程或使用較高階二次曲面表面,來評估該平均面。然後使用該平均面,計算分數佔用及/或閉塞值。計算分數佔用可包括執行球體平面交叉,或使用低精準平面評估執行表查尋。此外,多表查尋值可內插(例如使用線性內插),以便更精確評估佔用率。利用將該平均面裁切至該體素,並且將該裁切面投射至一或多個參考平面,可計算閉塞值。
最後,用來執行體素化的技術使用標量欄,決定每一圖元與分布在該體素內一或多個參考點(例如取樣點)之間的距離。取樣點可分布在例如該體素的彎角上,並且/或單一取樣點可位於每一體素的中心上。帶符號得標量值儲存在一資料陣列內,用於取樣點與該圖元之間計算出來的每一距離。此外,記錄用於一已知取樣點的標量值集中用於與該體素交叉之多個圖元,然後利用分析記錄用於每一取樣點的該等標量值之該(等)符號與幅度,決定分數佔用及/或閉塞。
所揭示技術的一項優點在於可有效率地建構一幾何物件的體素化呈現,並且用來決定分數佔用及/或閉塞值。然後使用已決定的佔用及/或閉塞值來執行後續圖形操作或塑模計算,不用像傳統體素化方式導入許多人工與不準確性。此外,本說明書內描述的該等體素遮罩、表面方程及標量欄提供變化的精確度、精準度及處理工作負載等級,可選取並用於建構適用於各式各樣應用的幾何物件之體素化呈現。
本發明的一具體實施例可實施當成搭配電腦系統使用的程式產品。該程式產品的程式定義該等具體實施例(包括本說明書所述的方法)的功u-32515能,並且可包括在電腦可讀取儲存媒體上。例示的電腦可讀取儲存媒體包括但不受限於:(i)其上資訊永久儲存的不可抹寫儲存媒體(例如電腦內的唯讀記憶體裝置,例如CD-ROM光碟機可讀取的CD-ROM光碟、快閃記憶體、ROM晶片或任何一種固態非揮發性半導體記憶體);及(ii)上其儲存可變資訊的可抹寫儲存媒體(例如磁碟機或硬碟內的磁碟或任何一種固態隨機存取半導體記憶體)。
在此已經參考特定具體實施例說明本發明。不過精通此技術的人士將會了解,在不悖離申請專利範圍內揭示之本發明廣泛精神以及範疇下,可進行許多修改與變更。因此前述說明與圖式僅供參考而不做限制。
因此,本發明具體實施例的範疇公布於以下的申請專利範圍內。

Claims (10)

  1. 一種用於執行體素化之方法,包括:識別由具有一前側與一後側的一第一圖形圖元所交叉之一體素;選擇該體素內的複數個取樣點;針對該等複數個取樣點內含的每一取樣點,決定該取樣點是位於該第一圖形圖元的該前側,或位於該第一圖形圖元的該後側;及針對該等複數個取樣點內含的至少一第一取樣點,儲存一第一結果在一體素遮罩內,用以反應該一第一取樣點是否位於該第一圖形圖元的該前側或位於該第一圖形圖元的該後側。
  2. 如申請專利範圍第1項之方法,其中決定該取樣點是位於該第一圖形圖元的該前側或位於該第一圖形圖元的該後側,包括:將該第一圖形圖元投射到有關該等複數個取樣點內含取樣點子集的一平面上;根據該已投射的第一圖形圖元執行至少一覆蓋操作,以決定該取樣點子集內含的一或多個已覆蓋取樣點;及針對每一已覆蓋的取樣點:定義有關該已覆蓋的取樣點之一取樣點欄;及決定該取樣點欄內每一取樣點是否位於該第一圖形圖元的該前側,或位於該第一圖形圖元的該後側。
  3. 如申請專利範圍第2項之方法,其中該平面垂直於有關該第一圖形圖元之一法線的主導軸。
  4. 如申請專利範圍第1項之方法,其中決定該取樣點是位於該第一圖形圖元的該前側或位於該第一圖形圖元的該後側,包括:針對第一圖形圖元與該體素的交叉所定義的一平面方程,以評估該取樣點。
  5. 如申請專利範圍第1項之方法,更包括根據該體素遮罩,計算該體素有多少位於該第一圖形圖元的該後側。
  6. 如申請專利範圍第1項之方法,更包括:選擇位於該第一圖形圖元的該後側之一或多個取樣點;將該等一或多個取樣點投射至一第一平面,以計算一第一二維遮 罩;將該等一或多個取樣點投射至一第二平面,以計算一第二二維遮罩;及將該等一或多個取樣點投射至一第三平面,以計算一第三二維遮罩。
  7. 如申請專利範圍第6項之方法,更包括根據該第一二維遮罩、該第二二維遮罩、及該第三二維遮罩之兩或多者來執行一內插運算,以計算一方向閉塞。
  8. 如申請專利範圍第1項之方法,更包括:決定該體素是否由具有一前側與一後側的一第二圖形圖元交叉;選擇該體素內的該等複數個取樣點;針對該等複數個取樣點內含的每一取樣點,決定該取樣點是位於該第二圖形圖元的該前側,或位於該第二圖形圖元的該後側;及針對該等複數個取樣點內含的至少該第一取樣點,儲存一第二結果在該體素遮罩內,用以反應該第一取樣點是否位於該第二圖形圖元的該前側或位於該第二圖形圖元的該後側。
  9. 如申請專利範圍第8項之方法,其中將該第二結果儲存在該體素遮罩內包括:讀取該體素遮罩內儲存的該第一結果,該第一結果與該第二結果有關該第一取樣點;根據該第一結果與該第二結果產生一第三結果;及將該第三結果儲存在該體素遮罩內,其中該第三結果有關該第一取樣點。
  10. 一種計算裝置,其包括:一記憶體;及一圖形處理管線,其耦合至該記憶體且構成藉由下列執行體素化:識別由具有一前側與一後側的一第一圖形圖元所交叉之一體素;選擇該體素內的複數個取樣點;針對該等複數個取樣點內含的每一取樣點,決定該取樣點是否位於 該第一圖形圖元的該前側,或位於該第一圖形圖元的該後側;及針對該等複數個取樣點內含的至少一第一取樣點,將一第一結果儲存在一體素遮罩內,用以反應該第一取樣點是位於該第一圖形圖元的該前側或位於該第一圖形圖元的該後側。
TW102147982A 2013-03-14 2013-12-24 產生防鋸齒體素資料 TW201447813A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/830,106 US20140267264A1 (en) 2013-03-14 2013-03-14 Generating anti-aliased voxel data

Publications (1)

Publication Number Publication Date
TW201447813A true TW201447813A (zh) 2014-12-16

Family

ID=51503487

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102147982A TW201447813A (zh) 2013-03-14 2013-12-24 產生防鋸齒體素資料

Country Status (4)

Country Link
US (1) US20140267264A1 (zh)
CN (1) CN104050719A (zh)
DE (1) DE102013021044A1 (zh)
TW (1) TW201447813A (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9245376B2 (en) * 2013-05-14 2016-01-26 Roblox Corporation Lighting management in virtual worlds
US9715761B2 (en) * 2013-07-08 2017-07-25 Vangogh Imaging, Inc. Real-time 3D computer vision processing engine for object recognition, reconstruction, and analysis
US9984498B2 (en) * 2013-07-17 2018-05-29 Microsoft Technology Licensing, Llc Sparse GPU voxelization for 3D surface reconstruction
US9710960B2 (en) 2014-12-04 2017-07-18 Vangogh Imaging, Inc. Closed-form 3D model generation of non-rigid complex objects from incomplete and noisy scans
US11040450B2 (en) * 2017-02-07 2021-06-22 Veo Robotics, Inc. Dynamically determining and monitoring workspace safe zones using semantic representations of workpieces

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369739A (en) * 1993-07-09 1994-11-29 Silicon Graphics, Inc. Apparatus and method for generating point sample masks in a graphics display system
CN102842141B (zh) * 2012-07-03 2015-03-11 东南大学 一种旋转x射线造影图像迭代重建方法

Also Published As

Publication number Publication date
CN104050719A (zh) 2014-09-17
US20140267264A1 (en) 2014-09-18
DE102013021044A1 (de) 2014-10-02

Similar Documents

Publication Publication Date Title
US9947084B2 (en) Multiresolution consistent rasterization
US8786606B2 (en) Point containment for quadratic Bèzier strokes
TWI515716B (zh) 具備緩衝區限制處理的世界空間與螢幕空間管線間之圖元重新排序
US9495781B2 (en) Early sample evaluation during coarse rasterization
JP5371221B2 (ja) 粒子法シミュレーションのためのスライスデータ構造、およびスライスデータ構造を利用した粒子法シミュレーションのgpuへの実装方法
US20140267266A1 (en) Generating anti-aliased voxel data
CN106204712B (zh) 分段线性不规则光栅化
TWI645371B (zh) 在上游著色器內設定下游著色狀態
US9953455B2 (en) Handling post-Z coverage data in raster operations
US9245363B2 (en) System, method, and computer program product implementing an algorithm for performing thin voxelization of a three-dimensional model
US9153209B2 (en) Method and system for generating a displacement map from a normal map
TW201618041A (zh) 來自片段著色器程式之樣本遮罩的控制
US9530241B2 (en) Clipping of graphics primitives
US9558573B2 (en) Optimizing triangle topology for path rendering
US9905037B2 (en) System, method, and computer program product for rejecting small primitives
US20200043228A1 (en) System-generated stable barycentric coordinates and direct plane equation access
TW201447813A (zh) 產生防鋸齒體素資料
US7724254B1 (en) ISO-surface tesselation of a volumetric description
US20140267265A1 (en) Generating anti-aliased voxel data