在輸入幾何對(duì)象粒度上記錄可見度測(cè)試的結(jié)果的制作方法
【專利說明】
【背景技術(shù)】
[0001]本發(fā)明總體上涉及圖形處理。
[0002]在圖形處理中,性能在很大程度上根據(jù)像素計(jì)算吞吐量和/或存儲(chǔ)器帶寬限制,特別是在低功耗的設(shè)備中。
[0003]因此,已開發(fā)多種技術(shù)以減少需要執(zhí)行的像素計(jì)算量,特別是對(duì)在最終描繪中由于其它場(chǎng)景對(duì)象的遮擋而最終不可見的像素。例如,早期深度(early depth)或Z消隱(Zculling)首先執(zhí)行針對(duì)像素的遮擋或深度測(cè)試,并且隨后僅在該像素為可見時(shí)計(jì)算該像素。在延遲渲染中,執(zhí)行渲染階段(rendering pass)的應(yīng)用實(shí)際上僅執(zhí)行深度測(cè)試以查看該像素是否為可見的。這一深度測(cè)試渲染階段導(dǎo)致深度緩沖器被填入第二次渲染階段中所使用的信息,在該第二次渲染階段中僅計(jì)算最終可見的像素。
[0004]在基于圖塊(tile-based)的延遲渲染中,場(chǎng)景圖像被劃分成多個(gè)矩形圖塊區(qū)域并按圖塊區(qū)域遞增地渲染。圖塊區(qū)域的大小相對(duì)于存儲(chǔ)器高速緩存能力來設(shè)定,從而使得圖塊區(qū)域的顏色和深度緩沖器可被包含在高速緩存中。
[0005]盡管這些技術(shù)已產(chǎn)生了改進(jìn),但仍需要減少像素計(jì)算負(fù)擔(dān)及圖形處理引擎中幾何處理的不必要的重復(fù)。
【附圖說明】
[0006]關(guān)于以下附圖描述一些實(shí)施例:
[0007]圖1為根據(jù)本發(fā)明一個(gè)實(shí)施例的基于圖塊的延遲渲染序列的流程圖;
[0008]圖2為根據(jù)本發(fā)明另一實(shí)施例的延遲渲染深度階段序列的流程圖;
[0009]圖3為根據(jù)本發(fā)明一個(gè)實(shí)施例的另一基于圖塊的延遲渲染過程的流程圖;
[0010]圖4為本發(fā)明一個(gè)實(shí)施例的示意性描繪;以及
[0011]圖5為本發(fā)明一個(gè)實(shí)施例的前視圖。
【具體實(shí)施方式】
[0012]根據(jù)本發(fā)明的一些實(shí)施例,可通過在輸入幾何對(duì)象粒度上執(zhí)行深度測(cè)試并記錄結(jié)果來改善像素的吞吐量。輸入幾何對(duì)象是由圖元所表示的描繪中的任何對(duì)象,例如輸入三角形列表中的三角形,或輸入補(bǔ)片(patch)列表內(nèi)中的補(bǔ)片。
[0013]在一些實(shí)施例中,可減少冗余幾何處理,并且可在初始渲染階段期間執(zhí)行可見度測(cè)試。然后可將這些測(cè)試的結(jié)果記錄在存儲(chǔ)器緩沖器中,以消除在后續(xù)渲染階段期間對(duì)該輸入幾何對(duì)象進(jìn)行的不必要的重新處理。
[0014]在一些實(shí)施例中,可通過增強(qiáng)幾何管線以攜帶標(biāo)記來支持每個(gè)對(duì)象的可見度結(jié)果,這些標(biāo)記從各個(gè)輸入幾何對(duì)象中劃定結(jié)果并且在繪制命令內(nèi)劃定各個(gè)實(shí)例。
[0015]在一些實(shí)施例中,可記錄兩種不同類型的可見度信息。首先,可記錄關(guān)于所消隱的對(duì)象的信息。例如,對(duì)象被認(rèn)為由于剪輯瑣碎拒絕、背面消隱或任何其它原因而由管線消隱。因此,在一些實(shí)施例中,可記錄該對(duì)象被認(rèn)為被消隱的信息。
[0016]在其它實(shí)施例中,也可記錄對(duì)象未被消隱但與最終渲染不相關(guān)的信息。例如,對(duì)象可能未被消隱,但是其可能未通過早期深度測(cè)試,并且因此將不生成任何可供渲染的像素。另外,未被遮擋的對(duì)象仍可能不生成任何輸出。示例可以為不覆蓋任何樣本的極小的條狀三角形。即使該條狀三角形可能未被完全遮擋,但它們將不必出現(xiàn)在最終描繪中。
[0017]雖然可使用任何可見度測(cè)試,但在本發(fā)明的一些實(shí)施例中,最初可基于每個(gè)輸入幾何對(duì)象來計(jì)算結(jié)果。如果對(duì)象關(guān)于一些所需的標(biāo)準(zhǔn)是可見的,則將可見度結(jié)果被記錄為可見的。因此,可將特定的位分配給所有被認(rèn)為是可見的那些圖元。
[0018]然后可利用算法為一些非常典型的狀況來壓縮可見度測(cè)試結(jié)果。這種典型狀況的示例包括完全可見或完全不可見對(duì)象的長期運(yùn)轉(zhuǎn),或圖元命令內(nèi)的整個(gè)實(shí)例為完全可見的情況或在其它情況下完全不可見。隨后可將壓縮流寫入到存儲(chǔ)器緩沖器中。
[0019]隨后,可通過管線內(nèi)的頂點(diǎn)獲取段(stage)對(duì)消隱和/或遮擋記錄緩沖器進(jìn)行輸入,以供在渲染階段期間使用。頂點(diǎn)獲取段跳過被至少一個(gè)緩沖器標(biāo)記為“不可見”的對(duì)象或?qū)嵗?,但有一些例外。由于可見度信息特定于頂點(diǎn)獲取輸入對(duì)象及實(shí)例,因此可除了支持簡(jiǎn)單頂點(diǎn)著色器或像素著色器工作負(fù)載之外還支持鑲嵌化處理及幾何著色。
[0020]根據(jù)一些實(shí)施例,通過添加對(duì)基于圖塊的延遲渲染和/或延遲渲染深度階段的支持而增強(qiáng)延遲渲染系統(tǒng)的能力。在兩種狀況下,在初始渲染階段期間記錄幀命令流以供在后續(xù)的渲染階段中使用,例如,如圖1中20處所示。在圖1所示的實(shí)施例中,描繪了基于圖塊的延遲渲染實(shí)施例。因而,如塊12所示,首先應(yīng)用提交待渲染的幀。如塊14所示,在第一圖塊矩形(圖塊[O])渲染期間,記錄關(guān)于其它每一個(gè)圖塊矩形中的輸入幾何對(duì)象的可見度的信息,如塊16所示。隨后,在塊16所記錄的信息(TILE⑴數(shù)據(jù))在塊18處的渲染那些圖塊期間被使用。因此,可在塊18處進(jìn)行渲染期間跳過特定圖塊矩形內(nèi)被檢測(cè)為不可見的輸入幾何對(duì)象。
[0021]在渲染圖塊[O]時(shí),針對(duì)圖塊[I…N]可僅記錄一次可見度信息。因此,在一些實(shí)施例中,可僅針對(duì)圖塊[I…N]來執(zhí)行并記錄經(jīng)設(shè)置而生成的二維消隱測(cè)試。在渲染圖塊之后,在菱形22處進(jìn)行檢查來確定是否所有圖塊已被渲染,如果沒有,則變量i遞增,獲取下一個(gè)供渲染的圖塊。一旦所有圖塊已被渲染,就可重置所記錄數(shù)據(jù)的緩沖器,如26所示。
[0022]如之前所描述的,根據(jù)如圖2所示的延遲渲染深度階段實(shí)施例,應(yīng)用提交幀(如12所示)并在20處記錄幀命令。如塊28所示,通過生成深度緩沖器以供在后續(xù)色彩渲染階段中使用,延遲渲染深度階段首先針對(duì)所關(guān)注的整個(gè)幀來執(zhí)行僅深度渲染階段。在初始的僅深度階段期間,在塊30處記錄針對(duì)所有提交的幾何對(duì)象的遮擋(后期-早期-Z)可見度信息。如果需要單一、完整幀色彩渲染,則所記錄的完整幀遮擋可見度信息被用于發(fā)送給完整幀色彩渲染塊32,并用于跳過未幸免于早期Z或以其它方式被消隱的對(duì)象。
[0023]最后,如果基于圖塊的延遲渲染要被用于執(zhí)行完整渲染,如圖3所示,則在僅深度階段期間記錄針對(duì)所有圖塊的消隱信息,如塊16所示。對(duì)于每個(gè)后續(xù)的圖塊渲染階段,使用在30處的完整幀遮擋信息以及來自塊16的圖塊特定消隱信息來跳過在渲染塊18處被視為不可見的對(duì)象。該序列在其它方面與圖1中的序列相同。
[0024]可采用軟件、固件和/或硬件來實(shí)現(xiàn)圖1至圖3的序列。在軟件和/或固件的實(shí)施例中,序列可由儲(chǔ)存在諸如磁性、半導(dǎo)體儲(chǔ)或光學(xué)儲(chǔ)存器的一個(gè)或多個(gè)非瞬時(shí)性計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)執(zhí)行的指令來實(shí)現(xiàn)。例如,在一個(gè)實(shí)施例中,該儲(chǔ)存器可為圖形處理單元的一部分,或親合到圖形處理單元。
[0025]圖4示出了系統(tǒng)300的實(shí)施例。系統(tǒng)300可以是媒體系統(tǒng),盡管系統(tǒng)300并不限于該上下文。例如,系統(tǒng)300可以并入到個(gè)人計(jì)算機(jī)(PC)、膝上型計(jì)算機(jī)、超級(jí)膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、觸控板、便攜式計(jì)算機(jī)、手持式計(jì)算機(jī)、掌上型計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、蜂窩電話、組合蜂窩電話/PDA、電視、智能設(shè)備(例如,智能電話、智能平板計(jì)算機(jī)或智能電視)、移動(dòng)互聯(lián)網(wǎng)設(shè)備(MID)、消息設(shè)備、數(shù)據(jù)通信設(shè)備等。
[0026]在實(shí)施例中,系統(tǒng)300包括耦合到顯示器320的平臺(tái)302。平臺(tái)302可以從諸如內(nèi)容服務(wù)設(shè)備330或內(nèi)容分發(fā)設(shè)備340或其它類似內(nèi)容源的內(nèi)容設(shè)備接收內(nèi)容。導(dǎo)航控制器350包括可以用于與例如平臺(tái)302和/或顯示器320進(jìn)行交互的一個(gè)或多個(gè)導(dǎo)航特征。在下文中更具體地描述這些組件中的每一個(gè)組件。
[0027]在實(shí)施例中,平臺(tái)302可包括芯片組305、處理器310、存儲(chǔ)器312、存儲(chǔ)設(shè)備314、圖形子系統(tǒng)315、應(yīng)用程序316和/或無線電設(shè)備318的任意組合。芯片組305可以在處理器310、存儲(chǔ)器312、存儲(chǔ)設(shè)備314、圖形子系統(tǒng)315、應(yīng)用程序316和/或無線電設(shè)備318之間提供相互通信(interc