TWI552113B - 舖磚延遲著色的系統、方法,及電腦程式產品 - Google Patents
舖磚延遲著色的系統、方法,及電腦程式產品 Download PDFInfo
- Publication number
- TWI552113B TWI552113B TW102140651A TW102140651A TWI552113B TW I552113 B TWI552113 B TW I552113B TW 102140651 A TW102140651 A TW 102140651A TW 102140651 A TW102140651 A TW 102140651A TW I552113 B TWI552113 B TW I552113B
- Authority
- TW
- Taiwan
- Prior art keywords
- photons
- screen space
- scene
- photon
- tiles
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Description
本申請案係主張於2012年12月21日提出申請的美國專利臨時申請案案號61/745,264之優先權,其整體內容係併入本文作為參考。
本發明係有關圖形處理,特別是有關在圖形處理之背景中的著色。
在圖形處理中,有效地顯現在即時應用程式(如視頻遊戲)之情境中被多個表面散射的光線是非常需要的。光子映射已知為針對離線顯像中之間接照明的一相容估算。光子映射不僅擅長取樣對許多其他顯像方法收斂緩慢的焦散路徑,也良好地估算低頻光滑且漫射的相互反射並意外地容易實施。
用於複雜場景之即時顯像的光子映射的許多變化已經被提出且甚至以互動率展示於有限的場景上。與此演算法的進展結合,GPUs現在已經足夠強大使得光子映射可用於即時顯像系統。然而,目前的挑戰為
在現代的GPU上維持品質同時有效率的縮放。
光子映射包含兩步驟:沿來自光源的射線追蹤光子並估計由於那些光子由可見表面散射所造成的輻射度(即「著色」)。有效的平行射線追蹤硬體及軟體系統每秒能夠追蹤數百萬射線且程序可攤銷在多個訊框。因此,現存系統符合光子追蹤所需的效能。這些系統的淨效能一般取決於有效光子著色。
因此,有需要解決這個問題及/或與現有技術相關的其他問題。
提供用於舖磚延遲著色的系統、方法,及電腦程式產品。操作上,識別關聯於至少一場景的複數個光子。此外,識別關聯於至少一場景的複數個螢幕空間舖磚。此外,識別能夠被複數個光子之每一者的一效果球體的投射所影響之複數個螢幕空間舖磚的每一者。此外,選擇關聯於螢幕空間舖磚之每一者之光子的至少一子集以從其中計算著色。再者,使用所選之光子的至少一子集計算至少一場景的著色。
100‧‧‧方法
200‧‧‧平行處理單元
202‧‧‧系統匯流排
204‧‧‧記憶體
205‧‧‧輸入/輸入單元
210‧‧‧主機介面單元
215‧‧‧任務管理單元
220‧‧‧工作分配單元
250‧‧‧串流多處理器
260‧‧‧交叉開關
265‧‧‧L2快取
280‧‧‧記憶體介面
305‧‧‧指令快取
310‧‧‧排程器單元
315‧‧‧分派單元
320‧‧‧暫存器檔案
350‧‧‧處理核心
351‧‧‧雙倍精度單元
352‧‧‧特殊功能單元
353‧‧‧載入/儲存單元
370‧‧‧共享記憶體
380‧‧‧互聯網路
390‧‧‧紋理單元/L1快取
400‧‧‧方法
450‧‧‧方法
500‧‧‧影像
510‧‧‧插入影像
600‧‧‧系統
601‧‧‧中央處理器
602‧‧‧通訊匯流排
604‧‧‧主記憶體
606‧‧‧圖形處理器
608‧‧‧顯示器
610‧‧‧次要儲存器
612‧‧‧輸入裝置
圖1描述根據一具體實施例之用以舖磚延遲著色之方法的流程圖;圖2描述根據一具體實施例之平行處理單元(PPU);圖3描述根據一具體實施例之圖2的串流多處理器;
圖4A描述根據另一具體實施例之用以舖磚延遲著色之方法的流程圖;圖4B描述根據另一具體實施例之用以舖磚延遲著色之方法的流程圖;圖5描述根據一具體實施例之使用一舖磚延遲著色實施而產生的影像;以及圖6描述前述各種具體實施例之各種架構及/或功能可實施於其中的範例性系統。
圖1描述根據一具體實施例之用以舖磚延遲著色之方法100的流程圖。如操作110所示,識別關聯於至少一場景的複數個光子。在一具體實施例中,關聯於至少一場景的複數個光子可關聯於一光子映射程序。舉例來說,光子可為包含沿來自一或多個光源的射線追蹤光子以及估計由於那些光子散射離開可見表面所造成的輻射度之一程序的部份。
此外,在操作120,識別關聯於至少一場景的複數個螢幕空間舖磚(tiles)。在一具體實施例中,關聯於至少一場景的複數個螢幕空間舖磚可包含關聯於場景的複數個畫素。舉例來說,螢幕空間舖磚可包含n x n的畫素陣列,其中n為大於一的整數。
如操作130所示,針對複數個光子的每一者,識別能夠被一效果球體的投射所影響之複數個螢幕空間舖磚的每一者。在本說明書的前後文中,光子的效果球體係指能夠影響與其相關聯之畫素及/或舖磚的影響
球體。在一具體實施例中,每一光子的複製可插入至(或關聯於等等)每一螢幕空間舖磚,其將包含該光子之效果球體的投射。在另一具體實施例中,每一光子的複製可放置於對應光子能夠影響之複數個螢幕空間舖磚的貯桶(buckets)中。在另一具體實施例中,對每一光子的一指標可插入至(或關聯於等等)能夠包含該光子之效果球體之投射的每一螢幕空間舖磚。在又一具體實施例中,每一光子的一複製、或一指標可插入至能夠包含光子之效果球體之投射的每一螢幕空間舖磚中。
此外,在一具體實施例中,可識別關聯於螢幕空間舖磚之光子的一或多個圖塊(chunks)供處理。舉例來說,在舖磚中有比符合在記憶體中更多光子的情況中,可實施多個通道經過舖磚,在每一通道中處理舖磚中的光子圖塊。此外,在一具體實施例中,可淘汰與關聯於複數個螢幕空間舖磚之一預定義深度範圍沒有相交之關聯於複數個螢幕空間舖磚的光子。舉例來說,在一具體實施例中,在將光子分類為舖磚的程序過程中,一舖磚演算法可作用以淘汰與一舖磚內場景的深度範圍沒有相交的光子。
如進一步所顯示,在操作140中,選擇關聯於螢幕空間舖磚之每一者之光子的至少一子集,從其中計算著色。在一具體實施例中,選擇關聯於螢幕空間舖磚之每一者之光子的至少一子集以從其中計算著色可包含對複數個螢幕空間舖磚之每一者中的所有畫素進行迭代。在另一具體實施例中,選擇關聯於螢幕空間舖磚之每一者之光子的至少一子集以從其中計算著色可包含對複數個螢幕空間舖磚之每一者中的所有畫素進行迭代並選擇在螢幕空間舖磚之每一者中之光子的至少一子集以從其中計算著色。
此外,在一具體實施例中,選擇關聯於螢幕空間舖磚之每一者之光子的至少一子集以從其中計算著色可包含選擇關聯於螢幕空間舖磚之每一者的所有光子(亦即,不僅是一子集等)。此外,在一具體實施例中,可使用一隨機程序以選擇關聯於螢幕空間舖磚之每一者之光子的至少一子集以從其中計算著色。舉例來說,在一具體實施例中,可在每一畫素獨立地隨機選擇光子的一子集。在另一具體實施例中,可使用一交錯程序以選擇關聯於螢幕空間舖磚之每一者之光子的至少一子集以從其中計算著色。
如操作150所示,使用所選的光子子集計算至少一場景的著色。在一具體實施例中,計算著色可包含在關聯於至少一場景的每一畫素重建平滑著色。此外,在一具體實施例中,計算著色可包含從鄰近畫素值在關聯於至少一場景的每一畫素重建平滑著色。
此外,在一具體實施例中,計算著色可包含利用一側向過濾器。然而,在各種具體實施例中,可使用任何數量之關於邊緣的過濾器以計算著色。此外,在一具體實施例中,方法100可包含顯像至少一場景。
將提出關於各種選擇性架構及特徵的更多描述性資訊,其中可根據使用者需求而實施或不實施前述架構。應特別注意,以下資訊僅用於描述目的而提出且不應以任何方式解釋為限制。任何以下的特徵可排除或不排除所述的其他特徵而選擇性地加入。
圖2根據一具體實施例描述一平行處理單元(PPU)200。雖然在本文中所描述的平行處理器為PPU 200的範例,但應特別注意到,此類處理器僅為了描述目的而提出,可使用任何處理器來補充及/或替代之。在一具體實施例中,PPU 200包含X個串流多處理器(SMs)250且組態以在二或多
個SMs 250(X)中同時地執行複數個執行緒。執行緒(即執行的線程)為在一特定SM 250內執行之一組指令的實例化。每一SM 250(將在下文中結合圖3作更詳細的描述)可包含但不限於一或多個處理核心、一或多個載入/儲存單元(LSUs)、階層一(L1)快取、共享記憶體等等。
在一具體實施例中,PPU 200包含輸入/輸入(I/O)單元205,其組態以經由系統匯流排202從中央處理單元(CPU)(圖未示)傳送及接收通訊(即指令、資料等)。I/O單元205可實施快速周邊組件互連(PCIe)介面以經由PCIe匯流排通訊。在其他具體實施例中,I/O單元205可實施其他種類的習知匯流排介面
PPU 200也包含主機介面單元210,其解碼命令並依照命令可能的指定將命令傳送到任務管理單元215或PPU 200的其他單元(如記憶體介面280)。在一具體實施例中,PPU 200包含U個記憶體介面280(U),其中每一記憶體介面280(U)係連接至一對應的記憶體裝置204(U)。主機介面單元210係組態以路由PPU 200之各個邏輯單元之間的通訊。
在一具體實施例中,編碼為命令流的程式係由CPU寫入一緩衝器。緩衝器為記憶體(如記憶體204或系統記憶體)中的一區域,其可由CPU及PPU 200兩者存取(即讀取/寫入)。CPU將命令流寫入緩衝器,並接著傳送指向命令流之開始的一指標到PPU 200。主機介面單元210提供對一或多個命令流的指標給任務管理單元(TMU)215。TMU 215選擇一或多個命令流並組態以將所選的命令流組織為待處理網格的一集中池。在一具體實施例中,執行緒區塊包含32個相關的執行緒且網格為執行相同命令流之一或多個執行緒區塊的一陣列,且不同的執行緒區塊可經由通用記憶體交換資
料。待處理網格的集中池可包含尚未被選擇供執行的新網格以及已經部份執行且已暫停的網格。
耦合於TMU 215及SMs 250之間的工作分配單元220係管理有效網格的一集中池,其選擇及分派有效網格供由SMs 250執行。當一待處理網格有資格執行時(即沒有未解決的資料相依性),待處理網格係由TMU 215轉移至有效網格集中池。當有效網格的執行由一相依性阻擋時,有效網格係轉移至待處理集中池。當網格的執行完成,網格將由工作分配單元220從有效網格集中池移除。除了從主機介面單元210及工作分配單元220接收網格,TMU 215也接收在網格的執行過程中由SMs 250所動態產生的網格。這些動態產生的網格係加入在待處理網格集中池中的其他待處理網格。
在一具體實施例中,CPU執行實施一應用程式介面(API)的一驅動器核心,其致能在CPU上執行的一或多個應用程式排程操作供於PPU 200上執行。應用程式可包含使驅動器核心產生一或多個網格供執行的指令(即API呼叫)。在一具體實施例中,PPU 200實施一SIMT(單一指令多執行緒)架構,其中在一網格中的每一執行緒區塊(即執行包)係由在執行緒區塊中的不同執行緒同時在一不同的資料組上執行。驅動器核心定義由k個相關執行緒所組成之執行緒區塊,使得在相同執行緒區塊中的執行緒可經由共享記憶體交換資料。
在一具體實施例中,PPU 200可包含15個不同的SMs 250。每一SM 250為多執行緒且組態以同時地執行來自一特定執行緒區塊的複數個執行緒(如32個執行緒)。SMs 250的每一者係經由交叉開關260(或其他類型的互連網路)連接至階層二(L2)快取265。L2快取265連接至一或多個記憶
體介面280。記憶體介面280實施16、32、64、128位元的資料匯流排(或類似者)供高速資料轉移。在一具體實施例中,PPU 200可連接高達6個記憶體裝置204,例如第五代圖形雙倍資料率同步動態隨機存取記憶體(GDDR5 SDRAM)。
在一具體實施例中,PPU 200實施一多階層記憶體架構。記憶體204係設置於晶片外耦合至PPU 200的SDRAM中。來自記憶體204的資料可被提取並儲存於L2快取265中,其係設置於晶片上且在各個SMs 250之間共享。在一具體實施例中,SMs 250的每一者也實施一L1快取。L1快取為專屬於特定SM 250的私用記憶體。L1快取的每一者係耦合至共享L2快取265。來自L2快取265的資料可被提取並儲存於每一L1快取中,供在SMs 250之功能性單元中處理。
在一具體實施例中,PPU 200包含一圖形處理單元(GPU)。PPU 200係組態以接收指定著色器程式用以處理圖形資料的命令。圖形資料可定義為一組基元,如點、線、三角形、四邊形、三角條紋等。一般來說,基元包含指定基元的頂點數目(如在模型空間座標系統)以及關聯於基元每一頂點的屬性之資料。PPU 200可組態以處理圖形基元以產生訊框緩衝器(即針對顯示器之每一畫素的畫素資料)。驅動器核心實施圖形處理管線,例如由OpenGL API所定義的圖形處理管線。
應用程式寫入針對一場景的模型資料(即頂點及屬性的彙集)至記憶體。模型資料定義在顯示器上可見的每一個物件。接著,應用程式做出對驅動器核心的API呼叫,其請求呈現及顯示模型資料。驅動器核心讀取模型資料並寫入命令至緩衝器以執行一或多個操作來處理模型資料。
命令可編碼不同的著色器程式,其包含一或多個頂點著色器、外殼著色器、幾何著色器、畫素著色器等。舉例來說,TMU 215可組態一或多個SMs 250以執行一頂點著色器程式,其處理由模型資料所定義的一些頂點。在一具體實施例中,TMU 215可組態不同的SMs 250以同時地執行不同的著色器程式。舉例來說,SMs 250的第一子集可組態以執行頂點著色器程式,而SMs 250的第二子集可組態以執行畫素著色器程式。SMs 250的第一子集處理頂點資料以產生處理過的頂點資料,並將處理過的頂點資料寫入至L2快取265及/或記憶體204。在處理過的頂點資料柵格化(即從三維資料轉換為在螢幕空間中的二維資料)以產生斷片資料後,SMs 250的第二子集執行一畫素著色器以產生處理過的斷片資料,其接著與其他處理過的斷片資料混合並寫入至記憶體204的訊框緩衝器中。頂點著色器程式及畫素著色器程式可同時地執行,以管線化的方式處理來自相同場景的不同資料,直到場景的所有模型已提供給訊框緩衝器。接著,訊框緩衝器的內容係傳送至顯示控制器供顯示於顯示裝置上。
PPU 200可包含於一桌上型電腦、膝上型電腦、平板電腦、智慧型手機(如無線手持裝置)、個人數位助理(PDA)、數位相機、手持電子裝置等。在一具體實施例中,PPU 200係包含於單一半導體基板上。在另一具體實施例中,PPU 200係與一或多個其他邏輯單元(如精簡指令集電腦(RISC)CPU、記憶體管理單元(MMU)、數位到類比轉換器(DAC)等)一起包含在一系統單晶片(SoC)中。
在一具體實施例中,PPU 200可包含於一顯示卡上,其包含一或多記憶體裝置204(如GDDR5 SDRAM)。顯示卡可組態以與在桌上型電
腦主機板(其包含例如北橋晶片組及南僑晶片組)上的PCIe插槽相接。在另一具體實施例中,PPU 200可為包含於主機板之晶片組(如北橋)中的整合圖形處理單元(iGPU)。
圖3根據一具體實施例描述圖2之串流多處理器250。如圖3所示,SM 250包含指令快取305、一或多個排程器單元310、暫存器檔案320、一或多個處理核心350、一或多個雙倍精度單元(DPUs)351、一或多個特殊功能單元(SFUs)352、一或多個載入/儲存單元(LSUs)353、互聯網路380、共享記憶體370、及一或多個紋理單元/L1快取390。
如前述,工作分配單元220係分派有效網格供在PPU 200之一或多個SMs 250上執行。排程器單元310從工作分配單元220接收網格並管理對每一有效網格之一或多個執行序區塊的指令排程。排程器單元310將執行緒排程,以供在平行執行緒的群組中執行,其中每一群組稱作一執行包。在一具體實施例中,每一執行包具有32個執行緒。排程器單元310可管理複數個不同的執行緒區塊,其在每一時脈循環過程中分配執行緒區塊到執行包供執行並接著排程來自複數個不同執行包的指令於各個功能性單元(即核心350、DPUs 351、SFUs 352、及LSUs 353)上。
在一具體實施例中,每一排程器單元310包含一或多個指令分派單元315。每一分派單元315係組態以傳送指令到一或多個功能性單元。在圖3所示的具體實施例中,排程器單元310包含兩個分派單元315,其在每一時脈循環過程中致能來自相同執行包的兩個不同指令被分派。在其他具體實施中,排程器單元310可包含單一分派單元315或額外的分派單元315。
每一SM 250包含一暫存器檔案320,其對SM 250的功能性單元提供一組暫存器。在一具體實施例中,暫存器檔案320係在每一功能性單元之間劃分,使得每一功能性單元被分配暫存器檔案320的專屬部份。在另一具體實施例中,暫存器檔案320係於由SM 250所執行的不同執行包之間劃分。暫存器檔案320提供暫時儲存給連接至功能性單元之資料路徑的運算元。
每一SM 250包含L個處理核心350。在一具體實施例中,SM 250包含大量的(如192等)不同處理核心350。每一核心350為全管線式單精度處理單元,其包含浮點算術邏輯單元及整數算術邏輯單元。在一具體實施例中,浮點算術邏輯單元執行浮點算術的IEEE 754-2008標準。每一SM 250也包含執行雙準度浮點算術的M個DPUs 351、執行特定功能(如複製矩形、畫素混合操作及類似者)的N個SFUs 352、以及經由J個紋理單元/L1快取390及互連網路380執行共享記憶體370與暫存器檔案320間之載入及儲存操作的P個LSUs 353。J個紋理單元/L1快取390可耦合於互連網路380與共享記憶體370之間且可也耦合至交叉開關260。在一具體實施例中,SM 250包含64個DPUs 351、32個SFUs 352、及32個LSUs 353。在另一具體實施例中,L1快取沒有包含在紋理單元內,而是包含在具有獨立的直接連接到交叉開關260的共享記憶體370內。
每一SM 250包含互連網路380,其連接每一功能性單元到暫存器檔案320以及經由互連網路380到共享記憶體370。在一具體實施例中,互連網路380為一交叉開關,其可組態以連接任何功能性單元到暫存器檔案320中的任何暫存器、到J個紋理單元/L1快取390的任一個、或共享記憶體370
中的記憶體位置。
在一具體實施例中,SM 250係實施於GPU內。在此一具體實施例中,SM 250包含J個紋理單元/L1快取390。紋理單元/L1快取390係組態以從記憶體204載入紋理地圖(即紋素(texels)的二維陣列)並取樣紋理地圖以產生取樣紋理數值供用於著色器程式。紋理單元/L1快取390執行紋理操作,例如使用mip-maps(即具有不同詳細程度的紋理地圖)的反雜訊操作。在一具體實施例中,SM 2 50包含16個紋理單元/L1快取390。在一具體實施例中,紋理單元/L1快取390可組態以從LSUs 353接收載入及儲存請求並聯合紋理存取以及載入及儲存請求以產生輸出至包含共享記憶體370之一記憶體系統的聯合記憶體操作。記憶體系統也可包含L2快取265、記憶體204及系統記憶體(圖未示)。
上述的PPU 200可組態以執行比傳統CPUs快很多的高度平行計算。平行計算在圖形處理、資料壓縮、生物統計、串流處理演算法、及類似者中具有優勢。
在一具體實施例中,前述系統可用以實施光子映射。光子映射包含發射光子、追蹤光子、及藉由估計光子密度而計算散射輻射(即著色等)。光子發射及追蹤步驟類似於路徑追蹤,其沿著傳送路徑產生一系列的散射點。追蹤係在每一散射點儲存入射光子於一光子地圖中。地圖之資料結構的選擇係取決於稍後所使用的著色演算法。
用於複雜場景之即時顯像的光子映射的許多變化已經被提出。與此演算的進展結合,GPUs現在已經足夠強大使得光子可用於即時顯像系統。
有效的平行射線追蹤硬體及軟體系統(如OptiX)每秒可追蹤數百萬射線且程序可攤銷在多個訊框。因此,現存系統符合光子追蹤所需的效能。淨效能係取決於有效光子著色。因此,可實施用於平行向量架構之光子著色的架構取向最佳化以增加光子收集的可伸縮性(例如用以達成在互動式應用程式中的膜質照明等等)且一般將促進GPUs上延遲著色的發展,其利用舖磚延遲光子收集實施。
圖4A描述根據另一具體實施例之用以舖磚延遲著色之方法400的流程圖。作為一選項,方法400可實施於先前圖式及/或後續圖式的背景中。然而,方法400當然可實施於任何所需的環境中。應注意到,前述定義可應用在本說明書中。
如操作410所示,每一光子的複製(或指標)係放置於包含其效果球體之投射的每一螢幕空間舖磚中。此外,如操作420所示,可對每一舖磚中的畫素進行迭代,且針對每一者,選擇舖磚中光子的一子集以從其中計算著色。此外,如操作430所示,可從鄰近畫素的數值在每一畫素重建平滑著色。
圖4B描述根據另一具體實施例之用以舖磚延遲著色之方法450的流程圖。作為一選項,方法450可實施於先前圖式及/或後續圖式的背景中。然而,方法450當然可實施於任何所需的環境中。應注意到,前述定義可應用在本說明書中。
如操作460所示,每一光子的複製(或指標)可放置於包含其效果球體之投射的每一螢幕空間舖磚中,且淘汰沒有與舖磚內場景的深度範圍相交的光子。此外,如操作470所示,可對圖塊中每一舖磚的畫素進行
迭代,並選擇舖磚中光子的一子集以從其中計算著色。此外,如操作480所示,可從鄰近畫素的數值在每一畫素重建平滑著色。
如此,在一具體實施例中,舖磚演算法可用以插入每一光子的複製於對應該光子能夠影響之螢幕空間舖磚的貯桶(buckets)中。這允許第二通道從符合電腦桌色器之共享記憶體內之光子的一共同子集著色一鋪磚內所有畫素。
在舖磚中有比符合在實施系統之記憶體中更多光子的情況中,可實施多個通道經過舖磚,在每一通道中處理舖磚中相當大的光子圖塊。在一具體實施例中,在將光子分類為舖磚的程序過程中,一舖磚演算法可作用以淘汰一舖磚內與場景的深度範圍沒有相交的光子。在具有高度深度變化的場景中,可能會啟動許多立即終止的著色執行緒,其降低了向量通道佔有率而無提供有用的計算。
表格1顯示根據一具體實施例之說明舖磚插入經過的範例程式碼。
在一具體實施例中,舖磚更分割為圖塊,其每一包含一彈回光子計數。每一光子消耗很少的記憶體,因此在一具體實施例中,光子可複製並直接嵌入圖塊中而不是使用指標。這也有效率地使用快取且致能聯合平行記憶體提取。
表格2顯示根據一具體實施例之說明舖磚收集的範例程式碼。
在一具體實施例中,可在每一畫素獨立地隨機選擇光子的一子集。這允許同時對空間及光子取樣,保持解析度。此外,針對在著色過程中的隨機取樣,作為一選項,可使用在每一畫素之統計上獨立的隨機數目。可使用合作的取樣方法,以藉由協調在鄰近畫素的樣本而大幅地增
加收斂性。在一具體實施例中,可使用更複雜的重建過濾器,以降低達到可接受收斂度所需的樣本數。
如表格2所示,step(x)係指幾何分佈的隨機數目產生器,其表示直到第一個成功(具有成功可能性1/x之一伯努利隨機變數)之試驗數量的樣本。在一具體實施例中,程序可包含當對光子陣列進行迭代以隨機平均取樣1/x光子時增量此數值。
圖5描述根據一具體實施例之使用一舖磚延遲著色實施而產生的影像500。選擇性地,影像500可在先前圖式及/或任何後續圖式的背景下觀看。然而,影像500當然可在任何所需環境的背景下觀看。亦應注意到,前述定義可應用在本說明書中。
影像500顯示一倉庫,其中小的縫隙產生了來自最右邊窗口之午後陽光的複雜、間接路徑。為了產生影像500,使用舖磚演算法以計算此場景來自追蹤光子的散射間接照明。僅具直接照明的插入影像510顯示了對此場景呈現間接光線的重要性,因為此影像是無法辨別的。
在各種具體實施例中,延遲舖磚演算法可實施為軟體(如CUDA實施等)或硬體。在一具體實施例中,舖磚演算法可使用光子追蹤的一輸出(如在OptiX中所計算等)並即時地收集到每一畫素上的相關光子。如前述,每一光子具有在3D中的位置及影響半徑等特性。
在一具體實施例中,舖磚演算法可組態以在三個階段中操作。在第一階段,每一光子的複製(或指標)可放置於包含其效果球體之投射的每一螢幕空間舖磚中。在第二階段,演算法可作用以對每一舖磚中的畫素進行迭代,且針對每一者,演算法可操作以選擇舖磚中光子的一子集,
從其中計算著色。在第三階段,可從鄰近畫素的數值在每一畫素重建平滑著色。
在各種具體實施例中,舖磚延遲著色演算法可組態以確保在向量/SIMD架構的同調執行、基於深度執行淘汰、以及實施組塊化(chunking)以在當不同舖磚具有不同數量的光子時處理比符合在共享記憶體內更多的光子並允許有效率的排程。
此外,在各種具體實施例中,至少部份的舖磚延遲著色演算法可直接實施於GPU中(如深度淘汰等)。作為另一選擇,舖磚延遲著色演算法可用於遊戲、數位內容產生(DCC)、及CAD應用程式中的即時顯像。此外,在一具體實施例中,舖磚延遲著色演算法可作用以大幅地增加光子收集的可伸縮性(例如用以達成在互動式應用程式中的膜質照明等等)。
圖6描述前述各種具體實施例之各種架構及/或功能可實施於其中的範例性系統600。如所示,系統600係提供為包含至少一中央處理器601,其連接至通訊匯流排602。通訊匯流排602可使用任何適合的協定來實施,如PCI(週邊組件互連)、PCI-Express、AGP(加速圖形連接埠)、超傳送標準(HyperTransport)、或其他任何匯流排或點對點通訊協定。系統600也包含主記憶體604。控制邏輯(軟體)及資料係儲存於主記憶體604中,其可採用隨機存取記憶體(RAM)的形式。
系統600也包含輸入裝置612、圖形處理器606、及顯示器608(即傳統的CRT(陰極射線管)、LCD(液晶顯示器)、LED(發光二極體)、電漿顯示器或類似者)。使用者輸入可從輸入裝置612接收,其例如為鍵盤、滑鼠、觸控板、麥克風及類似者。在一具體實施例中,圖形處理器606可包含
複數個著色器(shader)模組、柵格化(rasterization)模組等。前述模組之每一者甚至可放置於單一半導體平台上,以形成圖形處理單元(GPU)。
在本發明所說明的內容中,單一半導體平台可指稱單獨的個體半導體型積體電路或晶片。應注意,術語單一半導體平台亦可指具有增加之連接性的多晶片模組,其模擬晶片上操作且藉由利用傳統的中央處理單元(CPU)和匯流排實作而做出重大的改良。當然,各種模組亦可依使用者所需而分開放置或以半導體平台之各種組合放置。
系統600也可包含次要儲存器610。次要儲存器610包括例如硬式磁碟機及/或可移除式儲存驅動,其代表軟式磁碟機、磁帶機、光碟機、數位光碟(DVD)機、記錄裝置、通用序列匯流排(USB)快閃記憶體。可移除式儲存驅動以習知的方式讀取及/或寫入可移除式儲存單元。
電腦程式或電腦控制邏輯演算法可儲存於主記憶體604及/或次要儲存器610中。當執行這樣的電腦程式時,將致能系統600執行各種功能。舉例來說,組態以檢查一著色程式及致能或去能屬性緩衝器結合的編譯器程式可儲存於主記憶體604中。編譯器程式可由中央處理器601或圖形處理器606所執行。主記憶體604、儲存器610及/或任何其他儲存器為電腦可讀取媒體之可能範例。
在一具體實施例中,各種先前圖式之架構及/或功能可實施於中央處理器601、圖形處理器606、能勝任中央處理器601和圖形處理器606兩者之至少一部分能力的積體電路(未顯示)、晶片組(即設計以工作並銷售為用以執行相關功能之一單元的一積體電路群組等)、及/或與此有關的任何其他積體電路之背景中。
再者,各種先前圖式之架構和/或功能可實施於通用電腦系統、電路板系統、專用於娛樂用途的遊戲機系統、特定應用系統、及/或任何其他所需系統之背景中。舉例來說,系統600可具有桌上型電腦、膝上型電腦、伺服器、工作站、遊戲主機、嵌入式系統、及/或任何其他類型之邏輯的形式。此外,系統600可具有各種其他裝置之形式,其包括但不限於個人數位助理(PDA)裝置、行動電話裝置、電視等。
此外,雖未顯示,系統600可為了通信目地而耦合至網路(如電信網路、區域網路(LAN)、無線網路、廣域網路(WAN)(如網際網路)、點對點網路、電纜網路等)。
雖然上述已說明各種具體實施例,但應理解其僅藉由範例而非限制進行描述。因此,較佳具體實施例之廣度與範疇不應被任何上述例示性具體實施例限制,而應僅根據以下的申請專利範圍和其均等物所定義。
100‧‧‧方法
Claims (16)
- 一種方法,包含:識別關聯於至少一場景的複數個光子;識別關聯於該至少一場景的複數個螢幕空間舖磚(tiles);針對該等光子之每一者:(a)決定該複數個螢幕空間舖磚之何者會包含該光子之一效果球體之一投射;(b)儲存針對該光子之一複製或一指標於對應至該等已決定之螢幕空間舖磚之每一者的一貯桶(bucket)中;(c)針對該等螢幕空間舖磚之每一者,當該光子與該螢幕空間舖磚內該場景之一深度範圍沒有相交時,則淘汰該光子;其中,步驟(a)-(c)導致該等螢幕空間舖磚之每一者具有一或多個光子於其中的一對應貯桶;在執行針對該等光子之每一者的步驟(a)-(c)後,選擇在每一貯桶內的光子的至少一子集以從其中計算用於該對應螢幕空間舖磚的著色;以及藉由使用選自該對應貯桶的該一或多個光子來對於在每一螢幕空間舖磚內之畫素進行著色,以計算該至少一場景的著色。
- 如申請專利範圍第1項所述之方法,其中計算著色包含在關聯於該至少一場景的每一畫素重建平滑著色。
- 如申請專利範圍第1項所述之方法,其中計算著色包含從鄰近畫素值在關聯於該至少一場景的每一畫素重建平滑著色。
- 如申請專利範圍第1項所述之方法,其中計算著色包含利用一側向過濾器。
- 如申請專利範圍第1項所述之方法,其中選擇光子的至少一子集以從其中計算著色係包含對該複數個螢幕空間舖磚之每一者中的所有畫素進行迭代。
- 如申請專利範圍第1項所述之方法,其中選擇光子的至少一子集以從其中計算著色係包含對該複數個螢幕空間舖磚之每一者中的所有畫素進行迭代並選擇包含在該對應貯桶中之光子的至少一子集以從其中計算著色。
- 如申請專利範圍第1項所述之方法,其中選擇光子的至少一子集以從其中計算著色係包含選擇在每一貯桶內的所有光子。
- 如申請專利範圍第1項所述之方法,其中使用一隨機程序以選擇光子的至少一子集以從其中計算著色。
- 如申請專利範圍第1項所述之方法,其中使用一交錯程序以選擇光子的至少一子集以從其中計算著色。
- 如申請專利範圍第1項所述之方法,更包含儲存每一光子的一複製於對應至會包含該光子之該效果球體之該投射的一螢幕空間舖磚的每一貯桶中。
- 如申請專利範圍第1項所述之方法,更包含插入對每一光子的一指標於對應至會包含該光子之該效果球體之該投射的一螢幕空間舖磚的每一貯桶中。
- 如申請專利範圍第1項所述之方法,其中關聯於該至少一場景的該複數光子係關聯於一光子映射程序。
- 如申請專利範圍第1項所述之方法,更包含顯像該至少一場景。
- 一種儲存指令之非暫態電腦可讀儲存媒體,當該指令由一處理器所執行時將使該處理器執行以下步驟:識別關聯於至少一場景的複數個光子;識別關聯於該至少一場景的複數個螢幕空間舖磚;針對該等光子之每一者:(a)決定該複數個螢幕空間舖磚之何者會包含該光子之一效果球體之一投射; (b)儲存針對該光子之一複製或一指標於對應至該等已決定之螢幕空間舖磚之每一者的一貯桶中;(c)針對該等螢幕空間舖磚之每一者,當該光子與該螢幕空間舖磚內該場景之一深度範圍沒有相交時,則淘汰該光子;其中,步驟(a)-(c)導致該等螢幕空間舖磚之每一者具有一或多個光子於其中的一對應貯桶;在執行針對該等光子之每一者的步驟(a)-(c)後,選擇在每一貯桶內的光子的至少一子集以從其中計算用於該對應螢幕空間舖磚的著色;以及藉由使用選自該對應貯桶的該一或多個光子來對於在每一螢幕空間舖磚內之畫素進行著色,以計算該至少一場景的著色。
- 一種系統,包含:一記憶體系統;以及一或多個處理核心,耦合至該記憶體系統且其每一係組態以:識別關聯於至少一場景的複數個光子;識別關聯於該至少一場景的複數個螢幕空間舖磚;針對該等光子之每一者:(a)決定該複數個螢幕空間舖磚之何者會包含該光子之一效果球體之一投射;(b)儲存針對該光子之一複製或一指標於對應至該等已決定之螢幕空間舖磚之每一者的一貯桶中; (c)針對該等螢幕空間舖磚之每一者,當該光子與該螢幕空間舖磚內該場景之一深度範圍沒有相交時,則淘汰該光子;其中,步驟(a)-(c)導致該等螢幕空間舖磚之每一者具有一或多個光子於其中的一對應貯桶;在執行針對該等光子之每一者的步驟(a)-(c)後,選擇在每一貯桶內的光子的至少一子集以從其中計算用於該對應螢幕空間舖磚的著色;以及藉由使用選自該對應貯桶的該一或多個光子來對於在每一螢幕空間舖磚內之畫素進行著色,以計算該至少一場景的著色。
- 一種方法,包含:識別關聯於至少一場景的複數個光子;識別關聯於該至少一場景的複數個螢幕空間舖磚(tiles);識別能夠被該複數個光子之每一者的一效果球體的一投射所影響之該複數個螢幕空間舖磚的每一者;淘汰與關聯於該複數個螢幕空間舖磚之一預定義深度範圍沒有相交之關聯於該複數個螢幕空間舖磚的光子;選擇關聯於該螢幕空間舖磚之每一者之光子的至少一子集以從其中計算著色;以及使用該所選之光子的至少一子集計算該至少一場景的著色。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261745264P | 2012-12-21 | 2012-12-21 | |
US14/015,955 US9305324B2 (en) | 2012-12-21 | 2013-08-30 | System, method, and computer program product for tiled deferred shading |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201439987A TW201439987A (zh) | 2014-10-16 |
TWI552113B true TWI552113B (zh) | 2016-10-01 |
Family
ID=50974126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102140651A TWI552113B (zh) | 2012-12-21 | 2013-11-08 | 舖磚延遲著色的系統、方法,及電腦程式產品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9305324B2 (zh) |
CN (1) | CN103914804A (zh) |
TW (1) | TWI552113B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9607426B1 (en) | 2013-12-20 | 2017-03-28 | Imagination Technologies Limited | Asynchronous and concurrent ray tracing and rasterization rendering processes |
US9536342B2 (en) * | 2014-08-15 | 2017-01-03 | Intel Corporation | Automatic partitioning techniques for multi-phase pixel shading |
CN104392479B (zh) * | 2014-10-24 | 2017-05-10 | 无锡梵天信息技术股份有限公司 | 一种利用灯光索引号对像素进行光照着色的方法 |
US20180040155A1 (en) * | 2015-02-10 | 2018-02-08 | Thomson Licensing | Cache friendly jittered hemispherical sampling |
WO2018044193A1 (ru) * | 2016-08-31 | 2018-03-08 | Общество С Ограниченной Ответственностью "Сентилео" | Способ расчета четких каустик в компьютерной графике |
US10444817B2 (en) * | 2017-04-17 | 2019-10-15 | Intel Corporation | System, apparatus and method for increasing performance in a processor during a voltage ramp |
US11501139B2 (en) | 2017-05-03 | 2022-11-15 | Intel Corporation | Scaling half-precision floating point tensors for training deep neural networks |
US10504281B2 (en) | 2017-06-30 | 2019-12-10 | Microsoft Technology Licensing, Llc | Tracking pixel lineage in variable rate shading |
US10235799B2 (en) | 2017-06-30 | 2019-03-19 | Microsoft Technology Licensing, Llc | Variable rate deferred passes in graphics rendering |
KR102554419B1 (ko) | 2017-12-26 | 2023-07-11 | 삼성전자주식회사 | 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200620151A (en) * | 2004-04-27 | 2006-06-16 | Nvidia Corp | GPU rendering to system memory |
US20070046686A1 (en) * | 2002-11-19 | 2007-03-01 | Alexander Keller | Image synthesis methods and systems |
US20080079719A1 (en) * | 2006-09-29 | 2008-04-03 | Samsung Electronics Co., Ltd. | Method, medium, and system rendering 3D graphic objects |
US20100033482A1 (en) * | 2008-08-11 | 2010-02-11 | Interactive Relighting of Dynamic Refractive Objects | Interactive Relighting of Dynamic Refractive Objects |
US20100079452A1 (en) * | 2008-09-30 | 2010-04-01 | Microsoft Corporation | Photon mapping on graphics hardware using kd-trees |
US20110227921A1 (en) * | 2010-03-19 | 2011-09-22 | Jonathan Redshaw | Processing of 3D computer graphics data on multiple shading engines |
US20120038644A1 (en) * | 2009-02-17 | 2012-02-16 | Uws Ventures Ltd. | Rendering caustics in computer graphics with photon mapping by relaxation |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5251296A (en) | 1990-03-16 | 1993-10-05 | Hewlett-Packard Company | Methods and apparatus for generating arbitrarily addressed, arbitrarily shaped tiles in computer graphics systems |
CN104025181B (zh) * | 2011-12-30 | 2016-03-23 | 英特尔公司 | 用于去耦合采样的基于分类的块延迟着色体系结构 |
-
2013
- 2013-08-30 US US14/015,955 patent/US9305324B2/en active Active
- 2013-11-08 TW TW102140651A patent/TWI552113B/zh active
- 2013-12-20 CN CN201310714763.8A patent/CN103914804A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070046686A1 (en) * | 2002-11-19 | 2007-03-01 | Alexander Keller | Image synthesis methods and systems |
TW200620151A (en) * | 2004-04-27 | 2006-06-16 | Nvidia Corp | GPU rendering to system memory |
US20080079719A1 (en) * | 2006-09-29 | 2008-04-03 | Samsung Electronics Co., Ltd. | Method, medium, and system rendering 3D graphic objects |
US20100033482A1 (en) * | 2008-08-11 | 2010-02-11 | Interactive Relighting of Dynamic Refractive Objects | Interactive Relighting of Dynamic Refractive Objects |
US20100079452A1 (en) * | 2008-09-30 | 2010-04-01 | Microsoft Corporation | Photon mapping on graphics hardware using kd-trees |
US20120038644A1 (en) * | 2009-02-17 | 2012-02-16 | Uws Ventures Ltd. | Rendering caustics in computer graphics with photon mapping by relaxation |
US20110227921A1 (en) * | 2010-03-19 | 2011-09-22 | Jonathan Redshaw | Processing of 3D computer graphics data on multiple shading engines |
Also Published As
Publication number | Publication date |
---|---|
US20140176575A1 (en) | 2014-06-26 |
US9305324B2 (en) | 2016-04-05 |
CN103914804A (zh) | 2014-07-09 |
TW201439987A (zh) | 2014-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI552113B (zh) | 舖磚延遲著色的系統、方法,及電腦程式產品 | |
US10229529B2 (en) | System, method and computer program product for implementing anti-aliasing operations using a programmable sample pattern table | |
US9355483B2 (en) | Variable fragment shading with surface recasting | |
US9177413B2 (en) | Unique primitive identifier generation | |
US9547931B2 (en) | System, method, and computer program product for pre-filtered anti-aliasing with deferred shading | |
TWI512672B (zh) | 使用一取樣之多取樣表面處理的方法、電腦可讀儲存媒體及系統 | |
US10008034B2 (en) | System, method, and computer program product for computing indirect lighting in a cloud network | |
US9454843B2 (en) | Modulated and blended anti-aliasing | |
US10417817B2 (en) | Supersampling for spatially distributed and disjoined large-scale data | |
TWI514315B (zh) | 取樣階層式深度地圖的系統、方法,及電腦程式產品 | |
US9659399B2 (en) | System, method, and computer program product for passing attribute structures between shader stages in a graphics pipeline | |
US9230362B2 (en) | System, method, and computer program product for using compression with programmable sample locations | |
US9269179B2 (en) | System, method, and computer program product for generating primitive specific attributes | |
CN107392836B (zh) | 使用图形处理管线实现的立体多投影 | |
US20150179142A1 (en) | System, method, and computer program product for reduced-rate calculation of low-frequency pixel shader intermediate values | |
US9905037B2 (en) | System, method, and computer program product for rejecting small primitives | |
US9721381B2 (en) | System, method, and computer program product for discarding pixel samples | |
CN113393564B (zh) | 利用全局照明数据结构的基于水塘的时空重要性重采样 | |
CN112041894A (zh) | 渲染期间提高涉及水面的场景的真实感 | |
WO2015021440A1 (en) | System, method, and computer program product for simulating light transport | |
US9305388B2 (en) | Bit-count texture format | |
US9214008B2 (en) | Shader program attribute storage | |
US20150084952A1 (en) | System, method, and computer program product for rendering a screen-aligned rectangle primitive | |
TWI533672B (zh) | 使用取樣子集的多取樣表面處理 |