圖形圖元的裁剪的制作方法
【技術領域】
[0001]本技術涉及圖形處理領域。更具體地,涉及用于處理圖形圖元的方法和裝置。
【背景技術】
[0002]當處理3D圖形時,要顯示的場景通常被分成許多被稱為“圖元”的基本組件以便使3D圖形處理操作能夠更加容易實現(xiàn)。圖元通常是簡單多邊形的形式,諸如三角形。每個圖元通常由組成該圖元的頂點定義,并且每個頂點將與其代表在該頂點位置處的圖元的特定的數(shù)據(jù)值相關聯(lián),例如,頂點的X和Y位置、深度(Z)值、顏色和透明度值等等。
[0003]在圖形處理系統(tǒng)中,使用為給定圖元的每個頂點定義的數(shù)據(jù)實現(xiàn)圖元設置階段以便于確定用于該圖元的多個函數(shù),諸如表示圖元的幾何邊緣的邊緣函數(shù)以及被用于確定圖元內任意特定點的深度值的深度函數(shù)。圖元設置階段還可確定其他函數(shù),諸如插值函數(shù),其中插值函數(shù)表示諸如顏色值之類的屬性將在圖元上變化的方式。
[0004]圖元設置階段之后,圖形圖元可經(jīng)過光柵化階段,其中執(zhí)行光柵化操作以便于確定被用于表示該圖形圖元的多個圖形片元,光柵化操作確定那些圖形片元中的每一個片元的X坐標和Y坐標。光柵化之后,圖形片元經(jīng)過渲染階段,其中圖形片元經(jīng)歷上色(coloring)操作、著色(shading)操作等等以便于生成用于顯示在顯示器上的輸出。
[0005]在最終顯示中,每一個圖形片元(數(shù)據(jù)元素)可對應于單一像素(圖片元素),或者在片元和顯示像素之間可能不是一對一對應的情況,例如,其中在顯示最終圖像之前,在被混合的圖像上執(zhí)行諸如縮小尺寸之類的特定形式的后處理。
[0006]在3D圖形處理中,在概念上渲染在所謂的“視錐體”內發(fā)生,實際上,視錐體是在觀察者的位置前面的表示三維體積的盒子,在該三維體積內的圖元可能需要被渲染以用于顯示。視錐體被有效地定義為具有上、左、下和右邊緣面(邊緣面定義了表示視錐體邊緣的視口)以及表示視錐體前平面和后平面的近深度面和遠深度面(表示了目標能夠顯現(xiàn)的最近和最遠的距離)。視口通常對應于顯示屏幕的大小。
[0007]通常希望只渲染實際上將要被看到的,S卩,在視錐體內的場景部分,并且實現(xiàn)它的一種已知技術是在執(zhí)行上述圖元設置、光柵化以及渲染處理之前,參照視錐體邊緣面和深度面“裁剪”圖元。通常這需要從幾何上生成新圖元以便于表示在裁剪處理之后保留在視錐體內的圖元部分。然而,這樣的裁剪處理相當復雜和費時,并且很難實施。如共同擁有的美國專利8,115,783所描述的,一種已知的試圖和減少所需的裁剪量的技術被稱為“保護帶裁剪”,其中美國專利8,115,783的全部內容在此通過引用被并入本文中。在保護帶裁剪中,邊緣面(參照該邊緣面出于裁剪的目的測試圖元)被擴展為超過視錐體(在視錐體外部)。雖然在一些保護帶布置中,保護帶被設置為諸如已定義數(shù)量的像素或片元之類的有限值,但是在可替代的布置中,裁剪區(qū)域邊緣面被有效地設置為“無限”,因此使用無限保護帶。因此,這樣的方法使幾何處理階段能夠避免裁剪,而是隨后當處理片元以保證在視錐體外部的片元不被顯示時,附加步驟能夠被采取。
[0008]然而,盡管避免裁剪解決了與裁剪處理自身相關聯(lián)的問題,但是缺乏裁剪的渲染增加了其自身的一組問題。在不進行裁剪的情況下,圖元可能延伸到視錐體或保護帶之外相當遠的地方。在一些情況下,圖元可能表現(xiàn)為無限。如果這種相當大的圖元沒有被裁剪,則在后續(xù)計算中它們能夠導致數(shù)值精度問題或穩(wěn)定性問題。因此,存在許多與執(zhí)行裁剪相關聯(lián)的問題。本技術力圖使裁剪更加有效。
【發(fā)明內容】
[0009]一個方面包括一種處理用于被顯示的幀的圖形圖元的方法,該方法包括以下步驟:
[0010]將每個圖元分配至組成被顯示的幀的多個圖塊中的至少一個圖塊;
[0011]對于每個圖塊,在圖元存儲器中存儲圖元列表,所述圖元列表識別被分配至相應的圖塊的圖元的頂點的頂點數(shù)據(jù);以及
[0012]分別針對每個圖塊執(zhí)行圖塊處理,該圖塊處理包括:
[0013](i)從圖元存儲器讀取圖塊的圖元列表
[0014](ii)如果圖元列表識別出滿足裁剪條件的目標圖元,則執(zhí)行用于參照裁剪邊界來裁剪該目標圖元的裁剪操作以生成針對在圖元列表中未被識別出的被裁剪的圖元的至少一個附加頂點的附加頂點數(shù)據(jù),相較于目標圖元,被裁剪的圖元延伸至裁剪邊界以外更少的量;
[0015](iii)使用在圖元列表中被識別的頂點數(shù)據(jù)和由裁剪操作生成的附加頂點數(shù)據(jù)執(zhí)行至少一個進一步的圖形處理操作。
[0016](iv)輸出由用于圖塊的該至少一個進一步的圖形處理操作生成的顯示數(shù)據(jù)。
[0017]基于圖塊的圖形處理系統(tǒng)將被顯示的幀分成多個圖塊,然后分別處理每個圖塊以生成表示將在對應的圖塊中顯示的圖形的顯示數(shù)據(jù)。當所有圖塊已經(jīng)被處理時,幀作為一個整體能夠被顯示。在基于圖塊的技術中,通常在被分配至每個圖塊的圖元被存儲在圖元存儲器中之前完成參照裁剪邊界的圖元裁剪。然而,裁剪能夠導致使用附加頂點數(shù)據(jù)生成的附加的被裁剪的圖元。因此,裁剪操作可能增加需要從圖元存儲器讀取的數(shù)據(jù)量。由于相同的圖元可出現(xiàn)在多個圖塊中,因此任何與在圖元存儲器中的被裁剪的圖元相關聯(lián)的附加數(shù)據(jù)均可能需要被多次讀取,因此在圖元存儲器之前執(zhí)行裁剪可能大大增加在圖元存儲器和用于執(zhí)行每個圖塊的處理的處理系統(tǒng)的其他部分之間傳送的總線流量,這可能會限制性能。
[0018]為了解決這些問題,作為替代,用于減少圖元延伸至超過裁剪邊界的范圍的處理操作可在已從圖元存儲器讀取用于給定圖塊的圖元列表之后在逐圖塊的基礎上被執(zhí)行。其后,任何由裁剪操作生成的被裁剪的圖元能夠被用于該圖塊的進一步的圖形處理操作而無需任何附加頂點數(shù)據(jù)被存儲在圖元存儲器中,避免了對于龐大圖元存儲器總線帶寬的需要。因此,在比常規(guī)系統(tǒng)晚的階段執(zhí)行裁剪能夠解決上面所討論的一些問題。
[0019]緩存存儲器可被提供以用于存儲由裁剪操作生成的附加頂點數(shù)據(jù)。相較于圖元存儲器,緩存存儲器具有較低的訪問延遲,因此相較于圖元存儲器緩存存儲器能夠被更有效率地訪問。這是很有幫助的,這是因為多個圖塊可能需要相同的被裁剪的圖元。當處理一個圖塊時已為被裁剪的圖元生成附加頂點數(shù)據(jù)時,如果其他圖塊需要相同的數(shù)據(jù),附加頂點數(shù)據(jù)能被存儲在緩存中以供使用,以使得不必再次生成附加頂點數(shù)據(jù)。
[0020]對于在圖元列表中的每一個圖元,頂點數(shù)據(jù)可定義圖元的每個頂點的各種屬性。例如,屬性可包括表示每個頂點的X,y位置的頂點坐標以及其他頂點屬性,諸如顏色、深度或不透明度等等。類似地,附加頂點數(shù)據(jù)可標識對應的被裁剪圖元的附加頂點屬性。在一些實施例中,附加頂點數(shù)據(jù)可使用絕對數(shù)據(jù)值來標識這些屬性。然而,在其他實施例中,將被裁剪的圖元的附加頂點數(shù)據(jù)通過用來從目標圖元的原始頂點數(shù)據(jù)確定附加頂點數(shù)據(jù)的權重值來表示可能更有效率,其中被裁減的圖元從該目標圖元中獲得。例如,附加頂點數(shù)據(jù)的一些不同屬性可能與使用相同權重值的原始頂點數(shù)據(jù)對應的屬性相關聯(lián),因此使用權重值能夠幫助減少定義被裁剪的圖元的頂點所需的數(shù)據(jù)量。在一些示例中,權重值可能以線性的方式與原始頂點數(shù)據(jù)相結合,而在其他示例中權重值可定義原始頂點數(shù)據(jù)的非線性變化以生成附加頂點數(shù)據(jù)。
[0021]用于裁剪的裁剪邊界可對應于視錐體的邊界(例如,對應于顯示屏的邊緣)?;蛘?,裁剪邊界可以在視錐體的邊界的外部(例如裁剪邊界對應于視錐體外部的保護帶的情況)。
[0022]判定目標圖元是否被裁剪的裁剪條件可具有各種形式。在一些情況下,任何延伸至超過裁剪邊界的目標圖元均可被裁剪。在其他情況下,可能存在進一步的標準,諸如目標圖元的大小是否大于給定閾值(此條件將在下面參照本技術的第四至第六方面被更加詳細的說明)。因此,裁剪并非對于每個穿過裁剪邊界的圖元來說都是必要的。
[0023]至少一個進一步的圖形處理操作可包括,例如,圖元設置操作或光柵化操作。
[0024]用于參照裁剪邊界裁剪目標圖元的裁剪操作可采用各種形式。在一個示例中,目標圖元可被精確地裁剪至裁剪邊界以便使被裁剪的圖元對應于在裁剪邊界內部的目標圖元的區(qū)域(“精確裁剪”)。在另一示例中,“不精確的裁剪”可被執(zhí)行以便使被裁剪的圖元不精確地對應于在裁剪邊界內部的目標圖元的區(qū)域,并且被裁減的圖元可包括在裁剪邊界外部的部分(參見下文本技術的第七至第九方面的討論)。此外,裁剪操作可能包括“偽裁剪”操作,其中被裁剪的圖元被用于后續(xù)圖形處理的一些部分(例如,深度函數(shù)判定),而圖形處理的其他部分使用原始目標圖元(參見下面所討論的第十至第十二方面)。附加頂點數(shù)據(jù)能夠被用于像裁剪發(fā)生一樣創(chuàng)建/仿真新圖元。
[0025]第二方面包括用于處理用于將被顯示的幀的圖形圖元的裝置,該裝置包括:
[0026]分配電路,該分配電路被配置用于將每個圖元分配至組成將被顯示的幀的多個圖塊中的至少一個圖塊;
[0027]圖元存儲器,該圖元存儲器被配置用于為每個圖塊存儲圖元列表,該圖元列表識別被分配至相應圖塊的圖元的頂點的頂點數(shù)據(jù);以及
[0028]圖塊處理管線,該圖塊處理管線被配置用于分別為每個圖塊執(zhí)行圖塊處理,該圖塊處理包括:
[0029](i)從圖元存儲器讀取圖塊的圖元列表;
[0030](ii)如果圖元列表識別滿足裁剪條件的目標圖元,則執(zhí)行用于參照裁剪邊界來裁剪目標圖元的裁剪操作以生成針對在圖元列表中未識別出的被裁剪的圖元的至少一個附加頂點的附加頂點數(shù)據(jù),相較于目標圖元,被裁剪的圖元延伸至裁剪邊界以外更少的量;
[0031](iii)使用在圖元列表中識別出的頂點數(shù)據(jù)和由裁剪操作生成的附加頂點數(shù)據(jù)執(zhí)行至少一個進一步的圖形處理操作;以及
[0032](iv)輸出由針對圖塊的至少一個圖形處理操作生成的顯示數(shù)據(jù)。
[0033]第三方面提供了用于處理將被顯示的幀的圖形圖元的裝置,該裝置包括:
[0034]分配裝置,該分配裝置用于將每一個圖元分配至組成被顯示的幀的多個圖塊中的至少一個圖塊;
[0035]圖元存儲裝置,該圖元存儲裝置用于為每個圖塊存儲圖元列表,該圖元列表識別被分配至相應圖塊的圖元的頂點的頂點數(shù)據(jù);以及
[0036]圖塊處理裝置,該圖塊處理裝置用于分別對每個圖塊執(zhí)行圖塊處理,該圖塊處理包括:
[0037](i)從圖元存儲裝置讀取圖塊的圖元列表;
[0038](ii)如果圖元列表識別出滿足裁剪條件的目標圖元,則執(zhí)行用于參照裁剪邊界來裁剪目標圖元的裁剪操作以生成針對在圖元列表中未識別出的被裁剪的圖元的至少一個附加頂點的附加頂點數(shù)據(jù),相較于目標圖元,被裁剪的圖元延伸至超過裁剪邊界以外更少的量;
[0039](iii)使用在圖元列表中識別出的頂點數(shù)據(jù)和由裁剪操作生成的附加頂點數(shù)據(jù)執(zhí)行至少一個進一步的圖形處理操作;以及
[0040](iii)輸出由針對圖塊的至少一個進一步的圖形處理操作生成的顯示數(shù)據(jù)。
[0041]第四方面提供了一種處理用于顯示的圖形圖元的方法,其中圖元具有被表示為浮點格式的頂點坐標,該方法包括以下步驟:
[0042]基于將被處理的目標圖元的頂點坐標,確定表明該目標圖元尺寸的圖元尺寸參數(shù);
[0043]如果圖元尺寸參數(shù)超過了預定閾值,則參照裁剪邊