TWI839352B - 圖形處理器、數據處理器、及其等的操作方法 - Google Patents

圖形處理器、數據處理器、及其等的操作方法 Download PDF

Info

Publication number
TWI839352B
TWI839352B TW108112610A TW108112610A TWI839352B TW I839352 B TWI839352 B TW I839352B TW 108112610 A TW108112610 A TW 108112610A TW 108112610 A TW108112610 A TW 108112610A TW I839352 B TWI839352 B TW I839352B
Authority
TW
Taiwan
Prior art keywords
region
rendered
rendering
sampling
output
Prior art date
Application number
TW108112610A
Other languages
English (en)
Other versions
TW201947523A (zh
Inventor
安卓亞斯 羅夫 瑟維克
薩莫爾 馬汀
彼得 威廉 哈利斯
賈克伯 艾克瑟爾 弗萊斯
Original Assignee
英商Arm有限公司
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
Priority claimed from GB1807558.0A external-priority patent/GB2573543B/en
Application filed by 英商Arm有限公司 filed Critical 英商Arm有限公司
Publication of TW201947523A publication Critical patent/TW201947523A/zh
Application granted granted Critical
Publication of TWI839352B publication Critical patent/TWI839352B/zh

Links

Abstract

圖形處理器執行關於渲染輸出的區域的圖形處理。所述圖形處理包括獲取與所述區域的期望分辨率相對應的縮放因子。所述圖形處理還包括,根據期望分辨率,獲取要針對所述區域渲染的縮放圖形幾何形狀,並且選擇所述區域的、要關於所述區域進行渲染的子區域。然後利用所述縮放圖形幾何形狀來渲染所選擇的子區域,從而提供根據所述期望分辨率渲染的數據元素子區域。所述圖形處理器可以在執行可變分辨率渲染時提供有效且靈活的圖形處理。

Description

圖形處理器、數據處理器、及其等的操作方法
本發明涉及圖形處理,並且具體地,涉及圖形處理器在執行可變分辨率渲染時的操作。
可變分辨率(「視網膜凹式(foveated)」)渲染是一種渲染技術,其中,正在顯示的幀(圖像)的一個或更多個部分以較高分辨率渲染以顯示,但該幀的一個或更多個其它部分以較低分辨率渲染。
這基於以下事實:用戶正在直視的幀的區域可能需要以較高分辨率渲染以獲取視覺上的可接受性,而用戶未直視的幀的周邊區域可以以較低分辨率渲染並同時仍然看起來在視覺上可接受。這因而可以被用於透過以較低分辨率渲染周邊區域,而不是以所要求的最高(「中心凹注視(foveal)」)分辨率渲染正在顯示的整個幀,從而減少圖形處理單元(GPU)的渲染負擔。
可以透過識別一個或更多個「注視點(fixation point)」來執行可變分辨率渲染,其中,將渲染幀的較高分辨率區域,而漸漸遠離注視點的區域以較低分辨率渲染。因此,每個凝視點可以指示幀的最高分辨率區域,並且在一些情況下,旨在對應於眼睛視網膜中心(中央凹(fovea))。
可變分辨率渲染的另一用途是在渲染用於虛擬實境顯示器(例如,虛擬實境頭戴式顯示器(VR HMD))的圖像時。高分辨率頭戴式虛擬實境顯示器通常使用以嚴重枕形失真為特色的透鏡。可以透過使渲染圖像穿過桶形失真來校正這種枕形失真。這樣的效果是朝向顯示器中心(對於每只眼睛)的渲染圖像被放大而周邊區域被縮小。因而,這樣做的效果是周邊區域可以以比中央放大區域低的質量進行渲染,而用戶的總體視覺效果沒有任何顯著損失。
在執行可變分辨率渲染時,可以以任何合適和期望的方式來確定幀的最高分辨率區域(例如,注視點)的位置。例如,可以使用某種形式的頭部跟蹤或眼睛跟蹤系統來嘗試識別用戶正在看圖像的哪個位置,以便識別應當以最高分辨率渲染的幀區域。幀的較高分辨率區域的位置也可以或代替地大致固定,例如,基於透鏡失真。
申請人認為,圖形處理器執行可變分辨率渲染時的操作仍然存在改進餘地。
根據本發明一方面,提供了一種操作圖形處理器的方法,該方法包括以下步驟:執行關於渲染輸出的區域的圖形處理,其中,所述區域是出於渲染目的將所述渲染輸出劃分成的多個區域中的一個區域,其中,執行關於所述區域的圖形處理的步驟包括以下步驟:獲取所述區域的期望分辨率配置; 根據所述區域的所述期望分辨率配置,獲取要針對所述區域渲染的縮放圖形幾何形狀;根據所述區域的所述期望分辨率配置,選擇所述區域的、要關於所述區域進行渲染的子區域;以及執行關於所述區域的渲染,其中,執行關於所述區域的渲染的步驟包括以下步驟:利用所述縮放圖形幾何形狀來渲染所述渲染輸出的所述子區域,由此提供數據元素渲染子區域;以及針對所述區域,輸出包括所述數據元素渲染子區域的數據元素輸出陣列。
根據本發明另一方面,提供了一種圖形處理器,該圖形處理器包括:處理電路,該處理電路被配置成執行關於渲染輸出的區域的圖形處理,其中,所述區域是出於渲染目的將所述渲染輸出劃分成的多個區域中的一個區域,其中,執行關於所述區域的圖形處理的處理包括:獲取所述區域的期望分辨率配置;根據所述區域的所述期望分辨率配置,獲取要針對所述區域渲染的縮放圖形幾何形狀;根據所述區域的所述期望分辨率配置,選擇所述區域的、要關於所述區域進行渲染的子區域;以及執行關於所述區域的渲染,其中,執行關於所述區域的渲染的處理包括:利用所述縮放圖形幾何形狀來渲染所述渲染輸出的所述子區域,由此提供數據元素渲染子區域;並且 輸出電路,該輸出電路被配置成針對所述區域,輸出包括所述數據元素渲染子區域的數據元素輸出陣列。
因此,本發明包括獲取渲染輸出(例如,紋理或幀)的區域(例如,圖塊)的分辨率配置。例如,這可以允許渲染輸出的區域(並且,例如,每個區域)按照該區域的特定期望分辨率進行渲染。本發明還包括根據該區域的期望分辨率配置,獲取要針對所述區域進行渲染的縮放圖形幾何形狀,並且選擇所述區域的、要進行渲染的子區域。然後,可以利用所述縮放圖形幾何形狀來渲染所選擇的子區域,以為根據所述區域的期望分辨率配置渲染的所述區域提供數據元素子區域。例如,這可以減少圖形處理器的處理負擔,例如,在該區域要以較低分辨率渲染時僅需要渲染該區域的較小子區域。而且,由於所選擇子區域可以採用一系列尺寸(例如,具有與可以被選擇用於關於該區域的渲染的採樣位置的多個行和/或列有關的粒度),因此可以存在對應範圍的可能分辨率,在該分辨率下可以執行關於該區域的渲染。因此,本發明可以在執行可變分辨率渲染時提供有效且靈活的圖形處理。
該圖形處理器可以針對渲染輸出的多個區域中的每個區域按本文所述方式執行相應圖形處理。所述多個區域可以表示同一渲染輸出中的一些或全部但是具有不同分辨率,例如,在執行中心凹式渲染時。
區域可以包括渲染輸出的任何期望和合適的區域。例如,渲染輸出可以為了渲染目的而劃分成多個圖形處理圖塊。區域可以包括這些圖形處理圖塊中的一個或更多個圖塊。因此,區域可以包括一個或更多個圖形處理圖塊,如單個圖形處理圖塊。
因此,該圖形處理器可以包括基於圖塊的圖形處理器。在基於圖塊的圖形處理中,將二維渲染輸出(即,渲染處理的輸出,如輸出待顯示的紋理或幀)渲染為多個較小區域,通常被稱為「圖塊」。這些圖塊皆單獨渲染。然後,可以重新組合渲染的圖塊以提供完整的渲染輸出(例如,用於顯示的紋理或幀)。
在這樣的裝置中,渲染輸出典型地被劃分(按面積)成規則尺寸和形狀的渲染圖塊(它們例如通常是正方形或矩形),但這不是必要的。通常用於「圖塊化(tiling)」和「基於圖塊」渲染的其它術語包括「分塊(chunking)」(渲染圖塊被稱為「組塊(chunk)」)和「塊(bucket)」渲染。為方便起見,將在下文中使用術語「圖塊」和「圖塊化」。然而,應當明白,這些術語旨在涵蓋所有另選和等同的術語和技術。
這種基於圖塊的渲染的優點是可以減少記憶體頻寬。例如,正在處理的圖塊可以儲存在本地儲存部(「圖塊緩衝器」)中,並且僅在處理後才輸出至到記憶體。另一優點是在處理給定圖塊時不必考慮未出現在該圖塊中的圖形幾何形狀,並且例如可以在處理該圖塊時忽略。這允許減少給定渲染輸出所需的總圖形處理量。在本發明的上下文中基於圖塊的渲染的另一優點是每個圖塊可以根據自己的特定分辨率配置來渲染。
為了渲染目的將渲染輸出劃分成的區域(圖塊)可以是任何合適和期望的這種區域。所述區域的尺寸和形狀可以取決於圖形處理器被配置成使用和處理的圖塊配置。這些區域可以全部是相同尺寸和形狀(即,規則尺寸和形狀),儘管這不是必需的。這些區域可以是正方形或矩形。這些區域可以不交疊。區域的尺寸和數量可以根據需要選擇。在實施方式中,每個區域的尺寸 為16×16或32×32個採樣位置(例如,尺寸為16×16或32×32個像素)。渲染輸出中的紋素(texel)或像素可以對應於一個或更多個採樣位置。另選地,採樣位置可以對應於渲染輸出中的一個或更多個像素或紋素。然後,可以將渲染輸出劃分成許多這樣的區域,這些區域是正在使用的渲染輸出尺寸和形狀所需的。
區域的期望分辨率配置可採用任何期望和合適的形式。例如,區域的期望分辨率配置可以包括遍及該區域的恆定分辨率。因此,在實施方式中,獲取區域的期望分辨率配置可以包括:獲取用於該區域的(例如,單個)期望分辨率。這些實施方式可以提供大多數用例中的可接受的(例如,逐段的)中心凹式渲染。
在其它實施方式中,區域的期望分辨率配置可以包括遍及區域的可變分辨率。因此,在這些其它實施方式中,獲取區域的期望分辨率配置可以包括:獲取該區域的多個期望分辨率。區域的可變分辨率可以線性或非線性地變化,並且可以相對於該區域內的位置而變化,或者可以相對於整個渲染輸出內的位置而變化。區域的可變分辨率可以與渲染輸出的區域可能經受的透鏡畸變校正大致匹配。例如,這些實施方式可以提供更精細的(例如,連續的)中心凹式渲染。
可以按照任何期望和合適的方式獲取區域的期望分辨率配置。例如,區域的分辨率可以由為該區域提供(例如,特定地)的縮放因子來指示。區域的縮放因子可以與期望分辨率相關(例如,成比例)。再例如,為了以最高或完整(中心凹式)分辨率渲染區域,指示用於該區域的縮放因子可以是1。針對另一例子,為了以一半分辨率渲染區域,指示用於該區域的縮放因子可以是1/2。再例如,為了以四分之一分辨率渲染一區域,針對該區域指示的縮放因 子可以是1/4。可以根據需要使用縮放因子與最高或完整(中心凹式)分辨率之間的其它關係。
在實施方式中,區域的分辨率和/或縮放因子可以按針對(並且,例如分別對應於)所述渲染輸出的多個區域提供的多個分辨率和/或縮放因子的集合來指示。這可以允許每個區域按照自己的(例如,不同的)分辨率來渲染。因此,在實施方式中,區域的分辨率和/或縮放因子可以從為(並且,例如分別對應於)所述渲染輸出的所述多個區域相應提供的多個分辨率和/或縮放因子的集合獲取。
可以以任何期望和合適的方式提供多個分辨率和/或縮放因子的集合,例如,作為或者採用所述渲染輸出的分辨率和/或縮放因子(「縮放紋理」)的陣列。所述集合或陣列中的特定區域的分辨率和/或縮放因子的位置可以對應於該特定區域在渲染輸出中的位置。這可以提供獲取或「查尋」該特定區域的期望分辨率和/或縮放因子的有效方式,例如,基於該特定區域在渲染輸出中的位置。因此,獲取區域的期望分辨率配置可以包括獲取被指示用於該區域的特定縮放因子,例如,來自用於所述渲染輸出的縮放因子(「縮放紋理」)的集合或陣列。
這裡所指的圖形幾何形狀可以是任何合適和期望的圖形幾何形狀,其可以為了對渲染輸出進行渲染而定義。在實施方式中,圖形幾何形狀可以包括圖形圖元,如簡單的多邊形(如三角形、四邊形、線和/或點)。然而,除了圖形圖元或者代替圖形圖元,圖形幾何形狀可以根據需要包括可以定義的其它圖形幾何形狀。
在實施方式中,可以以任何期望和合適的方式獲取要針對該區域進行渲染的縮放圖形幾何形狀。例如,該圖形處理器可以準備要針對該區域處理的一個或更多個圖形幾何形狀列表。然後,可以使用所述一個或更多個圖形幾何形狀列表來識別要在渲染該區域時處理的圖形幾何形狀。
給定幾何形狀列表可以對應於區域中的一些或全部(可以列出區域中的一些或全部的幾何形狀)。給定幾何形狀列表可以對應於一個或更多個(例如,整數個)區域(可以列出一個或更多個區域的幾何形狀)。這種列表的優點在於它們可以允許識別實際存在於給定區域中的幾何形狀,以例如避免不必要地光柵化和/或渲染實際上不存在於該區域中的幾何形狀。
獲取所述區域的要進行渲染的所述縮放圖形幾何形狀的步驟還可以包括以下步驟:根據所述期望分辨率配置(例如,所述區域的所述期望分辨率和/或縮放因子),縮放針對所述區域指示的圖形幾何形狀(例如,按幾何形狀列表)。這種縮放可以作為頂點位置加載操作的一部分來完成,但其它安排也是可能的(若期望的話)。
在這些實施方式中,針對區域指示的圖形幾何形狀可以包括先前未縮放的圖形幾何形狀,然後,將未縮放的圖形幾何形狀恰當縮放(根據所述期望分辨率配置,例如,所述區域的所述期望分辨率和/或縮放因子),以生成所述區域的要渲染的所述縮放圖形幾何形狀。因此,針對區域指示的圖形幾何形狀可以包括先前未縮放的圖形幾何形狀,
針對區域指示的圖形幾何形狀還可以或代替地包括先前縮放的圖形幾何形狀,其或者在沒有進一步縮放的情況下使用(如果適合於所述期望分辨率配置)或者恰當地進一步縮放(根據所述期望分辨率配置),以生成要針 對該區域進行渲染的所述縮放圖形幾何形狀。因此,針對區域指示的圖形幾何形狀可以包括先前縮放的圖形幾何形狀。在實施方式中,先前縮放的圖形幾何形狀可能已經在幾何形狀處理(圖元設置)期間和/或在針對所述渲染輸出執行圖塊化之前(例如,在生成所述一個或更多個幾何形狀列表之前)執行了縮放,例如,在獲取用於所討論區域的所述期望分辨率配置之前。
在實施方式中,先前縮放的圖形幾何形狀可能已經按照先前縮放因子進行了縮放。可以提供已經按照(例如,各自的)先前縮放因子進行了縮放的一組或更多組先前縮放的圖形幾何形狀。所述一個或更多個先前縮放因子可以限於2的冪,例如,1/2n,其中,n是正整數。以這種方式限制先前縮放因子可以有助於減少需要提供的先前縮放的圖形幾何形狀的集合的數量,但同時仍提供有用範圍的先前縮放的圖形幾何形狀。
在實施方式中,當針對區域指示的縮放因子等於或小於先前縮放因子時,獲取該區域的縮放圖形幾何形狀的處理可以利用使用該先前縮放因子縮放的一組先前縮放的幾何形狀。例如,當針對區域指示的縮放因子是1/2時,先前按1/2縮放的先前縮放的圖形幾何形狀可以無需進一步縮放即被獲取並使用。再例如,當針對區域指示的縮放因子是1/4時,先前按1/2縮放的先前縮放的圖形幾何形狀可以被獲取並進一步縮放,但僅按1/2而不是1/4進行縮放。
因此,提供一組或更多組先前縮放的圖形幾何形狀可以有助於增加獲取區域的縮放圖形幾何形狀的效率,例如,透過減少需要在給定渲染步驟(pass)中的頂點位置加載操作期間支持的縮放因子的數量。而且,提供一組或更多組先前縮放的圖形幾何形狀可以有助於避免在以非常低的分辨率渲染時未 充分利用圖形處理器,例如,透過允許選擇區域的相對較大的子區域用於針對該區域的渲染,從而避免選擇非常小的子區域用於針對該區域的渲染。
例如,在這些實施方式中,可以針對一起表示幀或圖像的多個相應渲染輸出來執行多個渲染步驟。用於渲染輸出的每個渲染步驟可以包括渲染該幀或圖像的一部分以生成該渲染步驟的渲染輸出。要在渲染步驟中渲染的幀或圖像的部分可以包括要按照一個或更多個特定分辨率渲染的一個或更多個區域的集合。例如,第一渲染步驟可以渲染要按照第一分辨率範圍(例如,完全分辨率至1/2分辨率)內的一個或更多個分辨率渲染的一個或更多個區域的集合,第二渲染步驟可以渲染要按照不同的第二分辨率範圍(例如,1/2至1/4分辨率)內的一個或更多個分辨率渲染的一個或更多個其它區域的集合等等(按照需要)。可以例如按本文在任何方面或實施方式中描述的方式,透過獲取恰當縮放的幾何形狀(例如,透過獲取和/或縮放(例如,先前縮放的)被指示用於該區域的幾何形狀)和/或選擇要針對該區域進行渲染的、該區域的恰當子區域,來按其特定分辨率渲染要針對一個步驟渲染的所述一個或更多個區域中的每個區域。例如,所述多個渲染步驟可以產生具有多個層的mipmap,包括來自所述多個渲染步驟的相應渲染輸出,然後,可以對其進行恰當採樣,以便輸出幀或圖像,例如,用於顯示。
在任何上述實施方式中,準備所述一個或更多個圖形幾何形狀列表(例如,圖元列表)的分辨率可以是任何合適和期望的分辨率。其可能是所需的最高分辨率的分辨率(即「中心凹式」區域的分辨率)。因此,在實施方式中,可以以要渲染的最高分辨率的分辨率來準備所述一個或更多個圖形幾何形狀列表。因此,可以利用並以最高分辨率生成一個或更多個幾何形狀(圖元) 列表,但另一方面,當以較低分辨率渲染時,也可以使用那些一個或更多個幾何形狀列表(例如,圖元列表)。根據需要,也可以或者代替地以比所需最高分辨率的分辨率更高或低的分辨率準備一個或更多個幾何形狀列表。
因此,在任何上述實施方式中,可以以給定的第一(例如,最高)分辨率準備幾何形狀列表,然後,當以用於所討論區域的期望分辨率渲染時,可以使用以第一分辨率準備的幾何形狀列表。申請人在這方面已經認識到,可以相對明確的是,恰當地縮放以第一分辨率準備的幾何形狀,來提供恰當的幾何形狀以供按另一分辨率進行渲染。這樣就避免了例如需要準備太多幾何形狀列表(例如,為可以在執行中心凹式渲染時使用的每個不同分辨率都準備一個),並因此,在執行中心凹式渲染時,可以減少圖形處理器的處理負擔。
要針對給定區域處理幾何形狀的識別(並因此包括在給定區域的幾何形狀列表中)可以以任何合適和期望的方式執行,例如,利用任何合適的「圖塊化」(分箱(binning))技術。因此,例如,可以將精確分箱和/或邊界框分箱(binding)用於該處理。
幾何形狀排序(列表)處理可以作用於(使用)要渲染的幾何形狀(例如,圖元)的頂點的恰當變換(頂點著色)位置。因此,在生成這些區域的所述一個或更多個幾何形狀列表之前,要針對所述渲染輸出處理的幾何形狀集合可以經受恰當的頂點著色操作,以便提供一組恰當的頂點著色頂點位置,以然後供幾何形狀排序(列表)處理使用。可以按將執行幾何形狀排序(圖塊化)處理的分辨率來執行該頂點著色,並且將該頂點著色的結果接著用於準備所述一個或更多個區域幾何形狀列表。而且,頂點著色可以以所需的最高分辨率執行。
因此,頂點位置處理(著色)和幾何形狀列表(圖元列表)生成處理都可以以第一分辨率(例如,以所需的最高分辨率)執行僅僅一次。
一旦為每個區域準備了要處理的所述一個或更多個幾何形狀(例如,圖元)列表,就可以儲存所述一個或更多個幾何形狀列表以供在渲染所述渲染輸出時使用,例如,用於允許渲染處理識別需要為每個相應區域考慮(即,渲染)哪個幾何形狀(例如,圖元)。一旦以第一分辨率(例如,按照將會要求的最高分辨率)準備了用於該區域的所述一個或更多個幾何形狀列表,就可以接著使用如此準備的幾何形狀列表來渲染該區域。
區域的期望分辨率可以是可供使用的多個不同分辨率之一。可能是最高分辨率,其可以對應於要在將要提供渲染輸出的最高分辨率的注視點處或附近使用的「中心凹」分辨率。然後可以存在一個或更多個較低分辨率,其可以離開注視點使用,例如,朝向渲染輸出的周邊。可以只有兩個不同的分辨率(最高分辨率和較低分辨率)可供使用。另選地,有三個或更多個不同分辨率可供使用,例如,包括最高分辨率和兩個或更多個較低分辨率。
如上所示,可供使用的不同分辨率和/或縮放因子可以與區域的尺寸有關,例如,區域的採樣位置的行數和/或列數。可供使用的不同分辨率和/或縮放因子例如可包括分數(普通分數或真分數)或由其組成,所述分數具有等於該區域的採樣位置的行數和/或列數的分母。例如,對於尺寸為16×16個採樣位置的區域,可供使用的不同分辨率和/或縮放因子可以包括16/16(即,1)、15/16、14/16等,一直到1/16或由其組成。在其它實施方式中,可供使用的不同分辨率和/或縮放因子可以限於這些分數的子集。例如,可供使用的不同分辨率和/或縮放因子可以限於具有偶數分子和/或偶數分母的分數。這可 以有助於提高圖形處理系統的效率,並且可以減少需要支持的不同分辨率和/或縮放因子的數量。在其它實施方式中,可供使用的不同分辨率和/或縮放因子可以限於2的冪,例如,1/2n,其中,n是正整數。而且,這可以進一步有助於提高圖形處理系統的效率,並且可以進一步減少需要支持的縮放因子的數量。
可以根據需要執行和指示要在整個渲染輸出中用於任何給定區域使用哪種分辨率的選擇,例如,按照在執行中心凹式渲染時用於所討論的圖形處理器和圖形處理系統的方式。例如,可以使用恰當的頭部跟蹤或眼睛/凝視跟蹤信息來識別應當在渲染輸出中的哪個地方顯示哪個分辨率,和/或在虛擬實境頭戴式顯示器的情況下,可以識別渲染輸出的中心並將其指示為應當顯示較高(例如,最高)分辨率的區域,並且然後以較低分辨率顯示朝向渲染輸出的周邊的區域。
可以在任何合適和期望的時間提供區域的期望分辨率,例如,在要獲取恰當縮放的圖形幾何形狀以供渲染之前和/或在選擇恰當的子區域以針對該區域執行渲染之前。在所述區域的縮放因子是動態的實施方式中,例如,注視點由頭部或眼睛/凝視跟蹤來確定,可以在針對所述區域進行幾何形狀處理和/或圖塊化之後(例如,在生成所述一個或更多個幾何形狀列表之後)和/或恰好在獲取恰當縮放的圖形幾何以供渲染之前和/或恰好在選擇恰當的子區域以進行關於該區域的渲染之前,提供該區域的期望分辨率配置。這可以有助於減少確定注視點與執行關於區域的渲染之間的時延。
可以以任何期望和合適的方式選擇要針對區域進行渲染的子區域。例如,選擇要針對區域進行渲染的子區域可以包括選擇所討論區域的一些但不 是全部。所選擇的子區域的尺寸(例如,在採樣位置方面)可以基於該區域的期望分辨率和/或縮放因子。例如,當以一半分辨率渲染時,可以選擇包括1/4區域(例如,包括採樣位置的1/2行和1/2列)的子區域以供渲染。再例如,當以四分之一分辨率渲染時,可以選擇包括1/16區域(例如,包括採樣位置的1/4行和1/4列)的子區域以供渲染。可以視情況選擇其它尺寸的子區域以供以其它分辨率進行渲染。在諸如全分辨率渲染的其它情況下,可以選擇整個區域進行渲染。
所選擇的子區域可以包括連續的子區域。所選擇的子區域可以與該區域的一個或更多個(例如,兩個)邊緣相鄰,如該區域的上邊緣和左邊緣。對於要以本發明的方式渲染的每個區域,所述一個或更多個邊緣的位置可以是相同的(例如,所選擇的子區域可以總是與它們各自區域的上邊緣和左邊緣相鄰)。這可以提供對要以本發明的方式渲染的多個區域的一致處理。
類似地,選擇要關於該區域進行渲染的子區域可以包括不選擇所述渲染輸出的一些進行渲染。未選擇區域的尺寸或面積(例如,在採樣位置方面)可以同樣基於該區域的期望分辨率和/或縮放因子。例如,當以一半分辨率渲染時,可以不選擇包括3/4區域的未選擇子區域來進行渲染。再例如,當以四分之一分辨率渲染時,可以不選擇包括15/16區域的未選擇子區域來進行渲染。可以視情況不選擇其它尺寸的區域以供其它分辨率的渲染。
未選擇的子區域可以同樣包括區域的連續區域。未選擇的子區域可以與區域的一個或更多個(例如,兩個)其它邊緣相鄰,如區域的下邊緣和右邊緣。對於要以本發明的方式渲染的每個區域,所述一個或更多個其它邊緣的位置可以同樣相同(例如,未選擇的子區域可以總是與它們各自區域的下邊 緣和右邊緣相鄰)。而且,這可以提供對要以本發明的方式渲染的多個區域的一致處理。
因此,選擇要關於該區域進行渲染的子區域可以包括選擇該區域的、要執行關於該區域的渲染的一個或更多個(但非全部)行和/或一個或更多個(但非全部)列的採樣位置。執行關於該區域的渲染接著可以包括執行關於所選擇的一個或更多個行和/或一個或更多個列的採樣位置的渲染。
類似地,選擇要關於該區域進行渲染的子區域可以包括不選擇該區域的一個或更多個行和/或一個或更多個列的採樣位置進行關於該區域的渲染。執行關於該區域的渲染接著可以包括不執行關於未選擇的一個或更多個行和/或一個或更多個列的採樣位置的渲染。例如,可以根本不執行關於未選擇的一個或更多個行和/或一個或更多個列的採樣位置的渲染(例如,不產生渲染執行線程),或者可以僅執行部分關於未選擇的一個或更多個行和/或一個或更多個列的採樣位置的渲染(例如,可以產生渲染執行線程但可以在完成之前終止)。
如上所示,區域的所選擇的一個或更多個行的採樣位置和/或所選擇的一個或更多個列的採樣位置可以包括彼此相鄰的一個或更多個行和/或一個或更多個列的採樣位置,並因此形成要渲染的採樣位置的連續選擇子區域。還如上所示,所選擇的一個或更多個行和/或一個或更多個列的採樣位置可以與該區域的一個或更多個邊緣相鄰,如該區域的上邊緣和/或左邊緣。這些實施方式可以透過允許將渲染的數據元素分組在一起來提供對所得到的數據元素輸出陣列的有效壓縮。類似地,如上所示,區域的未選擇的一個或更多個行和/或未選擇的一個或更多個列的採樣位置可以包括彼此相鄰的一個或更多個行 和/或一個或更多個列的採樣位置,並因此形成不被渲染的採樣位置的連續未選擇子區域。類似地,區域的未選擇的一個或更多個行和/或未選擇的一個或更多個列的採樣位置可以與該區域的一個或更多個其它邊緣相鄰,如該區域的下邊緣和/或右邊緣。這些實施方式還可以透過允許將未被渲染數據元素分組在一起來提供對所得到的數據元素輸出陣列的有效壓縮。
所選擇的一個或更多個行和/或一個或更多個列的採樣位置可以包括任何期望和合適(例如,整數)數量的行和/或列的採樣位置。如上所示,所選擇的行和/或列的數量可以基於區域的期望分辨率和/或縮放因子。例如,當以一半分辨率渲染時,可以選擇1/2的行和/或1/2的列進行渲染。再例如,當以四分之一分辨率渲染時,可以選擇1/4的行和/或1/4的列進行渲染。可以視情況選擇其它數量的行和/或列以其它分辨率進行渲染。
類似地,區域的未選擇的一個或更多個行和/或一個或更多個列的採樣位置也可以包括任何期望和合適數量的行和/或列,例如,其等於區域的採樣位置的行數和/或列數減去採樣位置的所選擇的行和/或列的數量。因此,未選擇的行和/或列的數量也可以基於期望分辨率和/或縮放因子。例如,當以一半分辨率渲染時,可以不渲染1/2的行和/或1/2的列。再例如,當以四分之一分辨率渲染時,可以不渲染3/4的行和/或3/4的列。
所選擇的行的數量可以大致等於所選擇的列的數量,例如,用於統一或各向同性縮放和/或用於渲染輸出的正方形區域。另選地,所選擇的行的數量可以不同於所選擇的列的數量,例如,用於不統一或各向異性縮放和/或用於渲染輸出的非正方形區域。未選擇的行的數量可以大致等於未選擇的列的數量,例如,用於統一或各向同性縮放和/或用於正方形區域。另選地,未 選擇的行的數量可以不同於未選擇的列的數量,例如,用於不統一或各向異性縮放和/或用於非正方形區域。
為了對渲染輸出的給定區域進行渲染,圖形處理器可以對應地處理縮放的幾何形狀,例如,透過將縮放的幾何形狀(例如,圖元)光柵化成所選擇的子區域(的採樣位置)的圖形片段,然後渲染所述圖形片段以提供子區域的輸出渲染數據元素。
因此,實施方式還可以包括執行關於區域的光柵化,其中,執行關於區域的光柵化包括將縮放的圖形幾何形狀光柵化以生成渲染輸出的所選擇子區域的圖形片段。執行關於區域的光柵化還可以包括不生成渲染輸出的未選擇子區域的圖形片段。執行該區域的渲染接著可以包括渲染子區域的所生成的圖形片段。
該渲染處理可以按照任何期望和合適的方式執行,例如,根據所討論的圖形處理器的性質。該渲染處理可以包括圖形處理器或圖形處理流水線在渲染幾何形狀以供輸出(例如,用於顯示)時可以執行的任何處理,諸如執行隱藏表面移除操作、深度測試、模板測試、混合、紋理映射等。
所得到的數據元素輸出陣列在數據元素方面可以是任何期望和合適的尺寸。在一些實施方式中,數據元素輸出陣列在數據元素方面可以是相同尺寸,就像渲染整個區域的情況一樣。這可以允許以本發明的方式渲染的區域對於數據元素輸出陣列的後續處理階段(如儲存、壓縮等)基本上是透明的。
在這些實施方式中,數據元素輸出陣列可以用數據元素填充,舉例來說,如一個或更多個填充行和/或列的數據元素,以使得數據元素輸出陣列在數據元素方面有基本上相同的尺寸,就像渲染整個區域的情況一樣。實際 上,填充數據元素(例如,數據元素的一個或更多個填充行和/或列)可以代替針對渲染輸出的未渲染的未選擇子區域生成的數據元素。
因此,實施方式可以包括利用與未關於區域進行渲染的採樣位置相對應的一個或更多個行和/或一個或更多個列的數據元素來填充所述數據元素輸出陣列。填充數據元素可以表示大致統一的數據。如下將更詳細討論的,這可以允許數據元素輸出陣列的有效壓縮,因為統一數據傾向于利用許多壓縮方案很好地壓縮。
在其它實施方式中,數據元素的子區域可以被放大,以使得數據元素的放大子區域在數據元素方面有基本相同的尺寸,就像該區域被渲染了整個區域那樣。然後,數據元素輸出陣列可以包括數據元素的放大子區域。所述放大可以包括最近鄰插值。在這些實施方式中,可供使用的縮放因子可以限於2的冪,例如,1/2n,其中,n是正整數。而且,如下將更詳細討論的,這可以允許數據元素的輸出陣列的有效壓縮,因為鄰近數據元素將表示相同的數據,並因此可以利用許多壓縮方案很好地壓縮。
可以根據需要使用所得到的數據元素輸出陣列。例如,數據元素輸出陣列可以與針對渲染輸出的其它區域生成的一個或更多個其它數據元素輸出陣列組合(例如,用於形成整體渲染輸出,如表示紋理或幀的渲染輸出,以供顯示)和/或可以儲存以供以後使用(作為(例如,壓縮的)渲染輸出,其表示紋理或圖像)和/或(例如,被處理以)輸出以供顯示。例如,區域和/或渲染輸出可以儲存在系統記憶體中的幀緩衝器中以供以後使用。
實施方式還可以包括壓縮數據元素輸出陣列和/或渲染輸出,例如,在儲存數據元素輸出陣列和/或渲染輸出以供以後使用之前。在這方面, 如上所示,申請人已經確定,在優選實施方式中生成的數據元素輸出陣列將傾向於良好地壓縮,因為該陣列可以具有表示大致統一數據的一個或更多個連續數據元素子區域。這種大致統一的數據子區域傾向于利用許多壓縮方案很好地壓縮。
可以利用任何期望和合適的壓縮方案來壓縮該輸出陣列和/或渲染輸出。壓縮方案例如可以包括圖像或圖形(紋理)壓縮方案。例如,壓縮方案可以允許隨機存取所得到的壓縮數據,例如,無需解壓縮整個壓縮的數據元素陣列。壓縮方案例如可以包括基於塊(block)的壓縮方案。壓縮方案還可以允許隨機訪問塊的編碼數據,例如,無需解壓縮整個塊的編碼數據。在實施方式中,壓縮方案可以基本上無損(例如,在解壓縮數據時基本上可以恢復原始數據元素的精度)。在實施方式中,壓縮方案可以包括大致如US 2013/0034309或US 2013/0195352中描述的壓縮方案,其全部內容透過引用併入於此。壓縮方案可以例如包括Arm幀緩衝壓縮(AFBC:Arm Frame Buffer Compression)。
在實施方式中,稍後可以從區域的(例如,壓縮的)數據元素輸出陣列採樣和/或導出一個或更多個採樣位置的一個或更多個數據值。採樣和/或導出一個或更多個數據值的處理可以包括讀入區域的(例如,壓縮的)數據元素輸出陣列的一些或全部數據(例如,從記憶體)。採樣和/或導出一個或更多個數據值的處理還可以包括解壓縮該區域的壓縮數據元素輸出陣列的一些或全部數據。
採樣和/或導出一個或更多個數據值的處理還可以包括放大區域的(例如,解壓縮的或未壓縮的)數據元素輸出陣列。然而,如下將更詳細討論的,在優選實施方式中,採樣和/或導出一個或更多個數據值的處理不包括 解壓縮和/或放大區域的(例如,壓縮的、解壓縮的或未壓縮的)數據元素輸出陣列。相反,可以直接採樣區域的(例如,壓縮的、解壓縮的或未壓縮的)數據元素輸出陣列。
為了便於從(例如,壓縮的、解壓縮的或未壓縮的)數據元素輸出陣列採樣和/導出採樣位置的數據值的處理,在渲染所討論的區域時使用的分辨率配置(例如,分辨率和/或縮放因子)可以被指示用於(例如,壓縮的、解壓縮的或未壓縮的)數據元素輸出陣列(並且例如與其一起儲存)。可以按照任何期望和合適的方式指示分辨率配置(例如,分辨率和/或縮放因子)。例如,分辨率配置(例如,分辨率和/或縮放因子)可以在元數據中指示,該元數據與區域的(例如,壓縮的、解壓縮的或未壓縮的)數據元素輸出陣列一起提供(例如,在輸出陣列的頭部中)。
然後可以讀入該分辨率配置(例如,分辨率和/或縮放因子),並且在採樣和/或導出所討論的數據值時使用分辨率和/或縮放因子。例如,可以將分辨率和/或縮放因子用於恰當地放大區域的(例如,解壓縮的或未壓縮的)數據元素輸出陣列。然而,在優選實施方式中,可以使用分辨率和/或縮放因子來恰當地映射用於採樣區域的(例如,壓縮的、解壓縮的或未壓縮)數據元素輸出陣列的採樣位置。
因此,實施方式還可以包括從對應於該渲染輸出的區域的數據元素輸出陣列採樣和/或導出採樣位置的數據值。採樣和/或導出採樣位置的數據值可以包括基於渲染區域所用的特定分辨率將該採樣位置映射至映射採樣位置,並且利用映射採樣位置來採樣和/或導出採樣位置的數據值。例如,這些實施方式可以允許直接從數據元素輸出陣列採樣和/或導出數據值,例如,無 需首先解壓縮和/或放大整個數據元素輸出陣列。這又可以透過避免需要讀入和處理整個數據元素輸出陣列以便採樣和/或導出數據值來減少採樣和/或導出數據值所需的頻寬和處理的量。
在本文描述的任何方面和實施方式中,採樣和/或導出一個或更多個數據值的處理可以由圖形處理器(例如,圖形處理器的紋理映射器)和/或由另一個合適數據處理器(如顯示處理器)來執行。
因此,根據本發明另一方面,提供了一種操作數據處理器的方法,該方法包括以下步驟: 從與渲染輸出的區域相對應的數據元素輸出陣列採樣和/或導出採樣位置的數據值,其中,所述區域是出於渲染目的將所述渲染輸出劃分成的多個區域中的一個區域,其中,採樣和/或導出所述採樣位置的數據值的步驟包括以下步驟:基於渲染所述區域所用的特定分辨率將所述採樣位置映射至映射採樣位置;以及利用所述映射採樣位置來採樣和/或導出所述採樣位置的數據值。
類似地,根據本發明另一方面,提供了一種數據處理器,該數據處理器包括:採樣電路,該採樣電路被配置成從與渲染輸出的區域相對應的數據元素輸出陣列採樣和/或導出採樣位置的數據值,其中,所述區域是出於渲染目的將所述渲染輸出劃分成的多個區域中的一個區域,其中,採樣和/或導出所述採樣位置的數據值的處理包括: 基於渲染所述區域所用的特定分辨率將所述採樣位置映射至映射採樣位置;以及利用所述映射採樣位置來採樣和/或導出所述採樣位置的數據值。
這些方面和實施方式根據需要可以包括本文在任何其它方面或實施方式中描述的任一個或更多個或所有優選和可選特徵。例如,採樣和/或導出一個或更多個數據值的處理可以由圖形處理器(例如,圖形處理器的紋理映射器)和/或由另一個合適數據處理器(如顯示處理器)來執行。
再例如,可以壓縮、解壓縮或不壓縮正被採樣的區域的數據元素輸出陣列。可以利用任何期望和合適的壓縮方案來壓縮輸出陣列和/或渲染輸出。壓縮方案例如可以包括圖像或圖形(紋理)壓縮方案。例如,壓縮方案可以允許隨機存取所得到的壓縮數據,例如,無需解壓縮整個壓縮的數據元素陣列。壓縮方案例如可以包括基於塊(block)的壓縮方案。壓縮方案還可以允許隨機訪問塊的編碼數據,例如,無需解壓縮整個塊的編碼數據。在實施方式中,壓縮方案可以基本上無損(例如,在解壓縮數據時基本上可以恢復原始數據元素的精度)。在實施方式中,壓縮方案可以包括大致如US 2013/0034309或US 2013/0195352中描述的壓縮方案,其全部內容透過引用併入於此。壓縮方案可以例如包括Arm幀緩衝壓縮(AFBC)。
再例如,採樣和/或導出數據值的處理可以不包括解壓縮和/或放大區域的(例如,壓縮的、解壓縮的或未壓縮的)數據元素輸出陣列。因此,在實施方式中,可以直接利用所映射的採樣位置來採樣區域的(例如,壓縮的、解壓縮的或未壓縮的)數據元素輸出陣列。
再例如,為了便於從(例如,壓縮的、解壓縮的或未壓縮的)數據元素輸出陣列採樣和/導出採樣位置的數據值的處理,在渲染所討論的區域時使用的分辨率配置(例如,分辨率和/或縮放因子)可以被指示用於(例如,壓縮的、解壓縮的或未壓縮的)數據元素輸出陣列(並且例如與其一起儲存)。可以以任何期望和合適的方式指示分辨率配置(例如,分辨率和/或縮放因子)。例如,分辨率配置(例如,分辨率和/或縮放因子)可以在元數據中指示,該元數據與區域的(例如,壓縮的、解壓縮的或未壓縮的)數據元素輸出陣列一起提供(例如,在輸出陣列的頭部中)。
然後可以讀入分辨率配置(例如,分辨率和/或縮放因子),並且在採樣和/或導出所討論的數據值時使用分辨率和/或縮放因子。具體來說,可以使用分辨率和/或縮放因子來恰當地映射採樣位置,該採樣位置被用於採樣區域的(例如,壓縮的、解壓縮的或未壓縮)數據元素輸出陣列。
可以根據需要使用以上述方面和實施方式的方式採樣和/或導出的數據值。例如,採樣和/或導出的數據值可以與一個或更多個其它採樣和/或導出的數據值組合和/或可以被用於進一步渲染(例如,作為紋理值)和/或進一步處理以供輸出(例如,用於顯示)。
如將清楚,可以按照本發明的方式對採樣位置採樣和/或導出一個或更多個數據值。類似地,可以按照本發明的方式對多個採樣位置中的每個採樣位置採樣和/或導出一個或更多個數據值。類似地,可以按照本發明的方式對多個相應數據元素輸出陣列(例如,一個或更多個渲染輸出的數據元素輸出陣列)中的每個數據元素輸出陣列採樣和/或導出一個或更多個數據值。
儘管上面已經具體參照對渲染輸出的給定區域進行渲染來描述了本發明,但應當清楚,在實踐中,可以按照本發明的方式以相應分辨率渲染多個區域,以生成相應數據元素輸出陣列(例如,一個或更多個渲染輸出的數據元素輸出陣列)。
類似地,儘管上面已經具體參照生成表示給定渲染輸出的不同分辨率區域來描述了本發明,但應當清楚,在實踐中,對於多個渲染輸出,可以重複該處理,例如,對於要利用中心凹式渲染顯示的一序列連續輸出幀。
對應地,在渲染輸出被用於虛擬實境顯示(並因此包括從多個不同視點渲染場景的多個不同渲染輸出,如立體渲染的「左眼」視圖和「右眼」視圖(其中,生成一個場景的兩個圖像,一個對應于從左眼看到的場景,一個對應於從右眼看到的場景,然後恰當地顯示,以便在觀看這些圖像時提供三維效果))的情況下,每個不同的渲染輸出(例如左眼圖像和右眼圖像兩者)可以按照本發明的方式利用中心凹式渲染來進行渲染。
如將從上述內容清楚的,本發明涉及圖形處理器在執行中心凹式渲染時的操作。由此,在實施方式中,首先可以認識到該圖形處理器將要執行中心凹式渲染,接著可以相應地觸發按照本發明的方式進行的操作。
可以識別(確定)圖形處理器何時將要以任何合適和期望的方式執行中心凹式渲染。在實施方式中,這可以根據與圖形處理任務或者要透過圖形處理器執行的任務相關聯的信息(諸如狀態信息和/或元數據)來確定,例如,由需要圖形處理的應用所提供的任務,例如,所述任務指示需要進行中心凹式渲染。例如,需要圖形處理器進行圖形處理的應用可以在請求圖形處理操作時指示將要執行中心凹式渲染。
在實施方式中,借助於函數調用來指示要執行中心凹式渲染的事實,即,需要圖形渲染的應用可以使用所述函數調用來指示需要這樣的渲染。因此,應用可以例如經由函數調用來指示將幾何形狀渲染成多個分辨率。
在識別出圖形處理器要執行中心凹式渲染時,可以以任何合適和期望的方式觸發按照本發明的方式操作圖形處理器(圖形處理器可以被配置成按任何合適和期望的方式按照本發明的方式操作)。
在實施方式中,圖形處理器的驅動程式向該圖形處理器指示(向圖形處理器發出命令)按照本發明的方式執行中心凹式渲染。相應地,可以恰當地配置任何著色程式,諸如在對渲染輸出進行渲染時要由圖形處理器執行的頂點著色和/或片段著色程式。這可以由圖形處理器的編譯器(針對圖形處理器的任何著色器)(透過圖形處理系統的編譯器處理電路)來完成。該編譯器可以在圖形處理系統的主處理器上執行(例如,正在請求圖形處理的應用在該主處理器上執行),例如作為在主處理器上執行的用於圖形處理流水線的驅動程式的一部分。若需要,其它排布結構也是可能的。
如將根據上述清楚,圖形處理器可以是包括主處理器的整個圖形處理系統的一部分,主處理器執行可以需要圖形處理器進行圖形處理的應用。主處理器可以向圖形處理器發送恰當的命令和數據,以控制圖形處理器執行圖形處理操作,並生成由在主處理器上執行的應用所需的圖形處理(渲染)輸出(包括以本發明的方式)。為此,該主處理器可以執行圖形處理器的驅動程式和用於編譯將由圖形處理器的可編程著色級來執行的著色器程式的一個或多個編譯器(所述編譯器可以是驅動程式的一部分)。
因此,圖形處理器可以與執行圖形處理器的驅動程式和/或圖形處理器的一個或多個編譯器的主處理器(其是整個圖形處理系統的一部分)通信。圖形處理器和/或主處理器還可以與顯示處理器和/或顯示由圖形處理器生成的幀或圖像的顯示器通信(因此圖形處理系統還可以包括顯示處理器和/或顯示由圖形處理器生成的幀或圖像的顯示器)。
類似地,圖形處理系統可以具有顯示處理器和/或顯示由圖形處理器生成的幀或圖像的顯示器和/或可以與所述顯示處理器和/或所述顯示器通信,和/或具有可以儲存由圖形處理器生成的渲染輸出(例如,用於後續處理(例如,顯示))的系統記憶體或者與所述系統記憶體通信。類似地,主處理器上優選存在指示要求執行中心凹式渲染的應用,該要求然後由例如在主處理器上執行的驅動程式識別,並且該主處理器(例如,其上的驅動程式)接著操作以指示圖形處理器相應地執行渲染。
除了上面描述的部件和各個級外,圖形處理器可以另外包括圖形處理器通常可以包括的任一個或更多個或所有其它處理級。因此,例如,圖形處理器可以包括圖元設置級、光柵化器和/或渲染器。在實施方式中,渲染器可以採用可編程片段著色器的形式或者包括可編程片段著色器。
圖形處理器還可以包括儲存圖塊樣本值的圖塊緩衝器和/或將圖塊緩衝器中的數據元素(例如,一旦圖塊緩衝器中的數據完成)寫出至外部(主)記憶體(例如,寫出至幀緩衝器)的寫出單元。
圖形處理器可以包括一個或更多個可編程著色級,諸如以下中的一個或更多個或全部:頂點著色級、外殼著色器、曲面細分(tessellation)級(例 如,在透過執行著色器程式來執行曲面細分的情況下)、域(評估)著色級(著色器)、幾何著色級(著色器)以及片段著色器。
圖形處理器還可以包含該圖形處理器可以包含的任何其它合適和期望的處理級,諸如深度(或深度和模板)測試器、混合器(blender)、寫出單元等。
圖形處理流水線的任何可編程著色級(諸如頂點著色器、片段著色器等)可以如所期望地並且按任何合適方式實現,並且可以分別和在合適時候執行任何期望和合適的著色(例如,頂點著色、片段著色等)功能。
每一個可編程處理級(著色器)可以包括任何合適的可編程硬體部件,如可編程處理電路。每一個可編程處理級(著色器)可以被提供為處理流水線的其它可編程級的分離電路部件,或者多個可編程處理級(著色器)可以共用一些或全部它們的可編程處理電路(它們因而被不同地編程以用作期望的可編程處理級(著色器))。
在實施方式中,所述數據(例如,圖形和/或顯示)處理器可以包括儲存在此描述的數據和/或儲存用於執行在此描述的處理的軟體的一個或更多個記憶體和/或記憶體裝置,和/或可以與其通信。
在實施方式中,本發明的各種功能可以在生成並輸出渲染的片段數據(其例如被寫入至顯示裝置的幀緩衝器)的單一圖形處理平臺上執行。
本發明可以在任何合適的系統中實現,如適當配置的基於微處理器的系統。在一些實施方式中,本發明在電腦和/或基於微處理器的系統中實現。
本發明優選地在可攜式裝置中實現,如行動電話或平板電腦。相信本發明將特別適用於需要進行中心凹式渲染的裝置,如適用於虛擬實境顯示裝置(如虛擬實境耳機)。
因此,根據本發明另一方面,提供了一種包括根據本發明任一個或更多個方面或實施方式的圖形處理器、數據處理器或系統的虛擬實境顯示裝置。相應地,根據本發明另一方面,提供了一種操作虛擬實境顯示裝置的方法,該方法包括以下步驟:按照本發明任一個或更多個方面或實施方式的方式操作虛擬實境顯示裝置(例如,操作其圖形處理器、數據處理器或系統)。
本發明的各種功能可以按任何期望和合適方式來執行。例如,本發明的功能可以如所期望地按硬體或軟體來實現。因此,本發明的各種功能性部件、級以及「裝置」可以包括合適的處理器或多個處理器、控制器或多個控制器、功能性單元、電路、處理邏輯、微處理器排布結構等,其可操作以執行各種功能等,如可以被編程成按期望方式操作的適當專用的硬體部件(處理電路)和/或可編程硬體部件(處理電路)。
這裡還應注意,如本領域技術人員將清楚的,本發明的各種功能等可以在指定處理器上複製和/或並行執行。同等地,若期望的話,各種處理級可以共用處理電路等。
本領域技術人員還應清楚,本發明的全部描述實施方式在合適時候,可以包括在此描述的優選和可選特徵中的任一個或更多個或全部。
根據本發明的方法可以至少部分地利用軟體(例如,電腦程式)來實現。由此,可以看到,當從另一些實施方式觀看時,本發明提供了當安裝在數據處理裝置上時特別適於執行在此描述的方法的電腦軟體;包括電腦軟體 代碼部分的電腦程式部件,當在數據處理裝置上運行該程式元素時,執行本文所述方法的電腦軟體代碼部分;以及包括代碼的電腦程式,當在數據處理系統上運行該程式時,所述代碼適於執行本文所述方法或多個方法的全部步驟。所述數據處理系統可以是微處理器、可編程FPGA(現場可編程門陣列)等。
本發明還擴展至包括這種軟體的電腦軟體載體,其在被用於操作圖形處理器、渲染器、數據處理器或包括數據處理裝置的其它系統時,使與所述數據處理裝置、所述處理器、渲染器或系統結合地執行本發明的方法的步驟。這種電腦軟體載體可以是物理儲存介質,諸如ROM晶片、CD ROM、RAM、快閃記憶體,或磁盤,或者可以是信號,諸如導線傳輸電子信號、諸如衛星的光信號或無線電信號等。
還應清楚,不是本發明的方法的所有步驟都需要透過電腦軟體來執行,因此,根據另一寬泛的實施方式,本發明提供了執行本文所述方法的步驟中的至少一個步驟的電腦軟體和安裝在電腦軟體載體上的這種軟體。
因此,本發明的裝置可以適當地具體實施為與電腦系統一起使用的電腦程式產品。這種實現可以包括在諸如電腦可讀介質(例如,軟盤、CD ROM、ROM、RAM、快閃記憶體,或硬碟)的有形非暫時介質上固定的一系列電腦可讀指令。其還可以包括可透過有形介質(包括但不限於光通信線路或模擬通信線路),或者利用無線技術(包括但不限於微波、紅外線或其它傳輸技術)無形地,經由調制解調器或其它接口裝置傳送至電腦系統的一系列電腦可讀指令。該系列電腦可讀指令具體實施先前在此描述的全部或部分功能。
本領域技術人員應當清楚,這種電腦可讀指令可以採用許多編程語言來編寫,以與許多電腦架構或操作系統一起使用。而且,這種指令可以利 用當前或將來的任何記憶體技術來儲存,包括但不限於半導體、磁性或光學,或者利用當前或將來的任何通信技術來傳送,包括但不限於光、紅外線或微波。設想的是,這種電腦程式產品可以分發為具有隨附的列印或電子文檔的可去除介質(例如,收縮包裝軟體),利用電腦系統預先加載(例如,預先加載在系統ROM或固定盤上),或者透過網路(例如,網際網路或全球資訊網)從伺服器或電子佈告欄分發。
100:電腦圖形處理系統
102:應用
104:主處理器
106:圖形處理器
108:驅動程式
200:圖形處理流水線
202:頂點著色器
204:外殼著色器
206:曲面細分器
208:域著色器
210:幾何著色器
212:圖塊化器
214:光柵化級
216:模板測試級
218:片段著色級
220:模板測試級
222:混合器
224:圖塊緩衝器
226:寫出單元
228:幀緩衝器
300:場景
302:右下圖塊
304:注視點
400:處理
402:步驟
404:幾何形狀列表
406:步驟
408:步驟
410:縮放紋理
412:縮放因子
414:步驟
416:渲染子區域
418:步驟
420:步驟
422:步驟
500:區域
502:子區域
504:子區域
600:渲染輸出
602:注視點
604:圖塊
606:圖塊
608:渲染輸出
610:注視點
612:中心圖塊
614:周邊圖塊
700:處理
702:步驟
704:步驟
706:縮放因子
708:縮放紋理
710:步驟
下面,僅透過示例的方式並且參照附圖,對本發明的許多實施方式進行描述,其中:圖1示出了根據本發明實施方式的電腦圖形處理系統;圖2示出了根據本發明實施方式的可由圖形處理器實現的圖形處理流水線;圖3示出了根據本發明實施方式的將以不同分辨率渲染的場景的區域;圖4例示了根據本發明實施方式的以特定分辨率對渲染輸出區域進行渲染的處理;圖5示出了根據本發明實施方式的待渲染的渲染輸出的區域的子區域;圖6A示出了根據本發明實施方式的已經以不同分辨率渲染的渲染輸出的區域; 圖6B示出了根據本發明另一實施方式的已經以不同分辨率渲染的渲染輸出的區域;圖7例示了根據本發明實施方式的對渲染輸出進行採樣的處理;以及圖8示出了根據本發明實施方式的用於對渲染輸出進行採樣的原始採樣位置和映射採樣位置。
相同標號在合適情況下被用於圖中的相同組件。
下面,在處理電腦圖形以顯示的背景下對本發明的許多實施方式進行描述。
圖1示出了電腦圖形處理系統100。在主處理器104上執行的諸如遊戲的應用102將需要透過關聯的圖形處理器(圖形處理單元(GPU))106來執行的圖形處理操作。為此,該應用將生成API(應用編程接口)函數調用,其透過運行在主處理器104上的圖形處理器106的驅動程式108來解釋,以生成針對圖形處理器106的恰當命令,從而生成該應用102所需的圖形輸出。為此,響應於來自運行在主處理器104上的用於圖形輸出(例如,用於生成要顯示的幀)的應用102的命令,將一組「命令」提供給圖形處理器106。
圖2更詳細地示出本發明的可由圖形處理器106實現的圖形處理流水線200。
本實施方式的圖形處理器106是基於圖塊(tile)的渲染器,並由此將生成渲染輸出數據陣列的圖塊,如要生成的輸出幀。該渲染輸出數據陣列 可以是旨在在顯示裝置(如螢幕或列印機)上顯示的輸出幀,但例如也可以包括旨在供以後渲染步驟中使用的中間數據(還已知為「渲染至紋理」輸出)等。
在基於圖塊的渲染中,不是將整個渲染輸出(例如,幀)按即時模式有效地一下子處理為渲染,而是將該渲染輸出(例如,要顯示的幀)劃分成多個較小的區域(面積),通稱為「圖塊」。每一個圖塊(區域)都單獨地渲染(典型地一個接一個地渲染),並接著將所渲染的圖塊(區域)重新組合,以提供完整的渲染輸出,例如,用於顯示的幀。在這樣的排布結構中,渲染輸出通常被劃分成規則尺寸和形狀的區域(圖塊)(例如通常是正方形或矩形),但這不是必要的。
在顯示電腦圖形圖像時,電腦圖形圖像通常首先被定義為一系列圖形幾何形狀,通常為一系列圖元(多邊形),所述圖形幾何形狀(例如,圖元)接著依次被劃分(光柵化)成用於圖形渲染的圖形片段。在正常圖形渲染操作期間,渲染器將修改與每一個片段相關聯的(例如)顏色(紅、綠、藍,RGB)和透明度(alpha,α)數據,使得可以正確顯示所述片段。一旦片段已經完全經過渲染器,那麼就將它們的關聯數據值儲存在記憶體中,準備輸出,例如用於顯示。
圖2示出了與本實施方式的操作相關的圖形處理器106的主要部件和流水線級。如本領域技術人員應當清楚,可以存在圖2中未例示的圖形處理器106(圖形處理流水線200)的其它部件和級。
在此還應注意,圖2僅是示意性的,而且例如,實際上,所示功能性單元和流水線級可以共用有效硬體電路,即使它們在圖2中被示意性地示出為分離的級。還應清楚,如圖2所示的圖形處理流水線200的每一個級、部件 和單元等都可以如所期望地實現,並因此例如包括用於執行必需操作和功能的恰當電路和/或處理邏輯等。
如圖2所示,圖形處理器106執行的圖形處理流水線200包括多個級,包括頂點著色器202、外殼著色器204、曲面細分器(tesselator)206、域著色器208、幾何著色器210、圖塊化器(tiler)212、光柵化級214、早期Z(深度)和模板測試級216、採用片段著色級形式的渲染器級218、後期Z(深度)和模板測試級220、混合級222、圖塊緩衝器224,以及下採樣與寫出(多重採樣分辨)級226。
頂點著色器202採取與為了要生成的輸出而定義的頂點等相關聯的輸入數據值,並且處理那些數據值以生成由圖形處理流水線200的隨後級使用的一組對應「頂點著色後的」輸出數據值。
要處理的每個圖元通常由一組頂點定義並表示為一組頂點。圖元的各個頂點通常具有與其相關聯的一組「屬性」,即,該頂點的一組數據值。這些屬性通常包括位置數據和其它非位置數據(變化),例如,定義所討論的頂點的顏色、光線、法線(normal)、紋理坐標等。
對於要由圖形處理器106生成的給定輸出,通常存在為了所討論的輸出而定義的一組頂點。然後,為了輸出而要處理的圖元將被指示為包括正在生成的圖形處理輸出的頂點集中的給定頂點。
頂點著色操作進行操作以將每個頂點的屬性變換成後續圖形處理操作的期望形式。例如,這可以包括將頂點位置屬性從它們初始被限定的世界或用戶空間變換至要顯示圖形處理系統的輸出的畫面空間,修改輸入數據以解決要渲染的圖像中的光照影響等。
外殼著色器204針對多組面片(patch)控制點執行操作,並且生成已知為面片常數的附加數據。曲面細化級206細分幾何形狀,以創建外殼的較高階表示,並且域著色器208對由曲面細分級輸出的頂點執行操作(類似於頂點著色器)。幾何著色器210處理諸如三角形、點或線的整個圖元。
響應於提供給圖形處理器106的命令和頂點數據,這些級與頂點著色器202一起有效地執行所有必需片段前端操作(諸如變換與光照操作)和圖元設置以設置要渲染的幾何圖形。
一旦所有要渲染的圖元都已恰當設置,圖塊化器212然後確定需要針對渲染輸出為了處理的目的而被劃分成的每個圖塊需要處理哪些圖元。要做到這一點,圖塊化器212將待處理的每個圖元的位置與圖塊位置進行比較,並將圖元添加至其確定該圖元可能(潛在地)落入的各個圖塊的相應幾何形狀(圖元)列表。將圖元分類和分箱(binning)成圖塊列表的任何合適和期望的技術(如精確分箱,或邊界框分箱或其間的任何事物)都可以用於圖塊化處理。
一旦以這種方式為每個渲染圖塊準備了要渲染的幾何形狀(圖元)列表(圖元列表),就儲存該圖元列表以供使用,例如,在渲染所討論的圖塊時允許系統識別需要考慮(和渲染)哪些圖元。
一旦圖塊化器212完成了圖塊列表的準備(要針對每個圖塊處理的圖元的列表),則可以渲染每個圖塊。
為此,每個圖塊由圖2中所示的位於圖塊化器212之後的圖形處理流水線200級來處理。
因此,當處理給定圖塊時,將要針對該圖塊(針對該圖塊的圖塊列表中所列出的)處理的每個圖元傳遞至光柵化器214。
圖形處理流水線200的光柵化級214操作以將圖元光柵化成單獨圖形片段以供處理。為此,光柵化器214將圖元光柵化成採樣點,並且生成具有恰當位置(表示恰當採樣位置)的圖形片段以渲染圖元。
由光柵化器214生成的片段然後被向前發送至流水線的其餘部分以供處理。
早期Z/模板級216對其從光柵化器214接收到的片段執行Z(深度)測試,以查看在該級是否可以丟棄(剔除)任何片段。為此,早期Z/模板級216將從光柵化器214發出的片段(的關聯)的深度值與已渲染的片段的深度值(這些深度值被儲存在作為圖塊緩衝器224的一部分的深度(Z)緩衝器中)進行比較,以確定新的片段是否會被已渲染的片段遮蔽(或者不遮蔽)。同時,執行早期模板測試。
透過片段早期Z和模板測試級216的片段然後被發送至片段著色級218。片段著色級218對透過早期Z和模板測試的片段執行恰當的片段處理操作,以處理片段從而生成恰當的渲染片段數據。
該片段處理可以包括任何合適和期望的片段著色處理,諸如針對片段執行片段著色器程式、向片段應用紋理、向片段應用霧化或其它操作等,以生成恰當的片段數據。在本實施方式中,片段著色級218採用著色器流水線的形式(可編程片段著色器)。
然後,存在「後期」片段Z和模板測試級220,其尤其是對著色片段執行流水線深度測試的一端,以確定在最終圖像中是否將實際上看到渲染片段。透過將比較從片段著色級218發出的片段(的關聯)的深度值與已渲染的片段的深度值(如儲存在深度緩衝器中)進行比較,該深度測試針對儲存在圖塊 緩衝器224的Z緩衝器中的片段位置使用Z緩衝值,來確定新片段的片段數據是否應當替換已渲染的片段的片段數據。該後期片段深度和模板測試級220還對片段執行任何必需的「後期」阿爾法和/或模板測試。
透過後期片段測試級220的片段然後在混合器222中經受(若需要的話)與已儲存在圖塊緩衝器224中的片段的任何必需混合操作。在該級還執行對於片段而言必需的任何其它剩餘操作(如抖動(dither)等)(未示出)。
最後,(混合後的)輸出片段數據(值)被寫入至圖塊緩衝器224,它們例如可以從圖塊緩衝器224被輸出至幀緩衝器228供以後顯示。輸出片段的深度值還被恰當地寫入圖塊緩衝器224內的Z緩衝器。因此,圖塊緩衝器224儲存顏色和深度緩衝器,顏色和深度緩衝器分別儲存該緩衝器所表示的每一個採樣點(本質上,正在處理的圖塊的每一個採樣點)的恰當顏色等或Z值。這些緩衝器儲存表示整體渲染輸出(例如,要顯示的圖像)的區域(圖塊)的片段數據陣列,並且緩衝器中的相應採樣值集合對應於整體渲染輸出的相應像素(例如,每2×2的採樣值集合可以對應於一輸出像素,其中,使用4x多重採樣)。圖塊緩衝器被設置為RAM的一部分,其位於圖形處理流水線(晶片)上(本地)。
來自圖塊緩衝器224的數據被輸入至下採樣(多重採樣分辨)寫出單元226,並且從該處輸出(寫回)至外部記憶體輸出緩衝器,如顯示裝置(未示出)的幀緩衝器228。該顯示裝置可以由顯示處理器(未示出)提供用於顯示的數據,並且例如可以包括具有像素陣列的顯示器,諸如電腦監視器或列印機。
下採樣與寫出單元226將儲存在圖塊緩衝器224中的片段數據下採樣為用於輸出緩衝器(裝置)的恰當分辨率(即,使得生成與輸出裝置的像素相對應的像素數據陣列),以生成用於輸出至輸出緩衝器的(像素的)輸出數 據元素。在這方面,可以為每個區域(圖塊)提供相應多重採樣(多重採樣抗混疊(anti-aliasing)或「MSAA」)設置。例如,沒有多重採樣或(例如,2x、4x、8x、16x等的)多重採樣可以用於給定區域(圖塊)。例如,需要較高分辨率渲染的區域(圖塊)可以用較高級別的多重採樣(即,每個輸出像素的更多數量的採樣點)來渲染。
一旦已處理了渲染輸出的圖塊並且將其數據導出至主記憶體(例如,主記憶體中的幀緩衝器228)以儲存,就接著處理下一圖塊,直到處理了足夠的圖塊以生成全部渲染輸出(例如,要顯示的幀(圖像))為止。接著,針對下一渲染輸出(例如,幀)重複該處理。
可以從圖2看出,圖形處理流水線200包括許多可編程處理或「著色器」級,即,頂點著色器202、外殼著色器204、域著色器208、幾何著色器210以及片段著色器218。這些可編程著色器級執行具有一個或更多個輸入變量並生成多組輸出變量的相應著色器程式。通常,所討論的著色器程式將針對要處理的每個工作項(例如,在頂點著色器的情況下的頂點)來執行。通常,將為要處理的每個工作項發出執行線程,接著該線程將執行著色器程式中的指令以生成所需的「著色後的」輸出數據。
應用102提供要利用諸如GLSL、HLSL、OpenCL等高級著色器編程語言來執行的著色器程式。接著,這些著色器程式透過著色器語言編譯器翻譯成用於目標圖形處理流水線200的二進制代碼。這可以包括在編譯器內創建程式的一個或更多個內部(中間)表示。編譯器例如可以是驅動程式108的一部分,並且存在使編譯器運行的特殊API調用。編譯器執行由此可以被看作響應于由應用生成的API調用而由驅動程式完成的例如繪製調用準備的一部分。
圖形處理器106的其它排布結構當然是可能的。
本發明涉及這樣的情況,即,圖1的圖形處理器106被用於透過按照不同分辨率對渲染輸出的不同區域(圖塊)進行渲染,然後組合那些不同分辨率的區域(圖塊)以提供分辨率在該圖像上變化的輸出中心凹式圖像,來執行中心凹式渲染。
圖3示出了要按照本發明的方式渲染的場景300的示例。將表示場景300的渲染輸出劃分成將被單獨渲染的多個尺寸相等的非交疊正方形區域(圖塊),如右下圖塊302。還示出了圖塊位置的x坐標和y坐標。例如,右下圖塊302具有坐標3,3。
如在圖3中示出,中心凹式渲染的注視點304被確定為朝向場景300的左上側。因此,在該實施方式中,當執行中心凹式渲染時,圖形處理器106被控制成以較高分辨率渲染朝向渲染輸出的左上方的圖塊,而朝向渲染輸出的右下方的圖塊將以逐漸降低的分辨率渲染,然後恰當地組合不同分辨率區域以提供例如被顯示的輸出「中心凹式」圖像(輸出幀)。
在本實施方式中,需要渲染的應用102指示需要中心凹式渲染,其向圖形處理器106的驅動程式108指示渲染輸出的區域要按照多個分辨率連同與所述分辨率相關聯的縮放因子進行渲染(以及可能期望的任何其它渲染等配置)。響應于來自應用102的這種命令,驅動程式108配置恰當的圖塊化和渲染任務,並且發送給圖形處理器106以按現在將參照圖4所示的處理400描述的方式執行中心渲染。
如圖4所示,在這個實施方式中,在步驟402中,場景的幾何形狀被設置和圖塊化(即,生成圖元並將其分類到相應渲染圖塊的列表中)僅僅一 次,以提供單個圖塊幾何形狀列表集,該圖塊幾何形狀列表集然後在渲染每個相應區域(針對渲染每個相應區域的片段處理)時共同使用(共享)。
具體地,圖形處理器106被控制成按照輸出圖像所需要的最高分辨率,針對正在渲染的場景300僅執行一次頂點位置處理(著色)和幾何形狀列表(圖元列表)生成處理(圖塊化處理)二者。可以根據需要執行這些處理,如根據圖形處理器106針對這些處理的正常操作,但是將按照要渲染的最高分辨率利用場景300的幾何形狀來完成。
如圖4所示,一旦以這種方式準備了幾何形狀列表(圖塊列表),則在步驟406利用圖塊的恰當「每圖塊」幾何形狀列表404來提取所討論區域的幾何形狀(圖元)。
接著,在步驟408中,基於與所討論的圖塊的期望分辨率相對應的縮放因子412恰當地縮放所述幾何形狀。在這個實施方式中,縮放因子是透過對應用102提供的「縮放紋理」410(其包括渲染輸出的相應區域的縮放因子陣列)進行採樣而取得的。在與渲染輸出內的所討論的圖塊的位置相對應的陣列位置對縮放紋理410進行採樣。
在步驟408中,對於最高分辨率的圖塊(具有縮放因子1),提取的幾何形狀可以簡單地不變地使用。然而,針對其它較低分辨率的圖塊,按所討論的區域的恰當縮放因子來縮小所提取的按最高分辨率準備的幾何形狀。這種縮小是作為頂點位置加載操作的一部分完成的,但根據需要,其它佈置也是可能的。
在這個實施方式中,使用以下等式來進行縮放:tile_origin=tile_coord * tile_size
internal_coord=primitive_coord-tile_origin
new_coord=tile_origin+(internal_coord * scaling factor[tileID])
其中:tile_size是採樣位置(像素)的圖塊的x或y尺寸;tile_coord是渲染輸出中的圖塊的x或y圖塊坐標;tile_origin是渲染輸出中的圖塊的原點的x或y位置;primitive_coord是渲染輸出中的圖元的坐標;internal_coord是圖元相對於圖塊原點的內部坐標;tileID是圖塊的唯一標識符;scaling_factor[tileID]是具有該圖塊ID的圖塊的縮放因子;以及New_coord是要在渲染圖塊時使用的圖元的縮放後坐標。
例如,針對位於右下角並因此具有圖塊坐標3,3的32×32採樣位置(像素)圖塊,該圖塊的原點位置為96,96(即,32×3,32×3)。然後,對於在渲染輸出中具有坐標112,104的圖元,該圖元相對於圖塊原點的內部坐標為16,8(即,112-96,104-96)。然後,如果該圖塊要以一半分辨率進行渲染並因此具有指示的1/2縮放因子,則在將圖元光柵化成圖形片段並接著渲染那些片段時要使用的該圖元的縮放坐標為104,100(即,96+(16 * 0.5),96+(8 * 0.5))。
還如步驟408中所示,按照期望分辨率,還選擇了要關於所討論區域進行光柵化和渲染的採樣位置的恰當子區域。
圖5示出了被選擇成關於渲染輸出的區域進行光柵化和渲染的採樣位置的子區域。如在圖5中示出,在這個實施方式中,左上方的圖塊將按照 全分辨率渲染,因此選擇包括左上方圖塊的所有採樣位置的區域500用於光柵化和渲染。
如還在圖5中示出,在這個實施方式中,將按照隨著離開左上方圖塊而逐漸降低的分辨率來渲染圖塊,因此,選擇採樣位置的逐漸變小的子區域在離開左上方圖塊時進行光柵化和渲染。例如,如在圖5中示出,選擇採樣位置的較小子區域502,用於執行關於右下方圖塊的光柵化和渲染,留下採樣位置的未選擇的子區域504,該子區域將不會關於右下方圖塊進行光柵化和渲染。例如,當按照一半分辨率渲染時,選擇採樣位置的1/2的行和1/2的列,這意味著選擇包括1/4採樣位置的子區域用於關於該區域的光柵化和渲染並且不選擇包括3/4採樣位置的未選擇區域用於關於該區域的光柵化和渲染。
這裡應注意,幾何形狀縮放和子區域選擇處理確保給定子區域仍然覆蓋與未縮放的幾何形狀和完整圖塊相同的場景300的內容,但是這些處理使用較少的渲染數據元素來完成。這允許稍後恢復無間隙渲染輸出,例如,透過擴展每個子區域來填充其對應圖塊。
再次參照圖4,在步驟414,然後,跨採樣位置的所選擇子區域對縮放的幾何形狀進行光柵化,並且渲染所得到的片段以生成被寫入至圖塊緩衝器的數據元素的渲染子區域416。
在這個級,如果所討論數據元素的子區域是必需的,則數據元素的子區域還補充有表示統一數據的恰當行和列的填充數據元素,使得圖塊緩衝器中的數據元素陣列在數據元素方面具有相同的尺寸,因為要不就會使該區域被整個渲染。這可以允許以較低分辨率渲染區域對後續處理級是基本透明的。如下將更詳細討論的,該統一數據也傾向於用許多常用壓縮方案很好地壓縮。
在其它實施方式中,可以放大數據元素的子區域,使得數據元素輸出陣列在數據元素方面有基本相同的尺寸,因為要不就會使該區域被整個渲染。而且,這可以允許以較低分辨率渲染區域對後續處理級是基本透明的。在這些實施方式中,縮放因子可以限制成2的冪,並且所述放大可以包括最近鄰插值,使得所述放大將導致表示相同值的鄰近數據元素。而且,基本相似的數據的子區域將可以用許多常用壓縮方案很好地壓縮。
接著,在步驟418中,將數據元素陣列輸出至記憶體中的幀緩衝器。渲染該渲染輸出的各個圖塊的分辨率可以與渲染輸出一起儲存,以便於後續使用該渲染輸出。例如,縮放紋理可以與渲染輸出一起儲存。
圖6A示出了根據本實施方式的已經按照不同分辨率渲染的渲染輸出的區域600。在這個實施方式中,如上所述,注視點602朝向渲染輸出600的左上角。因此,左上方的圖塊604是按照全分辨率渲染的,而朝向右下角的圖塊(如右下方的圖塊606)是按照逐漸降低的分辨率渲染的。在這個實施方式中,透過跟蹤觀看者的眼睛移動來確定注視點602,因此,注視點602不一定是中心,而是可以逐幀移動。因此,渲染這些圖塊的分辨率可以根據觀看者的頭部或眼睛移動而逐幀地改變。
圖6B示出了根據另選實施方式的已經按照不同分辨率渲染的渲染輸出的區域608。在這個實施方式中,渲染輸出608被劃分為32×32個採樣位置(像素)的5×5個圖塊。在這個實施方式中,注視點610朝向渲染輸出608的中心。因此,中心圖塊612按照全分辨率渲染,而外側圖塊(如周邊圖塊614)按照逐漸降低的分辨率渲染。在這個實施方式中,使用了中心凹式渲染,因為渲染輸出將經受桶形失真以校正透鏡失真,因此外側圖塊將被縮小並且可以按較 低分辨率渲染。因此,該實施方式中的注視點602固定在將被用於觀看所顯示的渲染輸出的透鏡的中心處。
因此,從上面可以看出,當執行這樣的中心凹式渲染時,最高分辨率區域可以根據一個或多個注視點(例如可以利用凝視跟蹤傳感器來確定,以識別觀察者實際在看哪裡)的位置相對於渲染輸出的中心偏移,或者可以例如固定在渲染輸出的中心處。
再次參照圖4,在步驟420中,可以例如利用Arm幀緩衝壓縮(AFBC)來壓縮幀緩衝器的內容。如上所述,幀緩衝器的內容將傾向于利用AFBC和其它類似壓縮方案很好地壓縮,這些壓縮方案可以有效地壓縮統一數據的區域。例如,在AFBC中,每個16×16或32×8的數據元素「AFBC塊」在內部由16個4×4的數據元素塊組成,其皆被劃分成四個2×2的數據元素塊。如果塊的數據元素都表示相同的數據,則可以減少4×4或2×2的數據元素塊所需的數據量。而且,4×4的數據元素塊的數據可以用該塊是表示相同數據的另一4×4數據元素塊的副本的指示來替換。該指示在AFBC塊的標準頭部內提供,因此不需要額外的位。因此,AFBC透過有效地編碼由渲染處理引入的統一數據,而允許有效地儲存渲染輸出,並且透過使用無損壓縮方案,AFBC採用剩餘的數據元素。AFBC還允許隨機存取來自壓縮數據的4×4塊的數據值,而無需解壓縮整個壓縮的數據元素陣列。例如,在US 2013/0034309或US 2013/0195352中描述了AFBC,其全部內容透過引用併入於此。
接著,在步驟422中,將壓縮數據寫回至記憶體。用於對渲染輸出的各種圖塊進行渲染的分辨率可以與壓縮數據一起儲存(例如,在壓縮數據塊 的頭部中),以便於後續使用該渲染輸出。可以根據需要使用渲染輸出600。例如,渲染輸出600然後可以輸出至顯示裝置或者在用作紋理時被採樣。
圖7例示了對已經按照不同分辨率渲染的渲染輸出進行採樣以採樣和/或導出一個或更多個數據值(例如,在紋理映射中使用)的處理700。在本實施方式中,渲染輸出被圖形處理器採樣,但在其它實施方式中,渲染輸出可以由另一合適的數據處理器採樣,如用於顯示的顯示處理器。在本實施方式中,對壓縮的渲染輸出直接採樣,無需先解壓縮並放大該渲染輸出。然而,在其它實施方式中,被採樣的渲染輸出可能不是和/或可能未被壓縮。
如在圖7中示出,在步驟702,在渲染輸出中具有坐標(u,v)的採樣位置處請求樣本。
接著,在步驟704,基於用於所討論的圖塊的縮放因子706,將坐標映射至映射採樣位置的新坐標(u',v')。在這個實施方式中,透過對縮放紋理708進行採樣來獲取縮放因子。在與渲染輸出內的所討論圖塊的位置相對應的位置來採樣縮放紋理708。
然而,如上所述,在其它實施方式中,相反地,可以從所討論的壓縮數據塊的頭部獲取縮放因子。在這種情況下,可以讀入與未映射採樣位置相對應的相關16×16或32×8 AFBC塊的頭部以獲取縮放因子,因為未映射採樣位置將仍然落在恰當的AFBC塊內。
在這個實施方式中,接著使用以下等式來進行映射:tile_origin=tile_coord * tile_size
internal_coord=sampling_coord-tile_origin
mapped_coord=tile_origin+(internal_coord * scaling factor[tileID])
其中:tile_size是採樣位置(像素)的圖塊的x或y尺寸;tile_coord是渲染輸出中的圖塊的x或y圖塊坐標;tile_origin是渲染輸出中的圖塊的原點的x或y位置;sampling_coord是採樣位置的坐標;internal_coord是採樣位置相對於圖塊原點的內部坐標;tileID是圖塊的唯一標識符;scaling_factor[tileID]是用於具有圖塊ID的圖塊的縮放因子;以及mapped_coord是要在採樣渲染輸出時使用的映射採樣位置的映射坐標。
例如,對於具有圖塊坐標2,1的32×32採樣位置(像素)圖塊,該圖塊的原點位置為64,32(即,32×2,32×1)。然後,對於渲染輸出中具有坐標80,56的採樣位置,該採樣位置相對於圖塊原點的內部坐標為16,24(即,80-64,56-32)。然後,如果圖塊的縮放因子為1/2,則要在採樣渲染輸出時使用的採樣位置的縮放坐標為72,44(即,64+(16*0.5),32+(24*0.5))。
接著,在步驟710,讀入與映射採樣位置相對應的相關4×4或2×2塊的編碼數據,並且從所述相關塊採樣和/或導出與映射採樣位置相對應的數據值。因此,本實施方式可以避免讀入和解碼整個16×16或32×8 AFBC塊然後放大解碼塊的需要。
圖8例示了上面的例子。圖8示出了相對於圖3的場景300的原始採樣位置。圖8還示出了相對於圖6的渲染輸出600的原始採樣位置和映射採樣位置。如圖所示,採樣位置恰當地向上和向左移動。
設想了除上面已經描述的實施方式之外的其它實施方式。
例如,代替圖塊的恆定分辨率,圖塊可以具有可變分辨率配置(profile)。在這些實施方式中,代替利用形式x'=x*因子的等式來縮放坐標,可以利用形式x'=x *(a+bx+cy)的等式來縮放坐標,其中,x'是新的x坐標,x和y是從圖塊原點測量的距離,並且a、b及c是常數。與分段常數近似相反,這將允許基礎「理想」分辨率曲線的分段線性近似。另一變型例是利用形式x'=x *(a+b * x_global+y * y_global)的等式來縮放坐標,其中,a、b及c是全域常數,和x_global和y_global是測得的相距渲染輸出的注視點的距離。這允許基於注視點的全域線性分辨率配置僅具有幾個參數。
再例如,為了減少在按照不同分辨率渲染的圖塊邊界處出現的塊偽影的可能性,可以在圖塊之間提供一些交疊以在分辨率水平之間平滑地混合。一種可實現的方式是還渲染圖塊的所選擇子區域之外的區域,然後在從渲染輸出採樣時對來自相鄰圖塊的渲染數據進行ALPHA混合。在這些實施方式中,圖塊化器可以使用比實際圖塊尺寸大的邊界框來進行圖塊化。
根據上述,可以看出,本發明至少在其優選實施方式中,可以在執行可變分辨率渲染時提供有效且靈活的圖形處理。這至少在本發明的優選實施方式中,透過以下步驟實現:獲取渲染輸出的區域的期望分辨率,然後根據期望分辨率來獲取要針對所述區域進行渲染的縮放圖形幾何形狀,並且選擇所述區域的、要關於所述區域進行渲染的子區域。然後可以利用所述縮放圖形幾何形狀來渲染所選擇子區域,以便提供根據所述期望分辨率渲染的數據元素子區域。
400:處理
402:步驟
404:幾何形狀列表
406:步驟
408:步驟
410:縮放紋理
412:縮放因子
414:步驟
416:渲染子區域
418:步驟
420:步驟
422:步驟
600:渲染輸出

Claims (13)

  1. 一種操作圖形處理器的方法,該方法包括以下步驟:執行關於渲染輸出的區域的圖形處理,其中,所述區域是出於渲染目的將所述渲染輸出劃分成的多個區域中的一個區域,其中,執行關於所述區域的圖形處理的步驟包括以下步驟:獲取所述區域的期望分辨率配置;根據所述區域的所述期望分辨率配置,獲取要針對所述區域渲染的縮放圖形幾何形狀;根據所述區域的所述期望分辨率配置,選擇所述區域的、要關於所述區域進行渲染的子區域;以及執行關於所述區域的渲染,其中,執行關於所述區域的渲染的步驟包括以下步驟:利用所述縮放圖形幾何形狀來渲染所述渲染輸出的所述子區域,由此提供數據元素渲染子區域;以及針對所述區域,輸出包括所述數據元素渲染子區域的數據元素輸出陣列;其中,選擇要關於所述區域進行渲染的所述子區域的步驟包括以下步驟:選擇所述區域的一行或更多行和/或一列或更多列採樣位置,來組成要進行渲染的所述子區域,並在所述子區域執行渲染,並且執行關於所述區域的渲染的步驟包括以下步驟:執行關於所選擇的一行或更多行和/或一列或更多列採樣位置的渲染。
  2. 根據請求項1所述的方法,其中: 獲取所述區域的所述期望分辨率配置的步驟包括以下步驟:獲取針對所述區域指示的特定縮放因子,並且獲取要針對所述區域渲染的所述縮放圖形幾何形狀的步驟包括以下步驟:根據針對所述區域指示的所述特定縮放因子,縮放針對所述區域指示的圖形幾何形狀。
  3. 根據請求項1或2所述的方法,所述方法還包括以下步驟:使用與未關於所述區域進行渲染的採樣位置相對應的一行或更多行和/或一列或更多列數據元素來填充所述數據元素輸出陣列。
  4. 一種操作數據處理器的方法,該方法包括以下步驟:從與渲染輸出的區域相對應的數據元素輸出陣列採樣和/或導出採樣位置的數據值,其中,所述區域是出於渲染目的將所述渲染輸出劃分成的多個區域中的一個區域,且所述區域是通過選擇要進行渲染的所述區域的子區域以特定分辨率來渲染,並關於所述子區域執行渲染以提供所述數據元素輸出陣列,所述子區域是通過選擇所述區域的一行或更多行和/或一列或更多列採樣位置來組成要進行渲染的所述子區域,其中,採樣和/或導出所述採樣位置的數據值的步驟包括以下步驟:基於渲染所述區域所用的特定分辨率將所述採樣位置映射至映射採樣位置;以及利用所述映射採樣位置來採樣和/或導出所述採樣位置的數據值。
  5. 根據請求項4所述的方法,其中,所述數據元素輸出陣列包括壓縮數據元素輸出陣列,並且其中,利用所述映射採樣位置對所述壓縮數據元素輸出陣列進行直接採樣。
  6. 根據請求項4或5所述的方法,其中,從所述數據元素輸出陣列採樣和/或導出所述採樣位置的數據值的步驟不包括解壓縮和/或放大所述數據元素輸出陣列。
  7. 一種圖形處理器,該圖形處理器包括:處理電路,該處理電路被配置成執行關於渲染輸出的區域的圖形處理,其中,所述區域是出於渲染目的將所述渲染輸出劃分成的多個區域中的一個區域,其中,執行關於所述區域的圖形處理的處理包括:獲取所述區域的期望分辨率配置;根據所述區域的所述期望分辨率配置,獲取要針對所述區域渲染的縮放圖形幾何形狀;根據所述區域的所述期望分辨率配置,選擇所述區域的、要關於所述區域進行渲染的子區域;以及執行關於所述區域的渲染,其中,執行關於所述區域的渲染的處理包括:利用所述縮放圖形幾何形狀來渲染所述渲染輸出的所述子區域,由此提供數據元素渲染子區域;以及輸出電路,該輸出電路被配置成針對所述區域,輸出包括所述數據元素渲染子區域的數據元素輸出陣列;其中,所述處理電路被配置成在選擇要關於所述區域進行渲染的所述子區域時,選擇所述區域的、要執行關於所述區域的渲染的一行或更多行和/或一列或更多列採樣位置,並且所述處理電路被配置成在執行關於所述區域的渲染時,執行關於所選擇的一行或更多行和/或一列或更多列採樣位置的渲染。
  8. 根據請求項7所述的圖形處理器,其中:所述處理電路被配置成在獲取所述區域的所述期望分辨率配置時,獲取針對所述區域指示的特定縮放因子,並且所述處理電路被配置成在獲取要針對所述區域渲染的所述縮放圖形幾何形狀時,根據針對所述區域指示的所述特定縮放因子,縮放針對所述區域指示的圖形幾何形狀。
  9. 根據請求項7或8所述的圖形處理器,其中,所述處理電路還被配置成使用與未關於所述區域進行渲染的採樣位置相對應的一行或更多行和/或一列或更多列數據元素來填充所述數據元素輸出陣列。
  10. 一種數據處理器,該數據處理器包括:採樣電路,該採樣電路被配置成從與渲染輸出的區域相對應的數據元素輸出陣列採樣和/或導出採樣位置的數據值,其中,所述區域是出於渲染目的將所述渲染輸出劃分成的多個區域中的一個區域,且所述區域是通過選擇要進行渲染的所述區域的子區域以特定分辨率來渲染,並關於所述子區域執行渲染以提供所述數據元素輸出陣列,所述子區域是通過選擇所述區域的一行或更多行和/或一列或更多列採樣位置來組成要進行渲染的所述子區域,其中,採樣和/或導出所述採樣位置的數據值的處理包括:基於渲染所述區域所用的特定分辨率將所述採樣位置映射至映射採樣位置;以及利用所述映射採樣位置來採樣和/或導出所述採樣位置的數據值。
  11. 根據請求項10所述的數據處理器,其中,所述數據元素輸出陣列包括壓縮數據元素輸出陣列,並且其中,利用所述映射採樣位置對所述壓縮數據元素輸出陣列直接進行採樣。
  12. 根據請求項10或11所述的數據處理器,其中,從所述數據元素輸出陣列採樣和/或導出所述採樣位置的數據值的處理不包括解壓縮和/或放大所述數據元素輸出陣列。
  13. 一種電腦程式部件,該電腦程式部件包括電腦軟體代碼,當所述電腦軟體代碼在一個或更多個數據處理器上運行時使得執行根據請求項1或2所述的方法。
TW108112610A 2018-05-09 2019-04-11 圖形處理器、數據處理器、及其等的操作方法 TWI839352B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1807558.0 2018-05-09
GB1807558.0A GB2573543B (en) 2018-05-09 2018-05-09 Graphics Processing

Publications (2)

Publication Number Publication Date
TW201947523A TW201947523A (zh) 2019-12-16
TWI839352B true TWI839352B (zh) 2024-04-21

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170200308A1 (en) 2016-01-12 2017-07-13 Qualcomm Incorporated Systems and methods for rendering multiple levels of detail

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170200308A1 (en) 2016-01-12 2017-07-13 Qualcomm Incorporated Systems and methods for rendering multiple levels of detail

Similar Documents

Publication Publication Date Title
US10878527B2 (en) Variable resolution graphics processing
KR102455696B1 (ko) 그래픽 처리 시스템
CN111033570B (zh) 使用两个渲染计算装置从计算机图形渲染图像
CN110663065B (zh) 用于中央凹形渲染的存储
JP6563048B2 (ja) スクリーンの位置によって異なる解像度のターゲットの複数レンダリングのテクスチャ・マッピングの傾き調整
KR102269905B1 (ko) 데이터 처리 시스템
KR102442487B1 (ko) 그래픽 처리 시스템 및 그래픽 프로세서
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
KR101925292B1 (ko) 비-정규 직교 그리드로의 텍스처 매핑을 위한 그라디언트 조정
JP5595739B2 (ja) グラフィックスを処理する方法およびそのための装置
US20150379663A1 (en) Rendering graphics to overlapping bins
KR102499397B1 (ko) 그래픽스 파이프라인을 수행하는 방법 및 장치
GB2500284A (en) Object list tile based computer graphics using modified primitives
US11238639B2 (en) Gradient adjustment for texture mapping to non-orthonormal grid
KR20160046614A (ko) 텍스쳐를 처리하는 방법 및 장치
KR20190080274A (ko) 샘플링 기반의 렌더링을 수행하는 그래픽 프로세서 및 그 동작방법
TWI839352B (zh) 圖形處理器、數據處理器、及其等的操作方法
US12026798B2 (en) Variable resolution graphics processing
CN106447593B (zh) 操作图形处理流水线的方法、图形处理流水线、存储介质