TW202147243A - 用於次序無關的遮擋計算的方法和裝置 - Google Patents
用於次序無關的遮擋計算的方法和裝置 Download PDFInfo
- Publication number
- TW202147243A TW202147243A TW110116372A TW110116372A TW202147243A TW 202147243 A TW202147243 A TW 202147243A TW 110116372 A TW110116372 A TW 110116372A TW 110116372 A TW110116372 A TW 110116372A TW 202147243 A TW202147243 A TW 202147243A
- Authority
- TW
- Taiwan
- Prior art keywords
- information
- visibility
- cell
- primitives
- occlusion
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
-
- 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/10—Geometric effects
- G06T15/20—Perspective computation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Image Generation (AREA)
Abstract
本案係關於用於圖形處理的方法和裝置。該裝置可以決定與場景中的視點相關聯的複數個基元之每一者基元的幾何資訊。該裝置亦可以基於針對複數個基元之每一者基元的幾何資訊來計算表面資訊和去遮擋資訊中的至少一者,其中表面資訊和去遮擋資訊可以與基於與視點相對應的觀看區域的體積網格相關聯。同樣,該裝置可以基於表面資訊和去遮擋資訊中的至少一者來計算針對複數個基元之每一者基元的可見性資訊,其中可見性資訊可以與體積網格相關聯。該裝置亦可以基於針對複數個基元之每一者基元的可見性資訊來決定複數個基元之每一者基元是否可見。
Description
本專利申請案主張於2020年6月5日提出申請的題為「METHODS AND APPARATUS FOR ORDER-INDEPENDENT OCCLUSION COMPUTATIONS」,序號為16/894,643的美國申請案的權益,該申請案的全部內容經由引用而被明確地併入本文。
本案大體而言係關於處理系統,並且更具體地係關於用於圖形處理的一或多個技術。
計算設備常常利用圖形處理單元(GPU)來加速對用於顯示的圖形資料的渲染。此類計算設備可以包括例如電腦工作站、諸如所謂的智慧型電話的行動電話、嵌入式系統、個人電腦、平板電腦和視訊遊戲控制台。GPU執行圖形處理流水線,圖形處理流水線包括一或多個處理階段,該一或多個處理階段一起操作以執行圖形處理命令並輸出訊框。中央處理單元(CPU)可以經由向GPU發出一或多個圖形處理命令來控制GPU的操作。現代的CPU典型地能夠同時執行多個應用程式,該多個應用程式中的每一個可能需要在執行期間利用GPU。提供用於顯示器上的視覺呈現的內容的設備通常包括GPU。
典型地,設備的GPU被配置為執行圖形處理流水線中的過程。然而,隨著無線通訊和較小的手持設備的出現,對改良的圖形處理的需求已然增加。
以下呈現了一或多個態樣的簡化概要,以便提供對此類態樣的基本理解。本概要不是所有預期態樣的廣泛概述,並且既不意欲標識所有態樣的關鍵元素,亦不意欲限定任何或所有態樣的範疇。其唯一目的是以簡化的形式呈現一或多個態樣的某些概念,作為稍後呈現的更詳細描述的序言。
在本案的態樣中,提供了方法、電腦可讀取媒體和裝置。裝置可以是中央處理單元(CPU)、圖形處理單元(GPU)、頂點著色器、片段著色器、計算著色器,或者能夠執行圖形處理的任何裝置。該裝置可以基於與場景中的視點相對應的觀看區域來產生體積網格,其中體積網格可以與對應於表面資訊的表面緩衝器、對應於去遮擋(disocclusion)資訊的去遮擋緩衝器,以及對應於可見性資訊的可見性緩衝器相關聯。該裝置亦可以產生包括複數個表面儲存格的表面緩衝器、包括複數個去遮擋儲存格的去遮擋緩衝器,以及包括複數個可見性儲存格的可見性緩衝器。該裝置亦可以決定與場景中的視點相關聯的複數個基元(primitive)之每一者基元的幾何資訊。而且,該裝置可以基於幾何資訊來標識針對複數個基元之每一者基元的一或多個表面片段和一或多個剪影(silhouette)邊緣中的至少一者。該裝置亦可以將針對複數個基元之每一者基元的幾何資訊轉換為表面資訊和去遮擋資訊中的至少一者。該裝置亦可以基於針對複數個基元之每一者基元的幾何資訊來計算表面資訊和去遮擋資訊中的至少一者,其中表面資訊和去遮擋資訊可以與基於與視點相對應的觀看區域的體積網格相關聯。同樣,該裝置可以基於表面資訊和去遮擋資訊中的至少一者來計算針對複數個基元之每一者基元的可見性資訊,其中可見性資訊可以與體積網格相關聯。該裝置亦可以將表面資訊儲存在表面緩衝器中,將去遮擋資訊儲存在去遮擋緩衝器中,並且將可見性資訊儲存在可見性緩衝器中。該裝置亦可以基於針對複數個基元之每一者基元的可見性資訊來決定複數個基元之每一者基元是否可見。另外,該裝置可以儲存針對被決定為可見的複數個基元之每一者基元的可見性資訊,其中該可見性資訊可以被儲存為潛在可見集(PVS)資訊。該裝置亦可以渲染包括被決定為可見的複數個基元之每一者基元的至少一個圖像。
在所附附圖以及下文的描述中闡述了本案的一或多個實例的細節。本案的其他的特徵、目標和優點將根據描述和附圖以及根據請求項而變得明顯。
可見性計算可以諸如經由修剪區(trim region)來對整個場景幾何進行排序(sort)。例如,可以在修剪區中在逐層的基礎上執行預排序。可以在物件上、在區段(bucket)中或者依照每片段鏈表(per-fragment linked list)來實現此類排序。可能需要多個通道(pass)來處理物件並對該等物件執行排序。基於此,排序過程可能成為圖形系統的瓶頸。結果,沿視線堆疊的遮擋的數量可能受到限制,或者可能需要更多的通道。為了決定在不久的將來何者物件可能是可見的,某些方法可以修剪掉當前可見的物件的邊界以便決定在該等物件之後何者物件可能是可見的。此未來的可見性可以基於相機或場景與物件的輕微移動。在某些例子中,修剪區(亦即,物件空間中的其中執行去遮擋的區)可以被儲存為在前平面和後平面之間具有固定距離的圖像空間擠壓(extrusion)。然而,修剪區深度亦可以是固定大小,此舉可能不夠高效到足以節省時間或記憶體。本案的態樣可以利用高效的辦法來決定可見性計算或潛在可見集(PVS)。例如,為了計算可見性計算,本案的態樣可以不需要對針對整個場景的幾何進行排序。本文中的某些辦法(例如,可見性體積辦法)可以直接使用在眼睛空間中定義的透視3D網格,而不是對修剪區的列表進行排序。此舉可以提供整個場景或延伸的視錐體(view frustum)的體積或幾何表示。例如,可以利用多個體積緩衝器(例如,三個3D體積緩衝器)來擷取體積。緩衝器之每一者條目可以利用單個位元,此舉可以使該辦法是記憶體高效的。
下文將參考所附附圖更全面地描述系統、裝置、電腦程式產品和方法的各個態樣。然而,本案可以以許多不同的形式來體現,並且不應被解釋為限於貫穿本案而呈現的任何特定結構或功能。確切而言,提供該等態樣以使得本案將是詳細和完整的,並且將本案的範疇完全傳達給熟習此項技術者。基於本文的教示,熟習此項技術者應當理解,本案的範疇意欲覆蓋本文所揭示的系統、裝置、電腦程式產品和方法的任何態樣,不管該等態樣是獨立於本案的其他態樣來實現還是結合本案的其他態樣來實現。例如,可使用任意數量的本文所陳述的態樣來實現裝置或實踐方法。此外,揭示的範疇意欲覆蓋使用作為本文闡述的揭示的各種態樣的附加或除了本文闡述的揭示的各種態樣之外的其他結構、功能性或者結構和功能性來實踐的裝置或方法。本文揭示的任何態樣可以由請求項的一或多個元素來體現。
儘管本文描述了各個態樣,但該等態樣的許多變體和置換落入本案的範疇內。儘管提到了本案的態樣的某些潛在益處和優點,但是本案的範疇不意欲限於特定益處、用途或目的。確切而言,本案的態樣意欲廣泛地適用於不同的無線技術、系統配置、網路和傳輸協定,其中的某些在附圖和以下描述中經由實例而被說明。詳細描述和附圖僅僅是說明本案而不是限制,本案的範疇由所附請求項及其均等物限定。
參考各種裝置和方法呈現了若干態樣。該等裝置和方法被描述於以下詳細描述中,並且經由各種方塊、元件、電路、過程、演算法等(統稱為「元素」)而被圖示於所附附圖中。可以使用電子硬體、電腦軟體或其任何組合來實現該等元素。此類元素被實現為硬體還是軟體取決於特定應用以及施加於整體系統的設計約束。
經由實例,元素或元素的任何部分或元素的任何組合可以被實現為包括一或多個處理器(其亦可以被稱為處理單元)的「處理系統」。處理器的實例包括微處理器、微控制器、圖形處理單元(GPU)、通用GPU(GPGPU)、中央處理單元(CPU)、應用處理器、數位信號處理器(DSP)、精簡指令集計算(RISC)處理器、晶片上系統(SoC)、基頻處理器、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)、可程式設計邏輯設備(PLD)、狀態機、閘控邏輯、離散硬體電路,以及被配置為執行貫穿本案描述的各種功能性的其他合適的硬體。處理系統中的一或多個處理器可以執行軟體。軟體應被廣泛地解釋為意指指令、指令集、代碼、程式碼片段、程式碼、程式、副程式、軟體元件、應用程式、軟體應用程式、套裝軟體、常式、子常式、物件、可執行檔案、執行執行緒、程序、函數等,無論是被稱為軟體、韌體、中間軟體、微碼、硬體描述語言還是其他。術語應用程式可以指軟體。如本文中所描述的,一或多個技術可以代表被配置為執行一或多個功能的應用程式,亦即軟體。在此類實例中,應用程式可以被儲存在記憶體上,例如,處理器的晶片上記憶體、系統記憶體或任何其他記憶體上。本文所描述的硬體(諸如處理器)可以被配置為執行應用程式。例如,應用程式可以被描述為包括在由硬體執行時使硬體執行本文所描述的一或多個技術的代碼。作為實例,硬體可以從記憶體存取碼並執行從記憶體存取的代碼,以執行本文描述的一或多個技術。在某些實例中,在本案中標識了元件。在此類實例中,元件可以是硬體、軟體或其組合。元件可以是單獨的元件或者單個元件的子元件。
相應地,在本文描述的一或多個實例中,所描述的功能可以以硬體、軟體或其任何組合來實現。若以軟體實現,則功能可以被儲存在電腦可讀取媒體上,或被編碼為電腦可讀取媒體上的一或多個指令或代碼。電腦可讀取媒體包括電腦儲存媒體。儲存媒體可以是可由電腦存取的任何可用媒體。經由實例而非限制,此類電腦可讀取媒體可以包括隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電子可抹除可程式設計ROM(EEPROM)、光碟儲存、磁碟儲存、其他磁儲存設備,上述類型的電腦可讀取媒體的組合,或者可被用於儲存可由電腦存取的指令或資料結構的形式的電腦可執行代碼的任何其他媒體。
通常,本案描述用於以下的技術:在單個設備或多個設備中具有圖形處理流水線,改良圖形內容的渲染,及/或減少處理單元(亦即,被配置為執行本文所描述的一或多個技術的任何處理單元,諸如GPU)的負載。例如,本案描述了用於利用圖形處理的任何設備中的圖形處理的技術。貫穿本案描述了其他示例性益處。
如本文所使用的,術語「內容」的例子可以指「圖形內容」、「圖像」,反之亦然。不管術語是被用作形容詞、名詞還是其他詞性,皆是如此。在某些實例中,如本文中所使用的,術語「圖形內容」可以指由圖形處理流水線的一或多個過程產生的內容。在某些實例中,如本文中所使用的,術語「圖形內容」可以指由被配置為執行圖形處理的處理單元產生的內容。在某些實例中,如本文所使用的,術語「圖形內容」可以指由圖形處理單元產生的內容。
在某些實例中,如本文中所使用的,術語「顯示內容」可以指由被配置為執行顯示處理的處理單元產生的內容。在某些實例中,如本文所使用的,術語「顯示內容」可以指由顯示處理單元產生的內容。圖形內容可以被處理以變成顯示內容。例如,圖形處理單元可以向緩衝器(其可以被稱為訊框緩衝器)輸出諸如訊框之類的圖形內容。顯示處理單元可以讀取圖形內容,諸如來自緩衝器的一或多個訊框,並且在其上執行一或多個顯示處理技術以產生顯示內容。例如,顯示處理單元可以被配置為對一或多個經渲染的層執行合成以產生訊框。作為另一實例,顯示處理單元可以被配置為將兩個或更多個層合成、混合或以其他方式組合在一起成為單個訊框。顯示處理單元可以被配置為對訊框執行縮放,例如,放大或縮小。在某些實例中,訊框可以指層。在其他實例中,訊框可以指已被混合在一起以形成訊框的兩個或更多個層,亦即,訊框包括兩個或更多個層,並且包括兩個或更多個層的訊框隨後可以被混合。
圖1是圖示被配置為實現本案的一或多個技術的示例性內容產生系統100的方塊圖。內容產生系統100包括設備104。設備104可以包括用於執行本文描述的各種功能的一或多個元件或電路。在某些實例中,設備104的一或多個元件可以是SOC的元件。設備104可以包括被配置為執行本案的一或多個技術的一或多個元件。在所示的實例中,設備104可以包括處理單元120、內容編碼器/解碼器122,以及系統記憶體124。在某些態樣,設備104可以包括多個可選元件,例如,通訊介面126、收發器132、接收器128、傳輸器130、顯示處理器127,以及一或多個顯示器131。對顯示器131的引用可以代表一或多個顯示器131。例如,顯示器131可以包括單個顯示器或多個顯示器。顯示器131可以包括第一顯示器和第二顯示器。第一顯示器可以是左眼顯示器,而第二顯示器可以是右眼顯示器。在某些實例中,第一顯示器和第二顯示器可以接收用於在其上呈現的不同訊框。在其他實例中,第一顯示器和第二顯示器可以接收用於在其上呈現的相同訊框。在進一步的實例中,圖形處理的結果可以不被顯示於設備上,例如,第一顯示器和第二顯示器可以不接收用於在其上呈現的任何訊框。相反,訊框或圖形處理結果可以被傳遞到另一設備。在某些態樣中,此舉可以被稱為分離渲染(split-rendering)。
處理單元120可以包括內部記憶體121。處理單元120可以被配置為執行諸如圖形處理流水線107中的圖形處理。內容編碼器/解碼器122可以包括內部記憶體123。在某些實例中,設備104可以包括諸如顯示處理器127之類的顯示處理器,以在由一或多個顯示器131呈現之前對由處理單元120產生的一或多個訊框執行一或多個顯示處理技術。顯示處理器127可以被配置為執行顯示處理。例如,顯示處理器127可以被配置為對由處理單元120產生的一或多個訊框執行一或多個顯示處理技術。一或多個顯示器131可以被配置為顯示或以其他方式呈現由顯示處理器127處理的訊框。在某些實例中,一或多個顯示器131可以包括以下中的一或多個:液晶顯示器(LCD)、電漿顯示器、有機發光二極體(OLED)顯示器、投影顯示設備、增強現實顯示設備、虛擬實境顯示設備、頭戴式顯示器或任何其他類型的顯示設備。
處理單元120和內容編碼器/解碼器122外部的記憶體(諸如系統記憶體124)可以由處理單元120和內容編碼器/解碼器122存取。例如,處理單元120和內容編碼器/解碼器122可以被配置為從諸如系統記憶體124之類的外部記憶體讀取及/或向其寫入。處理單元120和內容編碼器/解碼器122可以經由匯流排而通訊地耦合到系統記憶體124。在某些實例中,處理單元120和內容編碼器/解碼器122可以經由匯流排或不同的連接而彼此通訊地耦合。
內容編碼器/解碼器122可以被配置為從諸如系統記憶體124及/或通訊介面126之類的任何源接收圖形內容。系統記憶體124可以被配置為儲存所接收的經編碼或經解碼的圖形內容。內容編碼器/解碼器122可以被配置為以經編碼的圖元資料的形式例如從系統記憶體124及/或通訊介面126接收經編碼或經解碼的圖形內容。內容編碼器/解碼器122可以被配置為對任何圖形內容進行編碼或解碼。
內部記憶體121或系統記憶體124可以包括一或多個揮發性或非揮發性的記憶體或儲存設備。在某些實例中,內部記憶體121或系統記憶體124可以包括RAM、SRAM、DRAM、可抹除可程式設計ROM(EPROM)、電子可抹除可程式設計ROM(EEPROM)、快閃記憶體、磁性資料媒體或光學儲存媒體,或任何其他類型的記憶體。
根據某些實例,內部記憶體121或系統記憶體124可以是非暫時性儲存媒體。術語「非暫時性」可以指示儲存媒體沒有被體現於載波或傳播信號中。然而,術語「非暫時性」不應被解釋為意指內部記憶體121或系統記憶體124是不可移動的或者其內容是靜態的。作為一個實例,系統記憶體124可以從設備104被移除,並被移動至另一設備。作為另一實例,系統記憶體124可以是不可從設備104移除的。
處理單元120可以是中央處理單元(CPU)、圖形處理單元(GPU)、通用GPU(GPGPU)或可以被配置為執行圖形處理的任何其他處理單元。在某些實例中,處理單元120可以被整合到設備104的主機板中。在某些實例中,處理單元120可以存在於安裝在設備104的主機板中的埠中的圖形卡上,或者可以以其他方式被併入被配置為與設備104交互操作的周邊設備內。處理單元120可以包括一或多個處理器,諸如一或多個微處理器、GPU、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)、算術邏輯單位(ALU)、數位信號處理器(DSP)、離散邏輯、軟體、硬體、韌體、其他等同的整合或離散邏輯電路系統,或者其任何組合。若部分地以軟體來實現該等技術,處理單元120可以將用於軟體的指令儲存在合適的非暫時性電腦可讀取儲存媒體(例如,內部記憶體121)中,並且可以使用一或多個處理器在硬體中執行該等指令以執行本案的技術。前述項的任一個,包括硬體、軟體、硬體和軟體的組合等,可以被認為是一或多個處理器。
內容編碼器/解碼器122可以是被配置為執行內容解碼的任何處理單元。在某些實例中,內容編碼器/解碼器122可以被整合到設備104的主機板中。內容編碼器/解碼器122可以包括一或多個處理器,諸如一或多個微處理器、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)、算術邏輯單位(ALU)、數位信號處理器(DSP)、視訊處理器、離散邏輯、軟體、硬體、韌體、其他等同的整合或離散邏輯電路系統,或者其任何組合。若部分地以軟體來實現該等技術,內容編碼器/解碼器122可以將用於軟體的指令儲存在合適的非暫時性電腦可讀取儲存媒體(例如,內部記憶體123)中,並且可以使用一或多個處理器在硬體中執行該等指令以執行本案的技術。前述項的任一個,包括硬體、軟體、硬體和軟體的組合等,可以被認為是一或多個處理器。
在某些態樣中,內容產生系統100可以包括可選的通訊介面126。通訊介面126可以包括接收器128和傳輸器130。接收器128可以被配置為執行本文相對於設備104描述的任何接收功能。另外,接收器128可以被配置為從另一設備接收資訊(例如,眼睛或頭部定位資訊)、渲染命令或位置資訊。傳輸器130可以被配置為執行本文相對於設備104描述的任何傳輸功能。例如,傳輸器130可以被配置為向另一設備傳輸資訊,該資訊可以包括對內容的請求。接收器128和傳輸器130可以被組合成收發器132。在此類實例中,收發器132可以被配置為執行本文相對於設備104描述的任何接收功能及/或傳輸功能。
再次參考圖1,在某些態樣中,圖形處理流水線107可以包括決定元件198,決定元件198被配置為基於與場景中的視點相對應的觀看區域來產生體積網格,其中體積網格可以與對應於表面資訊的表面緩衝器、對應於去遮擋資訊的去遮擋緩衝器,以及對應於可見性資訊的可見性緩衝器相關聯。決定元件198亦可以被配置為產生包括複數個表面儲存格(cell)的表面緩衝器、包括複數個去遮擋儲存格的去遮擋緩衝器,以及包括複數個可見性儲存格的可見性緩衝器。決定元件198亦可以被配置為決定與場景中的視點相關聯的複數個基元(primitive)之每一者基元的幾何資訊。決定元件198亦可以被配置為基於幾何資訊來標識針對複數個基元之每一者基元的一或多個表面片段和一或多個剪影(silhouette)邊緣中的至少一者。決定元件198亦可以被配置為將針對複數個基元之每一者基元的幾何資訊轉換為表面資訊和去遮擋資訊中的至少一者。決定元件198亦可以被配置為基於針對複數個基元之每一者基元的幾何資訊來計算表面資訊和去遮擋資訊中的至少一者,其中表面資訊和去遮擋資訊可以與基於與視點相對應的觀看區域的體積網格相關聯。決定元件198亦可以被配置為基於表面資訊和去遮擋資訊中的至少一者來計算針對複數個基元之每一者基元的可見性資訊,其中可見性資訊可以與體積網格相關聯。決定元件198亦可以被配置為將表面資訊儲存在表面緩衝器中,將去遮擋資訊儲存在去遮擋緩衝器中,並且將可見性資訊儲存在可見性緩衝器中。決定元件198亦可以被配置為基於針對複數個基元之每一者基元的可見性資訊來決定複數個基元之每一者基元是否可見。決定元件198亦可以被配置為儲存針對被決定為可見的複數個基元之每一者基元的可見性資訊,其中該可見性資訊可以被儲存為潛在可見集(PVS)資訊。決定元件198亦可以被配置為渲染包括被決定為可見的複數個基元之每一者基元的至少一個圖像。
如本文中所描述的,諸如設備104之類的設備可以指被配置為執行本文中所描述的一或多個技術的任何設備、裝置或系統。例如,設備可以是伺服器、基地站、使用者設備、客戶端設備、站、存取點、電腦(例如,個人電腦、桌上型電腦、膝上型電腦、平板電腦、電腦工作站或大型電腦)、終端產品、裝置、電話、智慧型電話、伺服器、視訊遊戲平臺或控制台、手持設備(例如,可攜式視訊遊戲設備或個人數位助理(PDA))、可穿戴計算設備(例如,智慧手錶、增強現實設備或虛擬實境設備)、非可穿戴設備、顯示器或顯示裝置、電視、電視機上盒、中間網路設備、數位媒體播放機、視訊串流設備、內容串流設備、車載電腦、任何行動設備、被配置為產生圖形內容的任何設備,或者被配置為執行本文中所描述的一或多個技術的任何設備。本文中的過程可以被描述為由特定元件(例如,GPU)執行,但在進一步的實施例中,可以使用符合所揭示的實施例的其他元件(例如,CPU)來執行本文中的過程。
GPU可以處理GPU流水線中的多種類型的資料或資料封包。例如,在某些態樣中,GPU可以處理兩種類型的資料或資料封包,例如,上下文暫存器封包和繪製調用資料。上下文暫存器封包可以是全域狀態資訊(例如,關於全域暫存器的資訊)、著色程式或恆定資料的集合,其可以調節將如何處理圖形上下文。例如,上下文暫存器封包可以包括關於色彩格式的資訊。在上下文暫存器封包的某些態樣中,可以存在指示何者工作負載屬於上下文暫存器的位元。同樣,可以有多個功能或程式設計同時及/或並行地執行。例如,功能或程式設計可以描述特定操作,例如,色彩模式或色彩格式。相應地,上下文暫存器可以定義GPU的多個狀態。
上下文狀態可以被用於決定單獨的處理單元(例如,頂點取出器(vertex fetcher,VFD)、頂點著色器(VS)、著色器處理器或幾何處理器)如何起作用,及/或處理單元以何種模式起作用。為此,GPU可以使用上下文暫存器和程式設計資料。在某些態樣中,GPU可以基於模式或狀態的上下文暫存器定義而在流水線中產生工作負載,例如,頂點或圖元工作負載。某些處理單元(例如,VFD)可以使用該等狀態來決定某些功能,例如,如何組裝頂點。由於該等模式或狀態可以改變,因此GPU可以改變對應的上下文。另外,對應於模式或狀態的工作負載可以遵循改變的模式或狀態。
圖2圖示根據本案的一或多個技術的示例性GPU 200。如圖2中所示,GPU 200包括命令處理器(CP)210、繪製調用封包212、VFD 220、VS 222、頂點快取記憶體(VPC)224、三角形建立引擎(TSE)226、光柵化器(RAS)228、Z處理引擎(ZPE)230、圖元內插器(PI)232、片段著色器(FS)234、渲染後端(RB)236、L2快取記憶體(UCHE)238,以及系統記憶體240。儘管圖2顯示GPU 200包括處理單元220-238,但GPU 200可以包括多個附加的處理單元。另外,處理單元220-238僅僅是實例,並且根據本案,處理單元的任何組合或次序皆可以由GPU使用。GPU 200亦包括命令緩衝器250、上下文暫存器封包260和上下文狀態261。
如圖2中所示,GPU可以利用CP(例如,CP 210)或者硬體加速器來將命令緩衝器解析成上下文暫存器封包(例如,上下文暫存器封包260),及/或繪製調用資料封包(例如,繪製調用封包212)。CP 210隨後可以經由分開的路徑向GPU中的處理單元或區塊發送上下文暫存器封包260或繪製調用資料封包212。此外,命令緩衝器250可以交替上下文暫存器和和繪製調用的不同狀態。例如,可以按以下方式構造命令緩衝器:上下文N的上下文暫存器,上下文N的(一或多個)繪製調用,上下文N+1的上下文暫存器,以及上下文N+1的(一或多個)繪製調用。
GPU可以以各種不同的方式來渲染圖像。在某些例子中,GPU可以使用渲染或圖塊渲染(tiled rendering)來渲染圖像。在圖塊渲染GPU中,圖像可以被劃分或分割成不同的區段或圖塊。在圖像的劃分之後,每個區段或圖塊可以被單獨地渲染。圖塊渲染GPU可以將電腦圖形圖像劃分成網格格式,使得網格的每個部分(亦即,圖塊)被單獨渲染。在某些態樣中,在裝倉(binning)通道期間,圖像可以被劃分成不同的倉(bin)或圖塊。在某些態樣中,在裝倉通道期間,可見性串流可以被構造,其中可見的基元或繪製調用可以被標識。
在某些態樣中,GPU可以將繪製或渲染過程應用於不同的倉或圖塊。例如,GPU可以渲染到一個倉,並執行用於倉中的基元或圖元的所有繪製。在渲染到倉的過程期間,渲染目標可以位於GPU內部記憶體(GMEM)中。在某些例子中,在渲染到一個倉之後,渲染目標的內容可以被移動到系統記憶體,並且GMEM可以被釋放以用於渲染下一倉。另外,GPU可以渲染到另一倉,並且執行用於此倉中的基元或圖元的繪製。因此,在某些態樣中,可能存在少量的倉,例如,四個倉,該等倉覆蓋一個表面中的所有繪製。此外,GPU可以循環通過一個倉中的所有繪製,但執行針對可見的繪製調用(亦即,包括可見幾何形狀的繪製調用)的繪製。在某些態樣中,可見性串流可以例如在裝倉通道中被產生以決定圖像或場景之每一者基元的可見性資訊。例如,此可見性串流可以標識特定基元是否可見。在某些態樣中,此資訊可以例如在渲染通道中被用於移除不可見的基元。同樣,被標識為可見的基元中的至少某些基元可以在渲染通道中被渲染。
在圖塊渲染的某些態樣中,可以存在多個處理階段或通道。例如,渲染可以在兩個通道中被執行,例如,可見性或倉可見性通道以及渲染或倉渲染通道。在可見性通道期間,GPU可以輸入渲染工作負載,記錄基元或三角形的位置,並且隨後決定何者基元或三角形落入何者倉或區域中。在可見性通道的某些態樣中,GPU亦可以在可見性串流中標識或標記每個基元或三角形的可見性。在渲染通道期間,GPU可以輸入可見性串流並且一次處理一個倉或區域。在某些態樣中,可見性串流可以被分析以決定何者基元或者基元的頂點是可見的或不可見的。如此,可見的基元或者基元的頂點可以被處理。經由如此做,GPU可以減少處理或渲染不可見的基元或三角形的不必要工作負載。
在某些態樣中,在可見性通道期間,特定類型的基元幾何(例如,定位幾何)可以被處理。另外,取決於基元或三角形的定位或位置,基元可以被排序到不同的倉或區域中。在某些例子中,可以經由決定針對該等基元或三角形的可見性資訊來執行將基元或三角形排序到不同的倉中。例如,GPU可以決定或在例如系統記憶體中寫入每個倉或區域之每一者基元的可見性資訊。此可見性資訊可以被用於決定或產生可見性串流。在渲染通道中,每個倉中的基元可以被單獨渲染。在該等例子中,可以從記憶體取出可見性串流,用於丟棄對於該倉不可見的基元。
GPU或GPU架構的某些態樣可以提供用於渲染的多種不同選項,例如,軟體渲染和硬體渲染。在軟體渲染中,驅動器或CPU可以經由一次處理每個視圖來複製整個訊框幾何。另外,可以取決於視圖而改變某些不同的狀態。如此,在軟體渲染中,軟體可以經由改變某些狀態來複製整個工作負載,該等狀態可以被用於針對圖像之每一者視點進行渲染。在某些態樣中,由於GPU可能正針對圖像之每一者視點而多次提交相同的工作負載,所以管理負擔的量可能增加。在硬體渲染中,硬體或GPU可以負責複製或處理針對圖像之每一者視點的幾何。相應地,硬體可以管理針對圖像之每一者視點的基元或三角形的複製或處理。
圖3圖示圖像或表面300,包括劃分到多個倉中的多個基元。如圖3所示,圖像或表面300包括區域302,區域302包括基元321、322、323和324。基元321、322、323和324被劃分或放置到不同的倉中,例如,倉310、311、312、313、314和315。圖3圖示使用針對基元321-324的多個視點的圖塊渲染的實例。例如,基元321-324在第一視點350和第二視點351中。如此,GPU處理或渲染包括區域302的圖像或表面300可以利用多視點或多視圖渲染。
如本文所指示的,GPU或圖形處理器單元可以使用圖塊渲染架構來降低功耗或節省記憶體頻寬。如上文進一步陳述的,此渲染方法可以將場景劃分為多個倉,並且包括標識每個倉中可見的三角形的可見性通道。因此,在圖塊渲染中,全屏可以被劃分成多個倉或圖塊。隨後可以針對每個倉多次(例如,一次或多次)渲染該場景。
在圖形渲染的態樣中,某些圖形應用可以一次或多次地渲染到單個目標(亦即,渲染目標)。例如,在圖形渲染中,系統記憶體上的訊框緩衝器可以被更新多次。訊框緩衝器可以是記憶體或隨機存取記憶體(RAM)的部分(例如,包含位元映像或儲存),以幫助儲存用於GPU的顯示資料。訊框緩衝器亦可以是包含資料的完整訊框的記憶體緩衝器。另外,訊框緩衝器可以是邏輯緩衝器。在某些態樣中,更新訊框緩衝器可以在倉或圖塊渲染中被執行,其中如上文所論述的,表面被劃分成多個倉或圖塊,並且隨後每個倉或圖塊可以被單獨地渲染。此外,在圖塊渲染中,訊框緩衝器可以被分割成多個倉或圖塊。
如本文所指示的,在倉或圖塊渲染架構中,例如當從不同類型的記憶體進行渲染時,訊框緩衝器可能具有被重複地儲存或寫入到其中的資料。此舉可以被稱為求解和未求解(resolving and unresolving)訊框緩衝器或系統記憶體。例如,當儲存或寫入一個訊框緩衝器並且隨後切換到另一個訊框緩衝器時,訊框緩衝器上的資料或資訊可以被從GPU處的GPU內部記憶體(GMEM)分解到系統記憶體,亦即雙倍資料速率(DDR)RAM或動態RAM(DRAM)中的記憶體。
在某些態樣中,系統記憶體亦可以是晶片上系統(SoC)記憶體或另一基於晶片的記憶體,以儲存例如設備或智慧型電話上的資料或資訊。系統記憶體亦可以是由CPU及/或GPU共享的實體資料儲存。在某些態樣中,系統記憶體可以是例如設備或智慧型電話上的DRAM晶片。相應地,SoC記憶體可以是用於儲存資料的基於晶片的方式。
在某些態樣中,GMEM可以是GPU處的晶片上記憶體,其可以由靜態RAM(SRAM)來實現。另外,GMEM可以被儲存在設備(例如,智慧型電話)上。如本文所指示的,資料或資訊可以在例如設備處的系統記憶體或DRAM與GMEM之間被傳遞。在某些態樣中,系統記憶體或DRAM可以在CPU或GPU處。另外,資料可以被儲存在DDR或DRAM處。在倉或圖塊渲染中,記憶體的一小部分可以被儲存在GPU處,例如在GMEM處。在某些例子中,與在訊框緩衝器或系統記憶體處儲存資料相比,在GMEM處儲存資料可能利用更大的處理工作負載及/或功耗。
在某些態樣中,GPU可以執行曲面細分(Tessellation)或曲面細分過程。在曲面細分過程中,較大的基元可以被劃分成較小的子基元或曲面細分的基元。曲面細分可以將圖像劃分成更具細節的子基元或曲面細分的基元,此舉可以導致更具細節的渲染過程和更具細節的圖形內容。曲面細分器可以決定或產生子基元或曲面細分的基元。在某些態樣中,一或多個基元可以被分類到補片(patch)中。曲面細分器隨後可以根據一或多個曲面細分參數,例如使用三角形或矩形來決定或產生補片的基於幾何的曲面細分。
與基於基元的原始補片產生的圖像或表面相比,曲面細分過程可以允許決定或產生更具細節或更平滑的圖像或表面。另外,曲面細分可以被用於實現或渲染圖像中更具細節的表面。如前述,曲面細分過程可以產生子基元或曲面細分的基元。產生該等子基元或曲面細分的基元作為來自例如基於一或多個基元或補片的曲面細分的輸出。該等基元亦可以被稱為原始基元或規則基元,其是基於原始圖像或表面值而被產生的。所決定或產生的子基元或曲面細分的基元可以是原始基元或補片的更具細節版本。在某些例子中,子基元中的每一個可以小於基元或補片中的每一個。相應地,原始基元可以看起來是被劃分成子基元或曲面細分的基元。
圖4圖示根據本案的一或多個技術的示例性圖像或表面400。圖4圖示圖像400被劃分成多個倉,例如,倉410、倉420、倉430和倉440。同樣,圖4顯示了包括一或多個基元462的補片460。在某些態樣中,補片460可以被稱為基元的群組或者一或多個基元。圖4亦顯示複數個子基元470,其包括子基元472、子基元474和子基元476。如圖4所示,複數個子基元470中的單獨的子基元可以是多個不同的形狀,諸如矩形(例如,子基元476),或三角形(例如,子基元472、474)。
圖4顯示了前述曲面細分過程的實例。例如,原始或輸入基元(例如,補片460中的一或多個基元462)被顯示為以圓點作為頂點的較大三角形。從曲面細分過程輸出的子基元或曲面細分的基元(例如,子基元470)被顯示為表面400上的較小的矩形或三角形(例如,子基元472、474、476)。
對於串流渲染辦法,諸如客戶端-伺服器渲染,圖形處理系統可決定在小的相機移動下可以變得可見的三角形或基元的潛在可見集(PVS)。此資訊可以被發送至客戶端設備,使得客戶端可以具有可用於渲染的所有幾何。在某些態樣中,客戶端可以使用彼等三角形或基元來渲染針對經更新的頭部定位的新視圖。PVS的標識可以是高效的並且可能需要儘可能少的附加資訊,諸如以避免任何複雜的資料結構和排序物件。
為了決定在不久的將來何者物件可能是可見的,某些方法可以修剪掉當前可見的物件的邊界以便決定在該等物件之後何者物件可能是可見的(亦即,經由修剪區)。此未來的可見性可以基於相機或場景與物件的輕微移動。在某些態樣中,可見性計算可以諸如經由修剪區PVS來對整個場景幾何進行排序。例如,可以在修剪區PVS中在逐層的基礎上執行預排序。可以在物件上、在區段中或者依照每片段鏈表來實現此類排序。可能需要多個通道來處理物件並對該等物件執行排序。基於此,排序過程可能成為圖形系統的瓶頸。結果,沿視線堆疊的遮擋的數量可能受到限制,或者可能需要更多的通道。
在某些例子中,修剪區(亦即,物件空間中的其中執行去遮擋的區)可以被儲存為在前平面和後平面之間具有固定距離的圖像空間擠壓。因此,可以使用前平面和後平面來將修剪區儲存為表面資訊。相應地,當前需要利用高效的辦法來決定可見性計算或PVS,諸如在不需要對針對整個場景的幾何進行排序的情況下。
本案的態樣可以利用高效的辦法來決定可見性計算或PVS。例如,為了計算可見性計算,本案的態樣可以不需要對針對整個場景的幾何進行排序。本文中的某些辦法(例如,可見性體積辦法)可以直接使用在眼睛空間中定義的透視3D網格,而不是對修剪區的列表進行排序。此舉可以提供整個場景或延伸的視錐體的體積或幾何表示。例如,可以利用多個體積緩衝器(例如,三個3D體積緩衝器)來擷取體積。緩衝器之每一者條目可以利用單個位元,此舉可以使該辦法是記憶體高效的。
在某些態樣中,標識潛在可見集(PVS)可以在三個通道中完成,並且與場景中的物件或遮擋的數量無關。例如,兩個通道可以利用習知的光柵化,一個通道在螢幕空間中的體積緩衝器進行反覆運算,諸如延期的渲染通道或計算著色器通道,其中一個通道可以是經由體積緩衝器的高效的、硬體支援的傳播。同樣,體積緩衝器可以使得辦法是次序無關的,使得物件被提交到渲染處理器的次序是無關緊要的。不像可能依賴於前後排序的其他方法,本案的方法中的物件可以按任意次序被提交給圖形處理器。此類辦法的輸出可以是針對相機或場景移動的集合的潛在可見三角形的集合。
如先前所提及的,其他方法可以將大小相等的修剪區放置在物件空間中的任意位置處,使得所有修剪區在視圖或物件空間中可以具有與該等修剪區到相機的距離無關的相同深度。然而,修剪區的深度(亦即,沿背離視點的射線的長度)可以取決於距相機的距離。由於透視前縮(perspective foreshortening),較遠的物件可以用較粗糙的幾何來表示,並且因此其特徵可以覆蓋較大的深度間隔。而且,深度解析度可以隨著距離而減小,因此物件特徵可以進一步分離以便被辨別。本案的態樣可以用透視3D體積網格代替該等修剪區。
另外,本案的可見性體積辦法可以調整以適應與場景中的相機的距離。儲存格的深度可以隨著到相機或視點的距離z而非線性地增加,例如,將1/z用作z及/或log z中的修剪大小。此深度調整可以標識單獨的儲存格在緩衝器的每一個中可以具有的深度。本文的可見性體積辦法亦可以在圖像域(x-y)和深度域(z)中對空間進行量化。由於非線性的z間距,z方向上的網格儲存格的數量可以被合理地限制,例如,64、128或256個儲存格。此情形可以不同於前述的修剪區,其可以被自由地放置在物件空間中並且因此需要複雜的相交測試(intersection test)。
在某些例子中,使用3D量化,可見性儲存格可能在更接近相機或視點的網格的前方是小的和細細微性(fine-grained)的,亦即,其中大量的細節被呈現,因此可能需要較多的資訊位元;而在更遠離相機或視點的網格的後方是粗糙的和寬大的,亦即,其中幾何細節自然地減少,因此需要較少的位元。經由如此做,本案可以不利用深度維度中的很多資訊。同樣,因為對於緩衝器之每一者儲存格,可以利用單個位元,所以所利用的位元的量可以被減少。
圖5A和圖5B分別圖示根據本案的一或多個技術的包括觀看區域的示例性圖500和510。如圖5A中所示,圖500包括視點或相機502和觀看區域504。圖5A圖示用於遮擋和可見性計算的前述修剪區辦法。如圖5B中所示,圖510包括視點或相機512和觀看區域514。圖5B圖示用於次序無關的遮擋和可見性計算的本案的位元可見性體積辦法。
如圖5B所示,更接近相機512時儲存格可以具有減小的深度,而在更遠離相機512時可以具有增加的深度。此情形是因為更接近相機512的物件更具細節。更遠離相機512的物件可以包括更大的修剪區。本案可以標識剪影以決定幾何可以被修剪的位置。為了標記修剪,本案可以使用體積緩衝器,並在緩衝器的一個中指示潛在修剪體積。因此本案的態樣可以在緩衝器中標識修剪區,其可以標識在該物件之後何者物件可能是潛在可見的。同樣,圖5B可以由緩衝器中的多個位元(例如,6位元)來表示。
由於量化,本案的態樣可以利用具有單獨位元的密集(dense)可見性表示。如本文所指示的,本案可以使用三個緩衝器:表面緩衝器(S或s_緩衝器),去遮擋緩衝器(D或d_緩衝器)和可見性緩衝器(V或v_緩衝器)。該等緩衝器中的每一個可以為緩衝器中的每儲存格利用一位元。如此,在d_緩衝器中每儲存格可以有一位元來指示去遮擋,在s_緩衝器中每儲存格可以有一位元來指示表面,並且在v_緩衝器中每儲存格可以有一位元來指示可見性。因此,本案可以利用多個位元(例如,64位元或128位元)來表示三個緩衝器中的每一個。
表面緩衝器、去遮擋緩衝器和可見性緩衝器中的每一個亦可以對應於透視空間中的體積網格。該等體積網格可以用有限的位元來編碼,例如,網格中的每儲存格1位元。在某些態樣中,可見性在x-y空間中可以是細細微性的,而在z空間中可以是較粗細微性的。因此,本案可以在z空間中使用緊湊多位元表示而在x-y空間中使用全屏空間解析度,以及使用全屏寬度和高度的分數。例如,本案可以使用三個螢幕大小的緩衝器,每個具有128位元,亦即,四個無符號32位元整數。因此,對於每個圖元,本案可以儲存128位元值。如此,完整的體積表示可以對應於緩衝器中的針對每個視圖射線的128位元。
圖6A-圖6C分別圖示根據本案的一或多個技術的包括觀看區域和體積網格的示例性圖600、610和620。如圖6A所示,圖600包括視點或相機602、觀看區域604和體積網格606。如圖6B所示,圖610包括視點或相機612、觀看區域614和體積網格616。如圖6C所示,圖620包括視點或相機622、觀看區域624和體積網格626。體積網格606可以對應於表面緩衝器,體積網格616可以對應於去遮擋緩衝器,而體積網格626可以對應於可見性緩衝器。
本案的態樣可以利用可見性演算法,該可見性演算法可以包括前述的緩衝器和多個通道。如圖6A-圖6C所示,本案可以清除s_緩衝器和d_緩衝器,並將每個儲存格的位元值設置為0,以及將v_緩衝器之每一者儲存格的位元值設置為1。相應地,圖600和610分別包括表面緩衝器和去遮擋緩衝器中的針對每個儲存格的位元值零。同樣,圖620包括可見性緩衝器中的針對每個儲存格的位元值一。
在可見性演算法的第一通道中,本案可以執行剪影標識。本案可以一次計算整個場景幾何,忽略次序,並且偵測剪影或剪影邊緣。可以在去遮擋的片段處理中經由向d_緩衝器寫入來標記鄰近於剪影的面向前方的三角形。剪影可以是其中偵測到剪影邊緣的點,其可以對應於面向前方的三角形與面向後方的三角形相交的點。該等可以是本案可能尋求的以修剪物件邊緣的點,因為此物件之後的物件在將來可能是可見的。
所產生的表面片段可以被寫入到表面體積或s_緩衝器中。表面片段可以是當圖元的取樣指向相機時產生的正常片段,此情形可能意味著物件正在被渲染。因此,該等是由於典型的渲染而產生的片段。來自所標記的三角形的片段可以被寫入d_緩衝器。寫入可以意指使用逐位元操作、混合操作或邏輯原子操作來設置緩衝器中的位元。
圖7A-圖7C分別圖示根據本案的一或多個技術的包括觀看區域和體積網格的示例性圖700、710和720。如圖7A所示,圖700包括視點或相機702、觀看區域704和體積網格706。如圖7B所示,圖710包括視點或相機712、觀看區域714和體積網格716。如圖7C所示,圖720包括視點或相機722、觀看區域724和體積網格726。體積網格706可以對應於表面緩衝器,體積網格716可以對應於去遮擋緩衝器,而體積網格726可以對應於可見性緩衝器。
圖7A顯示了可以基於場景中的基元或物件來標識的多個表面片段708。該等表面片段708可以對應於體積網格706中的位置。如前述,表面片段708可以對應於表面緩衝器。同樣,圖7B顯示了可以基於場景中的基元或物件來標識的多個剪影邊緣718。該等剪影邊緣718可以對應於體積網格716中的位置。如前述,剪影邊緣718可以對應於去遮擋緩衝器。
圖8A-圖8C分別圖示根據本案的一或多個技術的包括觀看區域和體積網格的示例性圖800、810和820。如圖8A所示,圖800包括視點或相機802、觀看區域804和體積網格806。如圖8B所示,圖810包括視點或相機812、觀看區域814和體積網格816。如圖8C所示,圖820包括視點或相機822、觀看區域824和體積網格826。體積網格806可以對應於表面緩衝器,體積網格816可以對應於去遮擋緩衝器,而體積網格826可以對應於可見性緩衝器。
圖8A顯示了可以基於圖7A中的場景中的基元或物件來標識的多個表面片段808。表面片段808對應於體積網格806或s_緩衝器中的儲存格。同樣,圖8B顯示了可以基於圖7B中的場景中的基元或物件來標識的多個剪影邊緣818。剪影邊緣818對應於體積網格816或d_緩衝器中的儲存格。圖8A-圖8C圖示可以在對應緩衝器(例如,s_緩衝器、d_緩衝器和v_緩衝器)中產生的條目,其是基於實際物件的。如圖8C所示,v_緩衝器在此時可能尚未被標記。
在第二通道中,本案的態樣可以執行可見性傳播或可見性構造通道。此通道可以在三個緩衝器(例如,s_緩衝器、d_緩衝器和v_緩衝器)之間傳播可見性資訊。因此,可見性構造通道可以是例如經由螢幕大小的網格或計算著色器而針對每個x-y條目使用一個執行緒的情況。本案可以就距相機的深度而言從前往後移動,並且隨後向v_緩衝器寫入或傳播來自s_緩衝器和d_緩衝器的結果。
緩衝器之每一者儲存格或執行緒可以包括可見狀態和消耗狀態,例如,可見=1而消耗=0。當條目在s_緩衝器或d_緩衝器中被命中(hit)時,消耗值可以改變為1。若針對儲存格的可見值為0,使得對應於儲存格的基元或物件的部分不可見,則本案可以將從此點開始遠離相機或視點的可見性儲存格設置為1並且將去遮擋儲存格設置為0。
在某些態樣中,若可見值為1,使得對應於儲存格的基元或物件的部分是可見的,則本案可以基於多種情況來辨別儲存格值。例如,若s_緩衝器中的表面儲存格被設置(S=1)並且d_緩衝器中的去遮擋儲存格未被設置(D=0),則此情形可以意味著偵測到遮擋物(occluder)。在此種情況下,對於遠離相機或視點的剩餘儲存格,本案可以將可見值設置為0。因此,若存在未被修剪的表面,則該表面不能被看透,因此該表面後面的一切將被標記為不可見。
另外,若d_緩衝器中的去遮擋儲存格被設置(D=1),s_緩衝器中的表面儲存格被設置(S=1),並且用於視圖射線、執行緒或圖元的消耗儲存格未被設置(消耗=0),則去遮擋可能是有效的。在此種情況下,本案可以設置消耗=1,並且維持D=1的儲存格值。此情形可以是其中可能存在修剪的體積儲存格。當消耗標誌被設置為0時,此情形可以意味著演算法正在沿著視圖射線首次處理去遮擋。
同樣,若d_緩衝器中的去遮擋儲存格被設置(D=1),s_緩衝器中的表面儲存格被設置(S=1),並且用於視圖射線、執行緒或圖元的消耗儲存格被設置(消耗=1),則本案可以將去遮擋儲存格值設置為D=0,並且將下一儲存格標記為可見=0。因此,一旦消耗標誌被設置,則本案可以將遠離相機或視點的下一儲存格設置為0。此操作可以實現被遮擋物收縮(occludee shrinking)。而且,若對於儲存格將可見值設置為0,則對於遠離相機或視點的剩餘儲存格,本案可以將v_緩衝器中的可見性儲存格設置為0,並將d_緩衝器中的去遮擋儲存格設置為0。
圖9A-圖9C分別圖示根據本案的一或多個技術的包括觀看區域和體積網格的示例性圖900、910和920。如圖9A所示,圖900包括視點或相機902、觀看區域904和體積網格906。如圖9B所示,圖910包括視點或相機912、觀看區域914和體積網格916。如圖9C所示,圖920包括視點或相機922、觀看區域924和體積網格926。體積網格906可以對應於表面緩衝器,體積網格916可以對應於去遮擋緩衝器,而體積網格926可以對應於可見性緩衝器。
圖9A-圖9C顯示了在前述可見性演算法的第二通道之後的針對表面緩衝器的體積網格906、針對去遮擋緩衝器的體積網格916以及針對可見性緩衝器的體積網格926。如圖9A-圖9C所示,體積網格906、916和926中的每一行分別是遠離視點902、912和922的可見性的線。若儲存格後面的每個儲存格皆不可見,則本案可以針對該行的其餘部分而將v_緩衝器中的可見性儲存格設置為0,並跳過s_緩衝器和d_緩衝器。如圖9C中的體積網格926中所示,v_緩衝器中的灰色儲存格中的每一個可以被標記為可見,並且v_緩衝器中的白色儲存格中的每一個可以被標記為不可見。
在第三通道或最終的可見性通道中,可以第二次計算幾何資訊。在某些態樣中,若d_緩衝器或v_緩衝器儲存格是針對光柵化片段設置的,則對應的三角形可以是可見的。同樣,若v_緩衝器中的儲存格被設置為可見,則基元的對應部分可以被標識為可見並被添加到PVS或PVS資訊。
圖10A-圖10C分別圖示根據本案的一或多個技術的包括觀看區域和體積網格的示例性圖1000、1010和1020。如圖10A所示,圖1000包括視點或相機1002、觀看區域1004和體積網格1006。如圖10B所示,圖1010包括視點或相機1012、觀看區域1014和體積網格1016。如圖10C所示,圖1020包括視點或相機1022、觀看區域1024和體積網格1026。體積網格1006可以對應於表面緩衝器,體積網格1016可以對應於去遮擋緩衝器,而體積網格1026可以對應於可見性緩衝器。
圖10C顯示了可以基於圖9C中的可見性資訊來標識的多個可見頂點或可見片段1028以及不可見頂點1030。可見頂點1028和不可見頂點1030兩者皆可以對應於體積網格1026或v_緩衝器中的儲存格。在圖10C中,可見頂點1028是黑色的,而不可見頂點1030是白色的。如圖10C所示,對應於最接近視點1022的物件或基元的可見頂點1028可以被標識為可見並被添加到PVS。對應於最遠離視點1022的物件或基元的不可見頂點1030(其在最接近視點1022的物件之後)可以被標識為不可見,並且可能不被添加到PVS。如圖10A-圖10C所示,一旦完成來自緩衝器的資訊的傳播,則v_緩衝器可以被查詢,而s_緩衝器和d_緩衝器可以不再被查詢。
在某些態樣中,消耗標誌可以被用於揭示(reveal)單個去遮擋。如前述,消耗標誌可以對應於多個物件或基元的邊緣或剪影。因此,若物件邊緣在另一物件邊緣之後,則其後的任何東西皆不可能是可見的。此情形可以與被遮擋物收縮的過程相關聯。
本案的態樣亦可以包括可見性深度間隔。在該等例子中,去遮擋可能緊接著z中的下一量化步長之後或之前,並且因此不能沿z適當地傳播其資訊。在片段太接近量化步長的情況下,本案的態樣可以設置多個儲存格位元(當前的和之後的兩者)以包括該等儲存格位元。因此,此情形可以是將附近儲存格標識為去遮擋或可見的調整,例如,若儲存格接近另一可見儲存格,則將該儲存格位元值設置為1。
在某些態樣中,使用整個三角形來向d_緩衝器寫入可能是浪費的,因為可能需要圍繞剪影來寫入。相反,本案可以計算螢幕空間中的非剪影頂點到剪影的距離,並且將其他頂點的距離設置為0。光柵化器的屬性內插可以提供針對每個片段的距離。因此,距離小於或等於特定距離的片段可以向d_緩衝器寫入。某些方法中的去遮擋可能依賴於x-y中的量化和三角形大小。作為改良,本案可以選取x-y量化(亦即,緩衝器解析度或圖像解析度),以對應於所支援的相機移動。在某些態樣中,所產生的三角形可能太小而無法在第一通道中被取樣,並且從d_緩衝器丟失。本案的態樣可以包括針對此類行為的實現的多個替代方案。例如,本案可以在基元處理期間向多個緩衝器位置寫入,或者使用傳統光柵化來產生針對小三角形的片段並在片段處理期間寫入多個x-y取樣。同樣,本案可以圍繞擷取所支援的相機移動的剪影來產生幾何並且向d_緩衝器中寫入。
本案的態樣可以將s_緩衝器重用為v_緩衝器,並且因此可以利用兩個緩衝器而非三個緩衝器。另外,本文中的演算法可以在第二通道中使用高效的位元操作並且可以不利用循環。本案可以利用發現第一集(ffs)位元操作來發現d_緩衝器和s_緩衝器的第一組合,亦即:ffs(D&S),其中「&」是逐位元的「與(and)」。同樣,本案可以清除第一個發現的位元並執行相同的操作以考慮到消耗標誌。本案可以繼續進行ffs(S&!D)。使用位元移位,本案可以產生位元遮罩以自始至終地設置v_緩衝器和d_緩衝器,例如,每32或64位元字一次逐位元操作。本案可以使用v_緩衝器來用於最終通道中的早期z測試,亦即,將深度緩衝器值設置為不可見的第一儲存格。
任何基於表面的可見性辦法皆可能具有微小三角形(tiny triangle)(亦即,可能不產生任何圖元的、落在圖元之間的三角形)的問題。此舉可能導致該等三角形從PVS丟失。利用本文的可見性體積辦法,本案可以在最終渲染通道的幾何著色器或網狀著色器中驗證三角形的投影面積是否小於圖元。若是,則本案可以在三角形頂點或三角形中心處直接查詢v_緩衝器。若v_緩衝器被設置,則三角形可以被添加到PVS,亦即,將三角形標識為可見。
圖11圖示根據本案的一或多個技術的示例性圖1100。更具體地,圖1100包括用於本文描述的次序無關的遮擋計算的多個元件。如圖11所示,圖1100包括GPU 1110、頂點著色器1120、片段著色器1130和計算著色器1140。如本文所描述的,GPU 1110、頂點著色器1120、片段著色器1130和計算著色器1140可以執行多個不同的步驟或過程以在次序無關的遮擋計算中決定可見基元。
圖6A-圖11圖示用於次序無關的遮擋計算的前述過程的實例。如圖6A-圖11中所示,諸如本文中的GPU、頂點著色器、片段著色器和計算著色器(例如,GPU 1110、頂點著色器1120、片段著色器1130和計算著色器1140)之類的本案的態樣可以執行多個不同的步驟或過程以在次序無關的遮擋計算中決定可見基元。例如,本文中的GPU可以基於與場景中的視點(例如,視點602、612、622)相對應的觀看區域(例如,觀看區域604、614、624)來產生體積網格(例如,體積網格606、616、626)。在某些態樣中,體積網格可以與對應於表面資訊的表面緩衝器相關聯(例如,體積網格606),與對應於去遮擋資訊的去遮擋緩衝器相關聯(例如,體積網格616),以及與對應於可見性資訊的可見性緩衝器相關聯(例如,體積網格626)。
本文中的GPU亦可以產生包括複數個表面儲存格(例如,體積網格606中的儲存格)的表面緩衝器,包括複數個去遮擋儲存格(例如,體積網格616中的儲存格)的去遮擋緩衝器,以及包括複數個可見性儲存格(例如,體積網格626中的儲存格)的可見性緩衝器。本文中的GPU亦可以決定針對與場景中的視點(例如,視點702、712、722)相關聯的複數個基元之每一者基元的幾何資訊。
而且,本文中的GPU可以基於幾何資訊來標識針對複數個基元之每一者基元的一或多個表面片段(例如,表面片段708)和一或多個剪影邊緣(例如,剪影邊緣718)中的至少一者。在某些態樣,一或多個表面片段可以對應於表面資訊,例如體積網格806中的儲存格,而一或多個剪影邊緣可以對應於去遮擋資訊,例如體積網格816中的儲存格。本文中的GPU亦可以將針對複數個基元之每一者基元的幾何資訊轉換為表面資訊和去遮擋資訊中的至少一者。在某些例子中,可以基於域變換來轉換幾何資訊,其中體積網格可以對應於基於與視點相對應的觀看區域的透視空間。
本文中的GPU亦可以基於針對複數個基元之每一者基元的幾何資訊來計算表面資訊和去遮擋資訊中的至少一者,其中表面資訊和去遮擋資訊可以與基於與視點(例如,視點802和812)相對應的觀看區域(例如,觀看區域804和814)的體積網格(例如,體積網格806和816)相關聯。同樣,本文中的GPU可以基於表面資訊和去遮擋資訊中的至少一者來計算針對複數個基元之每一者基元的可見性資訊,其中可見性資訊可以與體積網格(例如,體積網格826)相關聯。
本文中的GPU亦可以將表面資訊儲存在例如對應於體積網格906的表面緩衝器中,將去遮擋資訊儲存在例如對應於體積網格916的去遮擋緩衝器中,將可見性資訊儲存在例如對應於體積網格926的可見性緩衝器中。在某些態樣中,針對複數個表面儲存格之每一者表面儲存格的位元值可以被設置為零(0),針對複數個去遮擋儲存格之每一者去遮擋儲存格的位元值可以被設置為零(0),並且針對複數個可見性儲存格之每一者可見性儲存格的位元值可以被設置為一(1)。同樣,針對複數個表面儲存格之每一者表面儲存格的位元值在該表面儲存格不包括表面資訊時可以為零(0),並且針對複數個去遮擋儲存格之每一者去遮擋儲存格的位元值在該去遮擋儲存格不包括去遮擋資訊時可以為零(0)。
在某些態樣中,當可見性儲存格被標記為可見時,針對每個可見性儲存格的位元值可以是一(1),而當可見性儲存格被標記為不可見時,針對每個可見性儲存格的位元值可以是零(0)。另外,在針對至少一個對應的表面儲存格的位元值是零(0)時,針對每個可見性儲存格的位元值可以是一(1),該至少一個對應的表面儲存格比該可見性儲存格更接近視點並且與該可見性儲存格在體積網格的相同行中。在某些例子中,在針對至少一個對應的表面儲存格的位元值是一(1)時,針對每個可見性儲存格的位元值可以是零(0),該至少一個對應的表面儲存格比該可見性儲存格更接近視點並且與該可見性儲存格在體積網格的相同行中。同樣,在針對對應的去遮擋儲存格的位元值是一(1)時,針對每個可見性儲存格的位元值可以是一(1)。
本文中的GPU亦可以基於針對複數個基元之每一者基元的可見性資訊來決定複數個基元之每一者基元是否可見。另外,本文中的GPU可以儲存針對被決定為可見的複數個基元之每一者基元的可見性資訊(例如,對應於體積網格1026),其中該可見性資訊可以被儲存為潛在可見集(PVS)資訊。本文中的GPU亦可以渲染包括被決定為可見的複數個基元之每一者基元的至少一個圖像。
在某些態樣中,觀看區域(例如,觀看區域1004)可以由來自視點(例如,視點1002)的第一觀看射線和第二觀看射線來定義,其中第一觀看射線和第二觀看射線各自對應於體積網格(例如,體積網格1006)的邊緣。而且,複數個基元之每一者基元可以由頂點著色器(例如,頂點著色器1120)或片段著色器(例如,片段著色器1130)決定為可見。同樣,針對複數個基元之每一者基元的可見性資訊可以由計算著色器(例如,計算著色器1140)來計算。
圖12圖示根據本案的一或多個技術的示例性方法的流程圖1200。該方法可以由裝置(諸如GPU、CPU、頂點著色器、片段著色器、計算著色器或用於圖形處理的裝置)執行。在1202處,如結合圖5A-圖11中的實例所描述的,裝置可以基於與場景中的視點相對應的觀看區域來產生體積網格。在某些態樣中,如結合圖5A-圖11中的實例所描述的,體積網格可以與對應於表面資訊的表面緩衝器、對應於去遮擋資訊的去遮擋緩衝器,以及對應於可見性資訊的可見性緩衝器相關聯。
在1204處,如結合圖5A-圖11中的實例所描述的,裝置亦可以產生包括複數個表面儲存格的表面緩衝器、包括複數個去遮擋儲存格的去遮擋緩衝器,以及包括複數個可見性儲存格的可見性緩衝器。在1206處,如結合圖5A-圖11中的實例所描述的,裝置可以決定與場景中的視點相關聯的複數個基元之每一者基元的幾何資訊。
在1208處,如結合圖5A-圖11中的實例所描述的,裝置可以基於幾何資訊來標識針對複數個基元之每一者基元的一或多個表面片段和一或多個剪影邊緣中的至少一者。在某些態樣中,如結合圖5A-圖11中的實例所描述的,一或多個表面片段可以對應於表面資訊,而一或多個剪影邊緣可以對應於去遮擋資訊。
在1210處,如結合圖5A-圖11中的實例所描述的,裝置可以將針對複數個基元之每一者基元的幾何資訊轉換為表面資訊和去遮擋資訊中的至少一者。在某些例子中,如結合圖5A-圖11中的實例所描述的,可以基於域變換來轉換幾何資訊,其中體積網格可以對應於基於與視點相對應的觀看區域的透視空間。
在1212處,如結合圖5A-圖11中的實例所描述的,裝置亦可以基於針對複數個基元之每一者基元的幾何資訊來計算表面資訊和去遮擋資訊中的至少一者,其中表面資訊和去遮擋資訊可以與基於與視點相對應的觀看區域的體積網格相關聯。在1214處,如結合圖5A-圖11中的實例所描述的,裝置可以基於表面資訊和去遮擋資訊中的至少一者來計算針對複數個基元之每一者基元的可見性資訊,其中可見性資訊可以與體積網格相關聯。
在1216處,如結合圖5A-圖11中的實例所描述的,裝置可以將表面資訊儲存在表面緩衝器中,將去遮擋資訊儲存在去遮擋緩衝器中,並且將可見性資訊儲存在可見性緩衝器中。在某些態樣中,如結合圖5A-圖11中的實例所描述的,針對複數個表面儲存格之每一者表面儲存格的位元值可以被設置為零(0),針對複數個去遮擋儲存格之每一者去遮擋儲存格的位元值可以被設置為零(0),並且針對複數個可見性儲存格之每一者可見性儲存格的位元值可以被設置為一(1)。同樣,如結合圖5A-圖11中的實例所描述的,針對複數個表面儲存格之每一者表面儲存格的位元值在該表面儲存格不包括表面資訊時可以為零(0),並且針對複數個去遮擋儲存格之每一者去遮擋儲存格的位元值在該去遮擋儲存格不包括去遮擋資訊時可以為零(0)。
在某些態樣中,如結合圖5A-圖11中的實例所描述的,當可見性儲存格被標記為可見時,針對每個可見性儲存格的位元值可以是一(1),而當可見性儲存格被標記為不可見時,針對每個可見性儲存格的位元值可以是零(0)。另外,如結合圖5A-圖11中的實例所描述的,針對每個可見性儲存格的位元值在針對至少一個對應的表面儲存格的位元值是零(0)時可以是一(1),該至少一個對應的表面儲存格比該可見性儲存格更接近視點並且與該可見性儲存格在體積網格的相同行中。在某些例子中,如結合圖5A-圖11中的實例所描述的,針對每個可見性儲存格的位元值在針對至少一個對應的表面儲存格的位元值是一(1)時可以是零(0),該至少一個對應的表面儲存格比該可見性儲存格更接近視點並且與該可見性儲存格在體積網格的相同行中。同樣,如結合圖5A-圖11中的實例所描述的,針對每個可見性儲存格的位元值在針對對應的去遮擋儲存格的位元值是一(1)時可以是一(1)。
在1218處,如結合圖5A-圖11中的實例所描述的,裝置可以基於針對複數個基元之每一者基元的可見性資訊來決定複數個基元之每一者基元是否可見。在1220處,如結合圖5A-圖11中的實例所描述的,裝置可以儲存針對被決定為可見的複數個基元之每一者基元的可見性資訊,其中該可見性資訊可以被儲存為潛在可見集(PVS)資訊。在1222處,如結合圖5A-圖11中的實例所描述的,裝置可以渲染包括被決定為可見的複數個基元之每一者基元的至少一個圖像。
在某些態樣中,如結合圖5A-圖11中的實例所描述的,觀看區域可以由來自視點的第一觀看射線和第二觀看射線定義,其中第一觀看射線和第二觀看射線各自對應於體積網格的邊緣。而且,如結合圖5A-圖11中的實例所描述的,複數個基元之每一者基元可以由頂點著色器或片段著色器決定為可見。同樣,如結合圖5A-圖11中的實例所描述的,針對複數個基元之每一者基元的可見性資訊可以由計算著色器來計算。
在一個配置中,提供了用於圖形處理的方法或裝置。裝置可以是CPU、GPU或者可以執行圖形處理的某些其他處理器。在一個態樣中,裝置可以是設備104內的處理單元120,或者可以是設備104內的某些其他硬體或另一設備。裝置可以包括用於決定與場景中的視點相關聯的複數個基元之每一者基元的幾何資訊的構件。裝置亦可以包括用於基於針對複數個基元之每一者基元的幾何資訊來計算表面資訊和去遮擋資訊中的至少一者的構件,其中表面資訊和去遮擋資訊與基於與視點相對應的觀看區域的體積網格相關聯。裝置亦可以包括用於基於表面資訊和去遮擋資訊中的至少一者來計算針對複數個基元之每一者基元的可見性資訊的構件,其中可見性資訊可以與體積網格相關聯。裝置亦可以包括用於基於針對複數個基元之每一者基元的可見性資訊來決定複數個基元之每一者基元是否可見的構件。裝置亦可以包括用於基於幾何資訊來標識針對複數個基元之每一者基元的一或多個表面片段和一或多個剪影邊緣中的至少一者的構件。裝置亦可以包括用於將針對複數個基元之每一者基元的幾何資訊轉換為表面資訊和去遮擋資訊中的至少一者的構件。裝置亦可以包括用於基於與視點相對應的觀看區域來產生體積網格的構件,其中體積網格與對應於表面資訊的表面緩衝器、對應於去遮擋資訊的去遮擋緩衝器,以及對應於可見性資訊的可見性緩衝器相關聯。裝置亦可以包括用於產生包括複數個表面儲存格的表面緩衝器、包括複數個去遮擋儲存格的去遮擋緩衝器,以及包括複數個可見性儲存格的可見性緩衝器的構件。裝置亦可以包括用於將表面資訊儲存在表面緩衝器中,將去遮擋資訊儲存在去遮擋緩衝器中,並且將可見性資訊儲存在可見性緩衝器中的構件。裝置亦可以包括用於儲存針對被決定為可見的複數個基元之每一者基元的可見性資訊的構件,其中該可見性資訊可以被儲存為潛在可見集(PVS)資訊。裝置亦可以包括用於渲染包括被決定為可見的複數個基元之每一者基元的至少一個圖像的構件。
可以實現本文描述的標的以實現一或多個益處或優點。例如,所描述的圖形處理技術可以由GPU、CPU或者可以執行圖形處理的某些其他處理器使用,以實現本文所描述的次序無關的遮擋計算。與其他圖形處理技術相比,此舉亦可以以低成本實現。此外,本文中的圖形處理技術可以改良或加速資料處理或執行。進一步地,本文中的圖形處理技術可以改良資源或資料利用及/或資源效率。另外,當在次序無關的遮擋計算中決定可見基元時,本案的態樣可以減少資料量或記憶體頻寬。
根據本案,在上下文不另外指示的情況下,術語「或」可以被解釋為「及/或」。另外,儘管諸如「一或多個」或「至少一個」之類的短語可能已用於本文揭示的某些特徵而不是其他特徵,但在上下文不另外指示的情況下,未使用此類語言的特徵可以被解釋為具有隱含的此類含義。
在一或多個實例中,本文所描述的功能可以以硬體、軟體、韌體或其任何組合來實現。例如,儘管貫穿本案使用了術語「處理單元」,但是此類處理單元可以以硬體、軟體、韌體或其任意組合來實現。若本文所描述的任何功能、處理單元、技術或其他模組以軟體來實現,則本文所描述的功能、處理單元、技術或其他模組可以作為電腦可讀取媒體上的一或多個指令或代碼而被儲存或傳輸。電腦可讀取媒體可以包括電腦資料儲存媒體或通訊媒體,其包括促進電腦程式從一個地方到另一個地方的傳遞的任何媒體。以此方式,電腦可讀取媒體通常可以對應於(1)非暫時性的有形電腦可讀取儲存媒體或(2)諸如信號或載波之類的通訊媒體。資料儲存媒體可以是可由一或多個電腦或一或多個處理器存取以取得用於實現本案中所描述的技術的指令、代碼及/或資料結構的任何可用媒體。作為實例而非限制,此類電腦可讀取媒體可以包括RAM、ROM、EEPROM、CD-ROM或其他光碟儲存、磁碟儲存或其他磁儲存設備。如本文所使用的,磁碟(disk)和光碟(disc)包括壓縮光碟(CD)、鐳射光碟、光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中磁碟通常磁性地再現資料,而光碟利用鐳射光學地再現資料。上述項的組合亦應被包括在電腦可讀取媒體的範疇內。電腦程式產品可以包括電腦可讀取媒體。
代碼可以由諸如以下各項的一或多個處理器執行:一或多個數位信號處理器(DSP)、通用微處理器、特殊應用積體電路(ASIC)、算術邏輯單位(ALU)、現場可程式設計閘陣列(FPGA)或其他等效的整合或離散邏輯電路系統。相應地,如本文中所使用的術語「處理器」可以指前述結構中的任一個或適於實現本文中所描述的技術的任何其他結構。同樣,該等技術可以以一或多個電路或邏輯元件來完全實現。
本案的技術可以被實現於各種設備或裝置中,包括無線手持設備、積體電路(IC)或IC集(例如,晶片集)。各種元件、模組或單元在本案中被描述,以強調被配置為執行所揭示技術的設備的功能態樣,但此舉不一定需要由不同硬體單元實現。確切而言,如前述,各種單元可以被組合在任何硬體單元中或者由包括如前述的一或多個處理器的交互操作硬體單元的集合結合適當的軟體及/或韌體來提供。
各種實例已被描述。該等實例和其他實例處於所附請求項的範疇之內。
100:內容產生系統
104:設備
107:圖形處理流水線
120:處理單元
121:內部記憶體
122:內容編碼器/解碼器
123:內部記憶體
124:系統記憶體
126:通訊介面
127:顯示處理器
128:接收器
130:傳輸器
131:顯示器
132:收發器
198:決定元件
200:GPU
210:命令處理器(CP)
212:繪製調用封包
220:VFD
222:VS
224:頂點快取記憶體(VPC)
226:三角形建立引擎(TSE)
228:光柵化器(RAS)
230:Z處理引擎(ZPE)
232:圖元內插器(PI)
234:片段著色器(FS)
236:渲染後端(RB)
238:L2快取記憶體(UCHE)
240:系統記憶體
250:命令緩衝器
260:上下文暫存器封包
261:上下文狀態
300:圖像/表面
302:區域
310:倉
311:倉
312:倉
313:倉
314:倉
315:倉
321:基元
322:基元
323:基元
324:基元
350:第一視點
351:第二視點
400:圖像/表面
410:倉
420:倉
430:倉
440:倉
460:補片
462:基元
470:子基元
472:子基元
474:子基元
476:子基元
500:圖
502:視點/相機
504:觀看區域
510:圖
512:視點/相機
514:觀看區域
600:圖
602:視點/相機
604:觀看區域
606:體積網格
610:圖
612:視點/相機
614:觀看區域
616:體積網格
620:圖
622:視點/相機
624:觀看區域
626:體積網格
700:圖
702:視點/相機
704:觀看區域
706:體積網格
708:表面片段
710:圖
712:視點/相機
714:觀看區域
716:體積網格
718:剪影邊緣
720:圖
722:視點/相機
724:觀看區域
726:體積網格
800:圖
802:視點/相機
804:觀看區域
806:體積網格
808:表面片段
810:圖
812:視點/相機
814:觀看區域
816:體積網格
818:剪影邊緣
820:圖
822:視點/相機
824:觀看區域
826:體積網格
900:圖
902:視點/相機
904:觀看區域
906:體積網格
910:圖
912:視點/相機
914:觀看區域
916:體積網格
920:圖
922:視點/相機
924:觀看區域
926:體積網格
1000:圖
1002:視點/相機
1004:觀看區域
1006:體積網格
1010:圖
1012:視點/相機
1014:觀看區域
1016:體積網格
1020:圖
1022:視點/相機
1024:觀看區域
1026:體積網格
1028:可見頂點
1030:不可見頂點
1100:圖
1110:GPU
1120:頂點著色器
1130:片段著色器
1140:計算著色器
1200:流程圖
1202:步驟
1204:步驟
1206:步驟
1208:步驟
1210:步驟
1212:步驟
1214:步驟
1216:步驟
1218:步驟
1220:步驟
1222:步驟
圖1是圖示根據本案的一或多個技術的示例性內容產生系統的方塊圖。
圖2圖示根據本案的一或多個技術的示例性GPU。
圖3圖示根據本案的一或多個技術的示例性圖像或表面。
圖4圖示根據本案的一或多個技術的示例性圖像或表面。
圖5A和圖5B圖示根據本案的一或多個技術的包括觀看區域的示例性圖。
圖6A-圖6C圖示根據本案的一或多個技術的包括觀看區域和體積網格的示例性圖。
圖7A-圖7C圖示根據本案的一或多個技術的包括觀看區域和體積網格的示例性圖。
圖8A-圖8C圖示根據本案的一或多個技術的包括觀看區域和體積網格的示例性圖。
圖9A-圖9C圖示根據本案的一或多個技術的包括觀看區域和體積網格的示例性圖。
圖10A-圖10C圖示根據本案的一或多個技術的包括觀看區域和體積網格的示例性圖。
圖11圖示根據本案的一或多個技術的示例性圖。
圖12圖示根據本案的一或多個技術的示例性方法的示例性流程圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
1200:流程圖
1202:步驟
1204:步驟
1206:步驟
1208:步驟
1210:步驟
1212:步驟
1214:步驟
1216:步驟
1218:步驟
1220:步驟
1222:步驟
Claims (40)
- 一種用於圖形處理的方法,包括以下步驟: 決定與一場景中的一視點相關聯的複數個基元之每一者基元的幾何資訊; 基於針對該複數個基元之每一者基元的該幾何資訊來計算表面資訊和去遮擋資訊中的至少一者,其中該表面資訊和該去遮擋資訊與基於與該視點相對應的一觀看區域的一體積網格相關聯; 基於該表面資訊和該去遮擋資訊中的至少一者來計算針對該複數個基元之每一者基元的可見性資訊,其中該可見性資訊與該體積網格相關聯;及 基於針對該複數個基元之每一者基元的該可見性資訊來決定該複數個基元之每一者基元是否可見。
- 如請求項1之方法,亦包括以下步驟: 基於該幾何資訊來標識針對該複數個基元之每一者基元的一或多個表面片段和一或多個剪影邊緣中的至少一者。
- 如請求項2之方法,其中該一或多個表面片段對應於該表面資訊,而該一或多個剪影邊緣對應於該去遮擋資訊。
- 如請求項1之方法,亦包括以下步驟: 將針對該複數個基元之每一者基元的該幾何資訊轉換為該表面資訊和該去遮擋資訊中的至少一者。
- 如請求項4之方法,其中該幾何資訊是基於一域變換而被轉換的,其中該體積網格對應於基於與該視點相對應的該觀看區域的一透視空間。
- 如請求項1之方法,亦包括以下步驟: 基於與該視點相對應的該觀看區域來產生該體積網格,其中該體積網格與對應於該表面資訊的一表面緩衝器、對應於該去遮擋資訊的一去遮擋緩衝器,以及對應於該可見性資訊的一可見性緩衝器相關聯。
- 如請求項6之方法,亦包括以下步驟: 產生包括複數個表面儲存格的該表面緩衝器、包括複數個去遮擋儲存格的該去遮擋緩衝器,以及包括複數個可見性儲存格的該可見性緩衝器。
- 如請求項7之方法,其中針對該複數個表面儲存格之每一者表面儲存格的一位元值被設置為零(0),針對該複數個去遮擋儲存格之每一者去遮擋儲存格的一位元值被設置為零(0),並且針對該複數個可見性儲存格之每一者可見性儲存格的一位元值被設置為一(1)。
- 如請求項7之方法,亦包括以下步驟: 將該表面資訊儲存在該表面緩衝器中,將該去遮擋資訊儲存在該去遮擋緩衝器中,並且將該可見性資訊儲存在該可見性緩衝器中。
- 如請求項9之方法,其中針對該複數個表面儲存格之每一者表面儲存格的一位元值在該表面儲存格不包括表面資訊時為零(0),並且針對該複數個去遮擋儲存格之每一者去遮擋儲存格的一位元值在該去遮擋儲存格不包括去遮擋資訊時為零(0)。
- 如請求項9之方法,其中針對每個可見性儲存格的一位元值在該可見性儲存格被標記為可見時為一(1),並且針對每個可見性儲存格的一位元值在該可見性儲存格被標記為不可見時為零(0)。
- 如請求項9之方法,其中針對每個可見性儲存格的一位元值在針對至少一個對應的表面儲存格的一位元值是零(0)時為一(1),該至少一個對應的表面儲存格比該可見性儲存格更接近該視點並且與該可見性儲存格在該體積網格的一相同行中。
- 如請求項9之方法,其中針對每個可見性儲存格的一位元值在針對至少一個對應的表面儲存格的一位元值是一(1)時為零(0),該至少一個對應的表面儲存格比該可見性儲存格更接近該視點並且與該可見性儲存格在該體積網格的一相同行中。
- 如請求項9之方法,其中針對每個可見性儲存格的一位元值在針對一對應的去遮擋儲存格的一位元值是一(1)時為一(1)。
- 如請求項1之方法,亦包括以下步驟: 儲存針對被決定為可見的該複數個基元之每一者基元的該可見性資訊,其中該可見性資訊被儲存為潛在可見集(PVS)資訊。
- 如請求項15之方法,亦包括以下步驟: 渲染包括被決定為可見的該複數個基元之每一者基元的至少一個圖像。
- 如請求項1之方法,其中該觀看區域由來自該視點的一第一觀看射線和一第二觀看射線定義,其中該第一觀看射線和該第二觀看射線各自對應於該體積網格的一邊緣。
- 如請求項1之方法,其中該複數個基元之每一者基元由一頂點著色器或片段著色器決定為可見。
- 如請求項1之方法,其中針對該複數個基元之每一者基元的該可見性資訊由一計算著色器計算。
- 一種用於圖形處理的裝置,包括: 一記憶體;及 至少一個處理器,該至少一個處理器耦合到該記憶體並且被配置為: 決定與一場景中的一視點相關聯的複數個基元之每一者基元的幾何資訊; 基於針對該複數個基元之每一者基元的該幾何資訊來計算表面資訊和去遮擋資訊中的至少一者,其中該表面資訊和該去遮擋資訊與基於與該視點相對應的一觀看區域的一體積網格相關聯; 基於該表面資訊和該去遮擋資訊中的至少一者來計算針對該複數個基元之每一者基元的可見性資訊,其中該可見性資訊與該體積網格相關聯;及 基於針對該複數個基元之每一者基元的該可見性資訊來決定該複數個基元之每一者基元是否可見。
- 如請求項20之裝置,其中該至少一個處理器亦被配置為: 基於該幾何資訊來標識針對該複數個基元之每一者基元的一或多個表面片段和一或多個剪影邊緣中的至少一者。
- 如請求項21之裝置,其中該一或多個表面片段對應於該表面資訊,而該一或多個剪影邊緣對應於該去遮擋資訊。
- 如請求項20之裝置,其中該至少一個處理器亦被配置為: 將針對該複數個基元之每一者基元的該幾何資訊轉換為該表面資訊和該去遮擋資訊中的至少一者。
- 如請求項23之裝置,其中該幾何資訊是基於一域變換而被轉換的,其中該體積網格對應於基於與該視點相對應的該觀看區域的一透視空間。
- 如請求項20之裝置,其中該至少一個處理器亦被配置為: 基於與該視點相對應的該觀看區域來產生該體積網格,其中該體積網格與對應於該表面資訊的一表面緩衝器、對應於該去遮擋資訊的一去遮擋緩衝器,以及對應於該可見性資訊的一可見性緩衝器相關聯。
- 如請求項25之裝置,其中該至少一個處理器亦被配置為: 產生包括複數個表面儲存格的該表面緩衝器、包括複數個去遮擋儲存格的該去遮擋緩衝器,以及包括複數個可見性儲存格的該可見性緩衝器。
- 如請求項26之裝置,其中針對該複數個表面儲存格之每一者表面儲存格的一位元值被設置為零(0),針對該複數個去遮擋儲存格之每一者去遮擋儲存格的一位元值被設置為零(0),並且針對該複數個可見性儲存格之每一者可見性儲存格的一位元值被設置為一(1)。
- 如請求項26之裝置,其中該至少一個處理器亦被配置為: 將該表面資訊儲存在該表面緩衝器中,將該去遮擋資訊儲存在該去遮擋緩衝器中,並且將該可見性資訊儲存在該可見性緩衝器中。
- 如請求項28之裝置,其中針對該複數個表面儲存格之每一者表面儲存格的一位元值在該表面儲存格不包括表面資訊時為零(0),並且針對該複數個去遮擋儲存格之每一者去遮擋儲存格的一位元值在該去遮擋儲存格不包括去遮擋資訊時為零(0)。
- 如請求項28之裝置,其中針對每個可見性儲存格的一位元值在該可見性儲存格被標記為可見時為一(1),並且針對每個可見性儲存格的一位元值在該可見性儲存格被標記為不可見時為零(0)。
- 如請求項28之裝置,其中針對每個可見性儲存格的一位元值在針對至少一個對應的表面儲存格的一位元值是零(0)時為一(1),該至少一個對應的表面儲存格比該可見性儲存格更接近該視點並且與該可見性儲存格在該體積網格的一相同行中。
- 如請求項28之裝置,其中針對每個可見性儲存格的一位元值在針對至少一個對應的表面儲存格的一位元值是一(1)時為零(0),該至少一個對應的表面儲存格比該可見性儲存格更接近該視點並且與該可見性儲存格在該體積網格的一相同行中。
- 如請求項28之裝置,其中針對每個可見性儲存格的一位元值在針對一對應的去遮擋儲存格的一位元值是一(1)時為一(1)。
- 如請求項20之裝置,其中該至少一個處理器亦被配置為: 儲存針對被決定為可見的該複數個基元之每一者基元的該可見性資訊,其中該可見性資訊被儲存為潛在可見集(PVS)資訊。
- 如請求項34之裝置,其中該至少一個處理器亦被配置為: 渲染包括被決定為可見的該複數個基元之每一者基元的至少一個圖像。
- 如請求項20之裝置,其中該觀看區域由來自該視點的一第一觀看射線和一第二觀看射線定義,其中該第一觀看射線和該第二觀看射線各自對應於該體積網格的一邊緣。
- 如請求項20之裝置,其中該複數個基元之每一者基元由一頂點著色器或片段著色器決定為可見。
- 如請求項20之裝置,其中針對該複數個基元之每一者基元的該可見性資訊由一計算著色器計算。
- 一種用於圖形處理的裝置,包括: 用於決定與一場景中的一視點相關聯的複數個基元之每一者基元的幾何資訊的構件; 用於基於針對該複數個基元之每一者基元的該幾何資訊來計算表面資訊和去遮擋資訊中的至少一者的構件,其中該表面資訊和該去遮擋資訊與基於與該視點相對應的一觀看區域的一體積網格相關聯; 用於基於該表面資訊和該去遮擋資訊中的至少一者來計算針對該複數個基元之每一者基元的可見性資訊的構件,其中該可見性資訊與該體積網格相關聯;及 用於基於針對該複數個基元之每一者基元的該可見性資訊來決定該複數個基元之每一者基元是否可見的構件。
- 一種儲存用於圖形處理的電腦可執行代碼的電腦可讀取媒體,該代碼在由一處理器執行時使得該處理器: 決定與一場景中的一視點相關聯的複數個基元之每一者基元的幾何資訊; 基於針對該複數個基元之每一者基元的該幾何資訊來計算表面資訊和去遮擋資訊中的至少一者,其中該表面資訊和該去遮擋資訊與基於與該視點相對應的一觀看區域的一體積網格相關聯; 基於該表面資訊和該去遮擋資訊中的至少一者來計算針對該複數個基元之每一者基元的可見性資訊,其中該可見性資訊與該體積網格相關聯;及 基於針對該複數個基元之每一者基元的該可見性資訊來決定該複數個基元之每一者基元是否可見。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/894,643 | 2020-06-05 | ||
US16/894,643 US11380047B2 (en) | 2020-06-05 | 2020-06-05 | Methods and apparatus for order-independent occlusion computations |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202147243A true TW202147243A (zh) | 2021-12-16 |
Family
ID=76197583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110116372A TW202147243A (zh) | 2020-06-05 | 2021-05-06 | 用於次序無關的遮擋計算的方法和裝置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11380047B2 (zh) |
EP (1) | EP4162451A2 (zh) |
KR (1) | KR20230020974A (zh) |
CN (1) | CN115917605A (zh) |
BR (1) | BR112022023766A2 (zh) |
TW (1) | TW202147243A (zh) |
WO (1) | WO2021247190A2 (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ITMI20070038A1 (it) * | 2007-01-12 | 2008-07-13 | St Microelectronics Srl | Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle. |
US10109103B2 (en) * | 2010-06-30 | 2018-10-23 | Barry L. Jenkins | Method of determining occluded ingress and egress routes using nav-cell to nav-cell visibility pre-computation |
US8970592B1 (en) * | 2011-04-19 | 2015-03-03 | Lucasfilm Entertainment Company LLC | Simulating an arbitrary number of particles |
US10176621B2 (en) * | 2013-06-10 | 2019-01-08 | Sony Interactive Entertainment Inc. | Using compute shaders as front end for vertex shaders |
US9508186B2 (en) * | 2013-11-07 | 2016-11-29 | Autodesk, Inc. | Pre-segment point cloud data to run real-time shape extraction faster |
US9691177B2 (en) | 2014-12-12 | 2017-06-27 | Umbra Software Ltd. | Techniques for automatic occluder simplification using planar sections |
US10074210B1 (en) * | 2017-07-25 | 2018-09-11 | Apple Inc. | Punch-through techniques for graphics processing |
US10504280B2 (en) * | 2018-01-10 | 2019-12-10 | Qualcomm Incorporated | Accelerated occlusion computation |
US20190259200A1 (en) * | 2018-02-21 | 2019-08-22 | Microsoft Technology Licensing, Llc | Utilizing distance fields for occlusion determination in computer generated scenery |
-
2020
- 2020-06-05 US US16/894,643 patent/US11380047B2/en active Active
-
2021
- 2021-05-06 EP EP21729107.9A patent/EP4162451A2/en active Pending
- 2021-05-06 TW TW110116372A patent/TW202147243A/zh unknown
- 2021-05-06 CN CN202180038604.3A patent/CN115917605A/zh active Pending
- 2021-05-06 WO PCT/US2021/031053 patent/WO2021247190A2/en active Application Filing
- 2021-05-06 KR KR1020227041812A patent/KR20230020974A/ko active Search and Examination
- 2021-05-06 BR BR112022023766A patent/BR112022023766A2/pt unknown
Also Published As
Publication number | Publication date |
---|---|
CN115917605A (zh) | 2023-04-04 |
KR20230020974A (ko) | 2023-02-13 |
WO2021247190A2 (en) | 2021-12-09 |
US20210383597A1 (en) | 2021-12-09 |
WO2021247190A3 (en) | 2022-03-03 |
BR112022023766A2 (pt) | 2022-12-20 |
US11380047B2 (en) | 2022-07-05 |
EP4162451A2 (en) | 2023-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11631212B2 (en) | Methods and apparatus for efficient multi-view rasterization | |
TW202215376A (zh) | 用於圖形處理單元混合渲染的裝置和方法 | |
TW202230287A (zh) | 用於遮擋處理技術的方法和裝置 | |
WO2023196120A1 (en) | Variable rate tessellation | |
TW202240539A (zh) | 注視點渲染中的內容移動 | |
TW202147243A (zh) | 用於次序無關的遮擋計算的方法和裝置 | |
TW202223831A (zh) | 用於基於區域不連續性的運動估計的方法和裝置 | |
TW202316375A (zh) | 與取樣空間相關聯的注視點分塊渲染 | |
US20240212257A1 (en) | Workload packing in graphics texture pipeline | |
US20240282055A1 (en) | Mesh gpu codec for real-time streaming | |
US11869115B1 (en) | Density driven variable rate shading | |
US20240265486A1 (en) | Backface culling for guard band clipping primitives | |
TW202217745A (zh) | 用於擴展式分箱的可配置圍邊支援 | |
TW202134996A (zh) | 用於減少渲染資訊的傳輸的方法和裝置 | |
TW202311940A (zh) | 基於圖塊的結構中深度和陰影遍歷渲染的最佳化 | |
TW202322043A (zh) | 小網格著色圖譜 | |
TW202318332A (zh) | 動態可變速率著色 | |
TW202228082A (zh) | 物件空間渲染中的佈告板層 | |
CN118661419A (zh) | 基于自适应块的帧相似度编码 |