TWI552109B - 一種使用誤差項之保守格柵化基元的方法、非暫時性電腦可讀儲存媒體及系統 - Google Patents
一種使用誤差項之保守格柵化基元的方法、非暫時性電腦可讀儲存媒體及系統 Download PDFInfo
- Publication number
- TWI552109B TWI552109B TW102148772A TW102148772A TWI552109B TW I552109 B TWI552109 B TW I552109B TW 102148772 A TW102148772 A TW 102148772A TW 102148772 A TW102148772 A TW 102148772A TW I552109 B TWI552109 B TW I552109B
- Authority
- TW
- Taiwan
- Prior art keywords
- primitive
- edge
- pixel
- sash
- predetermined amount
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 50
- 230000008859 change Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 description 119
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 16
- 238000005070 sampling Methods 0.000 description 14
- 239000012634 fragment Substances 0.000 description 13
- 238000007726 management method Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 239000004065 semiconductor Substances 0.000 description 6
- 230000009977 dual effect Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 241000264877 Hippospongia communis Species 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011143 downstream manufacturing Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
-
- 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
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/403—Edge-driven scaling; Edge-based scaling
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Description
本發明有關圖形處理,且更具體地,有關基元之格柵化。
圖形處理管線將輸入圖形資料(例如,可能有關三維物件)轉換成有關二維表面的像素資料。在習知的實施方式中,圖形處理管線的世界座標空間部(world-space portion)負責在資料轉換成像素資料之前,處理輸入圖形資料,其通常是由三角形與相關的頂點之集合所組成。圖形處理管線的螢幕空間部(screen-space portion)則負責處理已轉換的像素資料及產生用於顯示的最終像素值。
圖形處理管線中的各階段之一者為格柵化階段,其通常涉及將該管線的世界座標空間部所處理的圖形資料轉換成像素資料。格柵化可能涉及:產生邊緣方程式,其描述在該管線之世界座標空間部中處理的三角形的邊緣;決定這些三角形的涵蓋資訊;及計算由該等三角形所涵蓋像素和片段的屬性值。格柵化中所涉及的計算有時為固定點計算,其通常係以固定分數像素精確度來實施。因此,固定點格柵化計算的結果視為「貼齊(snapped)」格線,其中,格線的框格對應分數像素大小的框格。
在許多實施方式中,圖形處理管線可在不同解析度格柵化相同的三維物件。例如,三角形可先低解析度格柵化以進行關於該三角形的特定判斷,例如,該三角形涵蓋一表面的哪些通用部分。該三角形接著以較高解析度格柵化,用以產生用於顯示的影像資料。然而,相較於在較高解析度的格柵化,在較低解析度格柵化通常提供「貼齊」較粗糙格線的結果。所以,較低解析度格柵化的涵蓋結果可能產生沒有正確對齊較高解析度格柵化的涵蓋結果。例如,倘若訊框緩衝記憶體係根據低解析度格柵化配置用於稀疏成像(sparse rendering),記憶體可能因較低解析度格柵化的結
果貼齊較粗糙格線的關係而導致過度分派(over-allocated)或低度分派(under-allocated)。更具體地,記憶體可配置給不需要配置的方塊;或者,記憶體可能無法配置給需要配置的方塊。
因此,必須解決當格柵化圖形資料時的精確性問題、及/或解決有關先前技術的其他問題。
本發明提供一種使用誤差項之保守格柵化基元之系統、方法、及電腦程式產品。使用上,其可決定一基元之每個邊緣的邊緣方程式,該邊緣方程式具有定義該基元之邊緣的係數。該基元之每個邊緣藉由一預定量的誤差項來修正定義該邊緣的邊緣方程式的係數而移動以放大該基元。接著,使用該放大基元來決定和該基元相交的像素。
320‧‧‧像素
322‧‧‧基元
324‧‧‧框格
326‧‧‧像素邊角
400‧‧‧圖形處理管線
406‧‧‧頂點處理單元
408‧‧‧棋盤化與幾何處理單元
412‧‧‧視區縮放、揀選剪輯單元
414‧‧‧基元建立單元
416‧‧‧光柵器
422‧‧‧片段處理單元
424‧‧‧格柵運算單元
500‧‧‧平行處理單元
502‧‧‧系統匯流排
504‧‧‧記憶體
505‧‧‧輸入/輸出單元
510‧‧‧主介面單元
515‧‧‧網格管理單元
520‧‧‧工作分配單元
550‧‧‧串流多處理器
560‧‧‧縱橫交叉網路
565‧‧‧第二層(L2)快取
580‧‧‧記憶體介面
605‧‧‧指令快取
610‧‧‧排程器單元
615‧‧‧指令派遣單元
620‧‧‧暫存器檔
650‧‧‧處理核
651‧‧‧雙精確度單元
652‧‧‧特殊功能單元
653‧‧‧載入/儲存單元
670‧‧‧共用記憶體/L1快取
680‧‧‧互連網路
690(0)‧‧‧圖紋單元
690(1)‧‧‧圖紋單元
690(J)‧‧‧圖紋單元
700‧‧‧系統
701‧‧‧中央處理器
702‧‧‧通訊匯流排
704‧‧‧主記憶體
706‧‧‧圖形處理器
708‧‧‧顯示器
710‧‧‧輔助儲存體
712‧‧‧輸入裝置
第一圖例示根據一實施例之使用誤差項之保守格柵化基元之方法的流程圖;第二圖例示根據另一實施例之於一粗糙格柵和一精細格柵兩者中的保守格柵化基元之方法的流程圖;第三A圖例示根據另一實施例之使用誤差項在精細格柵中的保守格柵化基元之方法的流程圖;第三B圖例示根據另一實施例之一像素相交一基元;第四圖例示根據仍然另一實施例之圖形處理管線;第四B圖例示根據一貼齊間隔,調整頂點位置的方法的流程圖;第五圖例示根據一實施例之平行處理單元(PPU);第六圖例示根據一實施例之第五圖所示串流多處理器;及第七圖例示可實施各種先前實施例之各種架構及/或功能之示範性系統。
保守格柵化係一種格柵化技術,其中,倘若一像素之任何區域係與一基元相交,該像素便視為該基元的格柵化。這和傳統格柵化技術
不同,傳統格柵化技術將一像素視為一或多個取樣點,倘若該(或該等)取樣點在該基元內部,該(或該等)取樣點便視為該基元的格柵化。利用保守格柵化,實際相交基元的所有像素始終可以找出。然而,該保守格柵化方法卻可能以不視為和基元相交的理想精確度找到和該基元相交的像素。應注意,在本說明中,像素視為佔據一顯示器的一矩形區域,而每個基元則可能為三角形、線條、或點。
保守格柵化讓圖形處理單元(GPU,Graphics Processing Unit)快速找出相交一基元的像素,俾使其可讓其他資源用於進一步對該像素進行複雜計算。例如,具有保守格柵化能力的圖形處理單元能夠快速發現一基元相交的像素,傳送這些像素給另一計算資源,及實施該圖形處理單元中的固定功能管線可能無法實施的計算。其之一範例為用於抗鋸齒的極精細多取樣。倘若該圖形處理單元構成實施高達每個像素4x4個取樣的多取樣,另一計算資源可在使用每個像素有4x4個以上的取樣時構成實施多取樣,例如,16x16多取樣。16x16多取樣可由該圖形處理單元本身中的可程式化著色器資源(Programmable Shader Resource)來實施,或者可在另一晶片或計算資源(例如,CPU(中央處理單元))中實施。可在低解析度保守格柵化以分割處理工作負載中獲得好處的其他範例包括光線追蹤(ray tracing);或是全域照明(global illumination),其中,先找出相交一基元的像素,接著實施複雜或客製化的照明計算,以決定該等像素的實際顏色。
當使用保守格柵化時,基元位置會貼齊格線。當像素解析度改變時,變得更精細或更粗糙,貼齊會影響基元的形狀。換言之,基元的形狀在不同的像素解析度中不一致,所以,視為該等基元涵蓋的像素在不同的像素解析度可能會不同。
第一圖為根據一實施例之使用誤差項之保守格柵化基元之方法100的流程圖。此誤差項可用來補償前述保守格柵化不一致性。在步驟102,決定一基元之每個邊緣的邊緣方程式,該邊緣方程式具有用以定義該基元之邊緣的係數。
例如,三角形基元可由一組邊緣來定義。此外,該基元之每個邊緣能夠由一描述該基元於顯示器上之定位的方程式中的三個係數來定
義。該方程式可定義如下:Eo+Ex(x)+Ey(y)
該等係數可從已轉換成螢幕空間之基元的頂點處算出。在一實施例中,該等頂點可以貼齊固定數量的分數位元(例如,8位位元),以在格柵計算中賦予精密的精確度且因而在顯示器中賦予均勻的精確度。因此,該等係數可以定義一貼齊邊緣的定位。
此外,該等係數和所生成的邊緣方程式可以計算,使得若有任何點(x,y)在該線條(即是,邊緣)上,該邊緣方程式的結果會為零。倘若(x,y)在該基元所在之線條的一側,結果為正;而若在該邊緣之另一側,則為負。所以,倘若某一點(x,y)在全部三個邊緣中的計算皆為正,該點便在該基元內部。
在步驟104,該基元的每個邊緣藉由一預定量的誤差項來修正定義該邊緣的邊緣方程式的係數而偏移以放大該基元。如上面提及,此誤差項可用於補償於保守格柵化處理期間因貼齊基元至格線所造成的不一致性。該誤差項亦可以用來補償套用至該等基元的算術運算的精確度差異性。如一選擇,該誤差項為可程式化,使得(例如)該誤差項的數值為該保守格柵化處理所造成精確度數額的函數。就如範例,當不一致性係至少部分由於上面所述貼齊基元造成時,該誤差項可以為藉由其貼齊該基元之每個邊緣的距離之函數,其中,該邊緣係憑藉已貼齊頂點所定義之邊緣來貼齊。在一選擇性實施例中,該誤差項可以為藉以貼齊該基元之每個邊緣的距離之一半。此外,相同的誤差項可以用來修正該等係數。
應該注意,該等係數可以導致放大該基元的任何預先配置方式藉由該預定量而修正。例如,當表示該誤差項的預定量為2的冪次,那麼,該邊緣方程式的係數可以基於該預定量來偏移該邊緣方程式的係數而修正。如另一範例,該等係數可以根據下面方程式藉由該預定量來修正:Eo+Ex(x+/-ErrorX)+Ey(y+/-ErrorY)
在上面所述的方程式中,可以選擇性增刪該誤差項的係數。明確地係,可以選擇該誤差項以藉由該誤差項放大該基元。表1例示用於選擇每個套用誤差項的符號(+/-)的示範性配置,換言之,該等符號係基於該
邊緣的方向與方位。
在步驟106,接著,使用該放大基元來決定相交該基元的像素。如一選擇,根據步驟106只分析一像素子集。例如,步驟106,執行有關精細格柵處理,且此外,可只針對在粗糙格柵處理期間所決定之多像素色塊中的像素來執行,用以相交該基元。下面將提供關於此粗糙格柵處理的更多資訊。
在一實施例中,當判斷該像素的所有邊角不是在該經放大基元之任何邊緣的負向側;或者,換言之,該像素的所有四個邊角不是在該經放大基元之任何邊緣外側時,則可判斷該像素至少可能相交該基元。當步驟106僅判斷一像素可能相交該基元時,可以執行進一步處理以判斷該像素是否實際相交該基元。下面將更詳細說明此進一步處理。
現將提出關於各種選擇性架構和特點的更多解釋性資訊,端視使用者的需求,可以或無需藉由由其來實施前述基礎架構。應該強烈注意,下面資訊之提出僅為解釋之目的,而不應視為限制。任何下面特點可以選擇性併入、排除或不排除已述的其他特點。
第二圖例示根據另一實施例之用於一粗糙格柵和一精細格柵兩者中保守格柵化基元之方法200的流程圖。如一選擇,本方法200可實現在第一圖之功能的背景中。然而,理所當然,方法200亦可實現在任
何想要的環境中。還應該注意,前述定義可應用在本說明中。
在步驟202,一基元的頂點貼齊至固定數量的位元。除此之外,在步驟204算出該基元的邊緣係數和一框格。因此,該等邊緣係數和該框格可以反映貼齊後的該基元的定位。在本說明中,該框格可以為圍繞(即是,圍起)該基元的最小矩形。
在步驟206,決定相交該基元的一或多個粗糙色塊。該等粗糙色塊可為一預先配置大小的任何像素區塊(例如,16x16個像素)。該基元可以粗糙色塊梯階來掃描,用以判斷每個色塊是否相交該基元。下列情況則可以判斷該基元相交該粗糙色塊,倘若:1)框格必須相交該粗糙色塊;及2)不是該粗糙色塊的所有邊角是在該基元之任何邊緣的負向側。如一選擇(未顯示),針對判斷相交該基元的每個粗糙色塊,進一步判斷構成粗糙色塊的每個精細色塊(例如,8x8個像素)是否相交該基元。
針對每個經決定的粗糙色塊,還決定相交該基元的粗糙色塊的像素。注意步驟208。當已經決定相交的精細色塊(未顯示),或者亦可以決定相交該基元的每個相交精細色塊的像素。在保守格柵化期間,倘若一像素區域的任何部分碰觸該基元,則可判斷該像素相交該基元。
為達此目的,一階層技術可以用來決定相交該基元的像素。換言之,在步驟206,決定相交該基元的粗糙色塊,而進一步在步驟208,針對每個經決定的粗糙色塊,決定相交該基元之此粗糙色塊的像素。在步驟210,處理該等經決定的像素。下面參考第四圖說明此處理的範例。
第三A圖例示根據仍然另一實施例之使用誤差項在精細格柵中保守格柵化基元之方法300的流程圖。如一選擇,本方法300可以實現在第一至二圖之功能的背景中。例如,方法300可以在第二圖的步驟208期間實現。然而,理所當然地,方法300亦可實現在任何想要的環境中。再者,應該注意,前述定義可應用在本說明中。
在步驟302,找出一像素。例如,該像素可以包括在先前判斷相交一基元的粗糙色塊。為了保守判斷該像素是否相交基元,可以使用該像素的邊角作為相交判斷的基礎,而不是基於取樣點數是否以傳統格柵化技術達成的判斷。此外,只要選擇正確的邊角,每個邊緣只需要計算四
個邊角之其中一者。換言之,倘若選擇正確邊角,只需要以該基元為基準來測試該邊角。要選擇的正確邊角是距離該邊緣之最遠一者,其位於與該基元相同的該邊緣之側邊。該邊緣的方向與方位能夠藉由如上面表1所示邊緣係數的符號來決定。該等符號會隨著如何定義該等邊緣與座標系統而不同,但觀念則是相同。
為有效測試選定的邊角,在步驟304,該基元藉由偏移該基元之每個邊緣一第一預定量而放大。例如,傳統鋸齒光柵器具有一取樣點,其定義在該像素的中心。方法300的保守格柵可以藉由偏移該中心取樣至該基元之每個邊緣的選定邊角來實施,換言之,藉由該第一預定量在正確的方向中偏移該基元的每個邊緣,以使該中心取樣看似一邊角點。該第一預定量可為一預設分數像素大小,例如,該像素大小的一半。
特別的係,步驟304可以包括藉由該第一預定量來修正定義該邊緣的邊緣方程式的係數,以放大該基元。下面的方程式顯示用於修正係數以偏移該基元的技術範例:Eo+Ex(x+/-.5)+Ey(y+/-.5)=Eo’+Ex(x)+Ey(y)
其中,Eo’=(Eo+/-.5Ex+/-.5Ey)或Eo’=(Eo+/-Ex>>1+/-Ey>>1)
其中,>>表示右移。
為達此目的,該等係數可以藉由相同的第一預定量來修正,但是,藉由修正該等係數的符號(即是,+或-)可以不同。在本實施例中,該符號可以基於該邊緣的方向和方位來選擇,如表1的配置。
此外,在步驟306,該基元藉由一誤差項以偏移該基元之每個邊緣而進一步放大。該誤差項可為一第二預定量,其小於用來偏移該基元之位置的第一預定量。因此,該基元可以藉由該第一預定量和該誤差項而放大。在步驟308,針對該基元算出的框格同樣藉由偏移該框格之每個邊緣而放大。例如,該框格的每個邊緣可以藉由用來放大該基元的誤差項而偏移。
接著,在步驟310,判斷該像素取樣是否相交該經放大基元。倘若判斷該像素取樣未相交該經放大基元,在步驟312,判斷該像素未
相交該基元。然而,倘若在步驟310,判斷該像素取樣相交該經放大基元,在步驟314,進一步判斷該像素取樣是否相交該經放大框格。倘若判斷該像素取樣未相交該經放大框格,在步驟312,判斷該像素未相交該基元。然而,倘若在步驟314,判斷該像素取樣相交該經放大框格,則判斷該像素相交該基元。注意步驟316。
第三B圖例示根據另一實施例之一像素320相交一基元322。如圖示,每個邊緣具有位於該邊緣內的至少一像素邊角326。除此之外,基元322的框格324係相交像素320。因為基元322的框格324係相交像素320且每個邊緣具有位於該邊緣內的至少一像素邊角326,其判斷該像素係相交該基元。
第四圖例示根據一實施例之處理管線400的概念圖。如一選擇,圖形處理管線400可以實施用以實現第一至三A圖的方法。然而,理所當然地,圖形處理管線400可實行在任何想要的環境中。再者,應該注意,前述定義可應用在本說明中。
圖形處理管線400可以利用一可程式化處理單元或利用用於一或多項功能的專屬處理單元來實施。一頂點處理單元406係一可程式化執行單元,其構成用以執行頂點著色器程式,如頂點著色器程式所指定,照明和轉換頂點資料。例如,頂點處理單元406可程式化用以將頂點資料從一以物件為主的座標代表符(物件空間)轉換成一以交替式為主座標系統,例如,世界座標空間或正規化裝置座標(NDC,Normalized Device Coordinate)空間。
棋盤化與幾何處理單元408係一可程式化執行單元,其構成用以執行棋盤化著色器程式。棋盤化與幾何處理單元408處理經由頂點處理單元406所產生的頂點並且可以構成用以產生稱為塊面(patch)的圖形基元及各種塊面屬性。在某些實施例中,棋盤化與幾何處理單元408亦可以執行拓樸配置,為頂點(包括有關塊面的頂點)編索引,及計算對應該等頂點的圖紋座標。棋盤化與幾何處理單元408亦可構成用以執行幾何著色器程式,從而轉換圖形基元。頂點會被組群以建構用於處理的圖形基元,其中,圖形基元包括三角形、線段、點、及類似物。例如,棋盤化與幾何處理單
元408可以程式化用以將該等圖形基元細分成一或多個新圖形基元並且計算用來格柵化該等新圖形基元的參數(例如,平面方程式係數)。在某些實施例中,棋盤化與幾何處理單元408亦可在幾何串流中加入或刪除元素。棋盤化與幾何處理單元408輸出參數及頂點,用以指定新圖形基元至一視區縮放、揀選、及剪輯單元412。
視區縮放、揀選、及剪輯單元412接收有關一物件的幾何資料並且執行該幾何資料的視區轉換,以在二維螢幕空間中產生該物件之頂點的座標。視區縮放、揀選、及剪輯單元412中的視區處理單元可以構成用以執行視區轉換,以基於視區解析度來改變貼齊間隔。通常對應二維網格或空間的特定解析度(例如,以像素為單位的寬度和高度)指定用於視區轉換。該二維空間中的該物件的頂點的座標具有對應此解析度的數值。因此,對於320x240個像素的解析度來說,一物件的頂點的水平座標範圍是從0至320,而垂直座標範圍可從0至240。對其他解析度來說,座標可以有不同的範圍。
視區轉換的計算通常包括特定捨入。即是,視區轉換所產生的座標具有特定的捨入數量,其意義為,用於產生螢幕空間頂點的計算結果會捨入至一特定精確度。視區轉換亦會將物件頂點的座標「貼齊」至一指定的子像素網格。換言之,經過視區轉換的物件頂點的螢幕空間位置會對齊一網格,其中,該網格中的蜂巢(或是「子像素」)的大小等於一指定的分數像素(例如,該網格中的所有蜂巢的大小等於一像素的1/4或1/64)。貼齊間隔會控制相對於視區之解析度貼齊頂點的精確度。貼齊間隔係網格中蜂巢的維度(高度或寬度)且指定為一分數像素。「貼齊」使一物件的座標對齊該子像素網格。視區轉換的結果包括貼齊和捨入的效果,且通常包括已對齊該子像素網格之每個物件的每個頂點的螢幕空間座標。
視區縮放、揀選、及剪輯單元412會執行剪輯、揀選、及視區縮放並且輸出經處理的圖形基元至一基元建立單元414。該基元建立單元414計算每個基元之每個邊緣的邊緣方程式係數(例如,起始數值、delta_x、delta_y、邊緣斜率、等)。當使用貼齊時,一邊緣可以藉由一基元的該等已調整(即是,已貼齊)頂點之兩者來定義。
建立單元414可構成用以藉由誤差項放大該基元及藉由誤差項放大該框格以補償因貼齊所造成的不一致性。在一實施例中,建立單元414會基於最左頂點來決定一起始色塊。所有邊緣方程式係基於該起始色塊。在建立單元414的輸出,該等邊緣係數為固定點且於所有情況中皆完全精確。因此,在此點重新參考該等邊緣方程式並不會改變基元位置或形狀。換言之,從建立單元414至該圖形處理管線的下游處理單元,保守格柵化會保持一致。
併入邊緣方程式的係數的誤差項可以考量放大以及使中心像素取樣看似每個像素之邊角點所需的半像素偏移。請注意,可以藉由膨脹該等邊緣1/2個像素或藉由進行從中心至邊角的偏移來執行半像素偏移。
Eo+Ex(starting_tileX_16x16+/-errorX)+Ey(starting_tileX_16x16+/-errorY)
誤差項的符號是由邊緣方位與方向來決定。上面表1顯示用於決定符號的配置。
在保守格柵化中,一基元的所有邊緣皆納入,其意義為倘若該邊緣完全落在該取樣點上,該取樣點則在該基元上。存在於建立單元414以納入左側/頂側邊緣與排除右側/底側的任何邏輯可以停用。邊緣雖然納入建立單元414所算出的框格;然而,該框格可以經由誤差項的絕對值放大。倘若該框格側邊貼齊落在該框格內側的最近取樣點,必須停用框格之縮小。建立單元414可以構成使用8個分數位元來計算框格維度並且在建立單元414的輸出處截尾至4位分數位元。截尾運算可以限制該框格之左側與頂側的下界,並且在截尾至4個分數位元時,限制右側與底側的上界。
零區基元
或者在建立單元414的背景中,可以運用一種格柵化零區基元的技術。首先,找出因共線頂點的關係而有零區的基元。該基元的一最小頂點與一最大頂點可以決定,以定義該基元為一線條。此外,屬性可以沿著該線條內插。
就透過範例言之,零區基元會導致一點或線條。其可能因貼
齊或不精確的上游而發生。零區基元可由建立運算來處理。因此,零區基元可視為一點或線條。即使該基元'經過放大(例如,放大至少.5個像素),建立單元414仍從一線條開始。建立單元414可以構成用以在算出該基元的該區域之後,從三角形基元改變成線條或點模式。倘若全部三個頂點放在一起,便會畫出一點;而倘若兩頂點放在一起,則畫出一條線。倘若三個頂點中沒有任何頂點放在一起但卻仍為零區,該條線條的兩頂點則為落在框格上的兩頂點。
光柵器416會從基元建立單元414接收一物件的頂點的螢幕空間座標及邊緣方程式係數。因此,光柵器416所收到之邊緣方程式係數可能為已修正用以放大該基元的邊緣方程式係數。光柵器416採用來自建立單元的基元和邊緣方程式,並且估算由該基元建立單元414所提供的邊緣方程式,已決定該物件的取樣或像素的涵蓋範圍。光柵器416會掃描轉換該等新圖形基元,並且輸出片段和涵蓋資料給片段處理單元460。此外,光柵器416還可構成用以執行z揀選和其他基於z的最佳化。在一實施例中,光柵器416可以實施為一粗糙光柵器,以計算粗糙涵蓋資訊;及一精細光柵器,以計算子像素微度之涵蓋資訊。
保守深度
在某些情況中,可能想要有保守深度(例如,用於Z揀選、保守補償、...等)。首先,找出一像素的三角形或色塊的Z定位點。例如,藉由建立運算可算出每個基元的定位點;或者,從每個基元的定位點,精細格柵可以計算一每個色塊定位點。該Z定位點接著會以預設分數像素偏移,以將該Z定位點置放在該像素的一角處。或者,該定位點偏移可以應用在建立運算(每個基元)或精細格柵(每個色塊)。置放在該像素邊角的Z定位點會接著估算,以提供該像素的最大Z值或最小Z值之一者。
就透過範例言之,保守深度能夠藉由決定Z斜率方向及估算一色塊之最小或最大邊角的Z來達成。倘若Z係基於平面方程式算出,例如,倘若Z的計算如下:Z=Z0+dz/dx*delta_x+dz/dy*delta_y
其中,delta_x和delta_y描述取樣位置,那麼,估算在最小或最大邊角的Z可以藉由將Z定位點(Z0)朝最小或最大Z偏移1/2個像素來達成,例如,倘若Z隨著X增加且隨著y減少,可以下面公式來計算每個像素的最大Z。
Z0+=dz/dx*0.5+dz/dy*-0.5
片段處理單元422係一可程式化執行單元,其構成用以執行片段著色器程式,轉換接收自光柵器416的片段,如該等片段著色器程式的指定。例如,片段處理單元422可以程式化用以執行諸如透視修正、圖紋映射、著色器、摻合、及類似的運算,用以產生已著色器片段,以輸出至格柵運算單元424。片段可以在像素、取樣、或是其他微度進行著色,端視程式化的取樣率而定。
格柵運算單元424係一處理單元,用以執行格柵運算(例如,模板、z測試、摻合、及類似運算),及輸出像素資料當作要儲存在圖形記憶體的經處理圖形資料。該經處理圖形資料可儲存在記憶體,用以顯示或進一步處理。在本發明的某些實施例中,格柵運算單元424構成用以壓縮寫入記憶體的z或顏色資料,及解壓縮讀取自記憶體的z或顏色資料。
第四B圖例示根據一實施例之用以調整頂點位置之方法430的另一流程圖。方法430中所示的步驟可以由一應用程式執行,例如,一頂點著色器,其可由一圖形處理器執行。方法430中所示的步驟可以由一圖形處理器中的處理單元執行,例如,視區縮放、揀選、及剪輯單元412。在步驟435,一應用程式或一處理單元接收視區維度。在步驟440,該方法會判斷該等視區維度是否縮減而使得應該改變貼齊精確度,且若是,在步驟445,提高貼齊間隔精確度。否則,在步驟450,該方法判斷該等視區維度是否提高而使得應該改變貼齊精確度,且若是,在步驟455,降低貼齊間隔精確度。否則,不改變貼齊間隔。
在步驟460,基元頂點位置會根據視區相依的貼齊間隔調整至一子像素網格,以產生已貼齊的頂點位置。在步驟465,格柵化該等已貼齊的頂點位置所定義的基元。
第五圖例示根據一實施例之平行處理單元(PPU,Parallel
Processing Unit)500。雖然本說明書提供一平行處理器作為平行處理單元500的範例;不過,應該強烈注意,所提出的此處理器只是解釋之目的,而且可以運用任何處理器來增補及/或取代,而達到相同目的。在一實施例中,平行處理單元500構成用以在兩或多個串流多處理器(SM,Streaming Multi-processor)550中同時執行複數個執行緒。執行緒(即是,一執行線程)係在一特殊串流多處理器550中執行的一組指令的例證。每個串流多處理器550(下面將配合第六圖作更詳細說明)可以包括(但是並不受限於)一或多個處理核、一或多個載入/儲存單元(LSU,Load/Store Unit)、一第一層(L1)快取、共用記憶體、及類似物。
在一實施例中,平行處理單元500包括一輸入/輸出(I/O,Input/Output)單元505,其構成用以在系統匯流排502上從一中央處理單元(CPU,Central Pprocessing Unit)(未顯示)傳送及接收通訊。輸入/輸出單元505可以於高速周邊器件互連(PCIe,Peripheral Component Interconnect express”)介面實施一高速周邊器件互連匯流排供通訊。在替代實施例中,輸入/輸出單元505可以實施其他類型眾所熟知的匯流排介面。
平行處理單元500還包括一主介面單元510,該主介面單元可以解碼命令,且猶如該等命令可指定,傳送該等命令至平行處理單元500(例如,記憶體介面580)的網格管理單元515或其他單元。在網格管理單元515的環境中,一網格係一處理工作量。主介面單元510構成用以在平行處理單元500的各種邏輯單元之間和之中傳送通訊。
在一實施例中,一編碼成命令串的程式會被中央處理單元寫入一緩衝器。緩衝器係中央處理單元和平行處理單元500兩者可存取(即是,讀取/寫入)的記憶體(例如,記憶體504或系統記憶體)中的一區域。中央處理單元將該命令串寫至該緩衝器且接著傳送一指向該命令串之起點的指標給平行處理單元500。主介面單元510提供網格管理單元(GMU,Grid Management Unit)515,其具有指向一或多個串流的指標。網格管理單元515選擇一或多個串流且構成用以將選定的串流組織成一群待用網格。該群待用網格可以包括尚未選擇用於執行的新網格及已部分執行而已經中止的網格。
一工作分配單元520耦合在網格管理單元515和串流多處理器550之間,其會管理一群主動網格,從而選擇及派遣主動網格讓該等串流多處理器550執行。當一待用網格適合執行時,即是,沒有任何未解的資料相依性,待用網格便會被網格管理單元515傳輸至主動網格群。當一主動網格的執行受到相依性而阻斷時,該主動網格便會傳輸至待用群。當一網格的執行完成時,該網格便會被工作分配單元520從主動網格群處移除。除了從主介面單元510和工作分配單元520接收網格之外,網格管理單元510還會接收網格,該等網格是在一網格執行期間由串流多處理器550動態產生。這些動態產生的網格會加入待用網格群中的其他待用網格。
在一實施例中,中央處理單元執行一驅動器核心,該驅動器核心實施一應用程式介面(API,Application Programming Interface),讓該中央處理單元執行一或多個應用程式,用以排程於平行處理單元500執行的運算。一應用程式可包括產生指令(即是,應用程式介面呼叫),用於使該驅動器核心產生用於執行的一或多個網格。在一實施例中,平行處理單元500實施SIMD(單指令多資料)架構,其中,一網格中的每個執行緒區塊(即是,線程束)會由該執行緒區塊中的不同執行緒同時在不同的資料集上執行。該驅動器核心定義由k條相關執行緒構成的執行緒區塊,使得相同執行緒區塊中的執行緒可以經由共用的記憶體來交換資料。在一實施例中,一執行緒區塊包括32個相關執行緒,而一網格則係由執行相同串流的一或多個執行緒區塊組成的陣列,而且該等不同的執行緒區塊可以經由全域記憶體來交換資料。
在一實施例中,平行處理單元500包括X個串流多處理器550(X)。例如,平行處理單元500可包括15個不同的串流多處理器550。每個串流多處理器550皆係多執行緒且構成同時執行來自一特殊執行緒區塊的複數個執行緒(例如,32個執行緒)。該等串流多處理器550之每一者會透過一縱橫交叉網路560(或是其他類型的互連網路)連接至第二層(L2)快取565。
第二層快取565連接至一或多個記憶體介面580。記憶體介面580實施16、32、64、128位元資料匯流排或類似物,以供高速資料傳
輸。在一實施例中,平行處理單元500包括U個記憶體介面580(U),其中,每個記憶體介面580(U)連接至一對應的記憶體裝置504(U)。例如,平行處理單元500可以連接至高達6個記憶體裝置504,例如,第五版本的圖形雙資料速率同步動態隨機存取記憶體(GDDR5 SDRAM,Graphics Double-Data-Rate,version 5,Synchronous Dynamic Random Access memory)。
在一實施例中,平行處理單元500實施多層記憶體架構。記憶體504採用分離式元件設計置放在耦合至平行處理單元500的同步動態隨機存取記憶體之中。來自記憶體504的資料可擷取及儲存在第二層快取565,該第二層快取置放在晶片上且在不同的串流多處理器550之間共用。在一實施例中,串流多處理器550之每一者亦實施一第一層快取。第一層快取為專屬於一特殊串流多處理器550的私有記憶體。第一層快取之每一者耦合至共用的第二層快取565。來自第二層快取565的資料可擷取及儲存在每個第一層快取,以在串流多處理器550的功能單元中進行處理。
在一實施例中,平行處理單元500包括一圖形處理單元(GPU)。平行處理單元500構成用以接收指定著色器程式的命令,以處理圖形資料。圖形資料可定義為一組基元,例如,點、線條、三角形、四邊形、三角帶、及類似物。一般來說,一基元包括指定該基元的頂點數量(例如,在模型空間座標系統中)及有關該基元之每個頂點之屬性的資料。平行處理單元500構成用以處理該等圖形基元,用以產生一訊框緩衝器(即是,顯示器的每個像素的像素資料)。驅動器核心實施一圖形處理管線,例如,由OpenGL API所定義的圖形處理管線。
一應用程式會將一畫面的模型資料(即是,大量的頂點和屬性)寫至記憶體。該模型資料定義可以在顯示器上看見的每個物件。該應用程式接著對驅動器核心進行一應用程式介面呼叫,請求要成像和顯示的模型資料。該驅動器核心讀取該模型資料並將命令寫至緩衝器,用以執行一或多個運算,以處理該模型資料。該等命令可以編碼包括不同著色器程式,包括下面一或多者:頂點著色器、外殼著色器、幾何著色器、像素著色器、...等。
網格管理單元515可以構成一或多個串流多處理器550,用
以實施第四A圖所示之處理單元(例如,頂點處理單元、棋盤化處理單元、幾何處理單元、及片段處理單元)之一或多者的功能。視區縮放、揀選、及剪輯處理單元、粗糙光柵器、精細光柵器、及格柵運算單元的功能亦可由網格管理單元515中的其他處理引擎來實施。
例如,網格管理單元515可以構成一或多個串流多處理器550,用以執行一頂點著色器程式,以處理由模型資料所定義的數個頂點。在一實施例中,網格管理單元515可以構成不同的串流多處理器550,用以同時執行不同的著色器程式。例如,串流多處理器550的一第一子集可以構成用以執行一頂點著色器程式,而串流多處理器550的一第二子集可以構成用以執行一像素著色器程式。串流多處理器550的該第一子集處理頂點資料,以產生經處理的頂點資料且將該經處理的頂點資料寫至第二層快取565及/或記憶體504。在該經處理的頂點資料格柵化(即是,從三維資料轉換成螢幕空間中的二維資料)而產生片段資料之後,串流多處理器550的該第二子集便執行像素著色器,以產生經處理的片段資料,該經處理的片段資料接著和其他經處理的片段資料摻合並寫至記憶體504的訊框緩衝器。頂點著色器程式和像素著色器程式可以同時執行,以管線的方式處理來自相同畫面的不同資料,直到該畫面中的所有模型資料皆成像至訊框緩衝器為止。接著,訊框緩衝器的內容傳送至顯示控制器,以顯示在一顯示裝置上。
平行處理單元500可併入桌上型電腦、膝上型電腦、平板電腦、智慧型電話(例如,無線、手持裝置)、個人數位助理(PDA,Personal Digital Assistant)、數位相機、手持電子裝置、及類似物。在一實施例中,平行處理單元500為具體實施在單一半導體基板上。在另一實施例中,平行處理單元500連同一或多個其他邏輯單元(例如,精簡指令集電腦(RISC,Reduced Instruction Set Computer)中央處理單元、記憶體管理單元(MMU,Memory Management Unit)、數位對類比轉換器(DAC,Digital-to-Analog Converter)、及類似物)一起併入晶片系統(SoC,System-on-a-Chip)。
在一實施例中,平行處理單元500可併入在包括一或多個記憶體裝置504(例如,第五版本的圖形雙資料速率同步動態隨機存取記憶體)
的圖形卡上。圖形卡可以構成用以介接包括北橋晶片組和南橋晶片組的桌上型電腦的主機板上的高速周邊器件互連狹槽。在仍然一實施例中,平行處理單元500可為併入在該主機板之晶片組(即是,北橋)中的一整合式圖形處理單元(iGPU,Integrated Graphics Processing Unit)。
第六圖例示根據一實施例之第五圖的串流多處理器550。如第六圖所示,串流多處理器550包括一指令快取605、一或多個排程器單元610、一暫存器檔620、一或多個處理核650、一或多個雙精確度單元(DPU,Double Precision Unit)651、一或多個特殊功能單元(SFU,Special Function Unit)652、一或多個載入/儲存單元(LSU)653、一互連網路680、一共用記憶體/第一層快取670、及一或多個圖紋單元690。
如上述,工作分配單元520會派遣主動網格用以在平行處理單元500之一或多個串流多處理器550上執行。排程器單元610可從工作分配單元520接收該等網格並管理每個主動網格之一或多個執行緒區塊的指令排程。排程器單元610可排程用於多群組平行執行緒中執行的執行緒,其中,每一群組皆稱為線程束。在一實施例中,每一線程束包括32個執行緒。排程器單元610可以管理複數個不同的執行緒區塊,分派該等執行緒區塊給線程束供執行,接著在每個時脈循環期間排程來自各種功能單元(即是,核650、雙精確度單元651、特殊功能單元652、及載入/儲存單元653)上該等複數個不同線程束的指令。
在一實施例中,每個排程器單元610包括一或多個指令派遣單元615。每個派遣單元615構成用以傳送指令至該等功能單元之一或多者。在第六圖所示的實施例中,排程器單元610包括兩派遣單元615,其可在每個時脈循環期間讓來自相同線程束的兩不同指令派遣。在替代實施例中,每個排程器單元610可以包括單一派遣單元615或額外的派遣單元615。
每個串流多處理器650皆包括一暫存器檔620,其提供一組暫存器供該串流多處理器650的功能單元使用。在一實施例中,暫存器檔620會分割在該等功能單元之每一者之間,使得每個功能單元可配置該暫存器檔620的一專屬部分。在另一實施例中,暫存器檔620會分割在由串流多處理器550執行的不同線程束之間。暫存器檔620提供運算元的暫時儲
存,該運算元則為連接該等功能單元的資料路徑。
每個串流多處理器550包括L個處理核650。在一實施例中,串流多處理器550包括大量(例如,192個、...等)不同的處理核650。每個核650為一完全管線單精確度處理單元,其包括一浮點算術邏輯單元和一整數算術邏輯單元。在一實施例中,該浮點算術邏輯單元實施有關浮點算術的IEEE 754-2008標準。每個串流多處理器550還包括M個用於實施雙精確度浮點算術的雙精確度單元651,N個用於實施特殊功能(例如,複製矩形、像素摻合運算、及類似功能)的特殊功能單元652、及P個用於在共用記憶體/第一層快取670及暫存器檔620之間實施載入與儲存運算的載入/儲存單元653。在一實施例中,串流多處理器550包括64個雙精確度單元651、32個特殊功能單元652、及32個載入/儲存單元653。
每個串流多處理器550包括一互連網路680,其連接該等功能單元之每一者至暫存器檔620和共用記憶體/第一層快取670。在一實施例中,互連網路680係一縱橫交叉網路,其構成用以連接該等功能單元之任一者至暫存器檔620中的該等暫存器或共用記憶體/第一層快取670中的記憶體位置之任一者。
在一實施例中,串流多處理器550實施在一圖形處理單元中。在此實施例中,串流多處理器550包括J個圖紋單元690。該等圖紋單元690構成用以從記憶體504處載入圖紋映射(即是,2D的圖紋元素陣列)並且取樣該等圖紋映射,用以產生使用在著色器程式的已取樣圖紋值。該等圖紋單元690實施圖紋運算,例如,利用mip-map(即是,具有不同細節準位的圖紋映射)的抗鋸齒運算。在一實施例中,串流多處理器550包括16個圖紋單元690。
上述的平行處理單元500可以構成用以執行高度平行計算,遠快於習知中央處理單元。平行計算有利於圖形處理、資料壓縮、生物測定、串流處理演算法、及類似處理。
第七圖為可於其中實施各種前面實施例之各種架構及/或功能的示範性系統700。如圖示,本發明提供的系統700包括至少一中央處理器701,其連接至一通訊匯流排702。通訊匯流排702可以利用任何合宜協
定來實施,例如,PCI(周邊器件互連)、高速周邊器件互連、AGP(加速圖形埠)、HyperTransport、或是任何其他匯流排或點對點通訊協定。系統700還包括一主記憶體704。控制邏輯(軟體)和資料儲存在該主記憶體704中,該主記憶體704的形式可以為隨機存取記憶體(RAM,Random Access Memory)。
系統700還包括:輸入裝置712、一圖形處理器706、及一顯示器708,即是,一習知的陰極射線管(CRT,Cathode Ray Tube)、液晶顯示器(LCD,Liquid Crystal Display)、發光二極體(LED,Light Emitting Diode)、電漿顯示器、或類似物。使用者輸入可以接收自輸入裝置712,例如,鍵盤、滑鼠、觸控墊、麥克風、及類似物。在一實施例中,圖形處理器706可以包括複數個著色器模組、一格柵化模組、...等。前述模組之每一者甚至可位在單一半導體平台上,用以形成一圖形處理單元(GPU)。
在本說明中,單一半導體平台可以指基於單一半導體的積體電路或晶片。應注意,術語「單一半導體平台」亦可以指具有增強連接性的多晶片模組,其模擬晶片上操作且有優於運用習知中央處理單元(CPU)與匯流排施施方式的實質改良。當然,該等各種模組亦可以依照使用者的需求而分開置放或置放在各種組合的半導體平台中。
系統700可以還包括一輔助儲存體710。例如,輔助儲存體710包括(例如)一硬碟機及/或一抽取式儲存機,抽取式儲存機可為一磁碟機、磁帶機、光碟機、數位多功能光碟(DVD,Digital Versatile Disk)機、記錄裝置、通用序列匯流排(USB,Universal Serial Bus)快閃記憶體。抽取式儲存機可以眾所熟知的方式從一抽取式儲存單元處進行讀取及/或寫入。
電腦程式或電腦控制邏輯演算法可以儲存在主記憶體704及/或輔助儲存體710。此電腦程式執行時可讓系統700執行各種功能。例如,構成檢查著色器程式及啟用或停用屬性緩衝器結合的編譯程式可儲存在主記憶體704。編譯程式可由中央處理器701或圖形處理器706執行。主記憶體704、儲存體710、及/或任何其他儲存體都是電腦可讀媒體的可能範例。
在一實施例中,前面各圖的架構及/或功能可以實施於下列
環境:中央處理器701、圖形處理器706、具有中央處理器701及圖形處理器706兩者之至少一部分能力的積體電路(未顯示)、一晶片組(即是,設計成作為實施相關功能之單元來工作及銷售的一群積體電路、...等)、及/或用於該目的的任何其他積體電路。
然而,前面各圖的架構及/或功能亦可以實施於下列環境:一通用電腦系統、一電路板系統、一專用於娛樂用途之遊戲機系統、一特定應用系統、及/或任何其他想要系統。例如,系統700的形式可以為桌上型電腦、膝上型電腦、伺服器、工作站、遊戲機、嵌入式系統、及/或任何其他類型的邏輯。又,系統700的形式可以為各種其他裝置,包括,但是並不受限於個人數位助理(PDA)裝置、行動電話裝置、電視、...等。
此外,雖然圖未顯示,不過,系統700可以耦合至一網路(例如,電信網路;區域網路(LAN,Local Area Network);無線網路;廣域網路(WAN,Wide Area Network),例如,網際網路;點對點網路;有線網路;或是類似網路),以達通訊之目的。
雖然上面已述各種實施例;不過,應該瞭解,其僅透過範例來表示,沒有任何限制。因此,較佳實施例的範圍與範疇不應受限於任何上述示範性實施例,而應該僅根據文後申請專利範圍及其等效範圍來定義。
Claims (18)
- 一種用於格柵化基元之方法,其包括:決定一基元之每個邊緣的邊緣方程式,該邊緣方程式具有定義該基元之邊緣的係數;藉由一預定量的誤差項來修正定義該邊緣的邊緣方程式的至少二係數而改變該基元的每個邊緣以放大該基元;藉由一第二預定量來進一步修正定義該邊緣的邊緣方程式的該至少二係數,以額外改變該基元的每個邊緣以進一步放大該基元;及使用該放大基元以決定相交該基元的像素。
- 如申請專利範圍第1項的方法,其中,每個邊緣方程式的係數係從已貼齊至固定數量分數位元之基元的頂點處算出。
- 如申請專利範圍第1項的方法,其中,藉由該第二預定量來修正定義該邊緣的邊緣方程式的係數包括藉由相同的第二預定量來修正該至少二係數。
- 如申請專利範圍第1項的方法,其中,藉以修正該等係數的該第二預定量係一像素的預設分數大小。
- 如申請專利範圍第4項的方法,其中,藉以修正該等係數的該第二預定量係該像素之大小的一半。
- 如申請專利範圍第1項的方法,其中,該預定量小於該第二預定量。
- 如申請專利範圍第2項的方法,其中,該預定量為藉以貼齊該基元之該邊緣的一距離之一半。
- 如申請專利範圍第1項的方法,其中,當該預定量為2的冪次時,藉由該誤差項來修正該邊緣方程式的係數包括依據該預定量以改變該邊緣方程式的該至少二係數。
- 如申請專利範圍第1項的方法,其更包括:決定該基元之該等邊緣的框格;以及改變該框格的每個邊緣,以放大該框格。
- 如申請專利範圍第9項的方法,其中,該框格的每個邊緣係藉由下面方 藉由該預定量的誤差項來修正該包圍框格的每個邊緣。
- 如申請專利範圍第1項的方法,其中,該邊緣方程式的該係數為固定點值。
- 如申請專利範圍第9項的方法,更包括當一像素相交該經放大基元及該像素未相交於該經放大框格時,判斷該像素未相交該基元。
- 一種用以儲存指令的非暫時性電腦可讀儲存媒體,當一處理器執行該等指令時,執行一方法以格柵化基元,該方法包括:決定一基元之每個邊緣的邊緣方程式,該邊緣方程式具有定義該基元之邊緣的係數;藉由一預定量的誤差項來修正定義該邊緣的邊緣方程式的至少二係數而改變該基元的每個邊緣以放大該基元;藉由一第二預定量來進一步修正定義該邊緣的邊緣方程式的該至少二係數,以額外改變該基元的每個邊緣以進一步放大該基元;及使用該放大基元來決定相交該基元的像素。
- 如申請專利範圍第13項的非暫時性電腦可讀儲存媒體,其中,該邊緣方程式的該係數為固定點值。
- 如申請專利範圍第13項的非暫時性電腦可讀儲存媒體,更包括:決定用於該基元之該邊緣的一框格;改變該框格的每個邊緣以放大該框格;及當一像素相交該經放大基元及該像素未相交於該經放大框格時,判斷該像素未相交該基元。
- 一種系統,其包括:一處理器,其構成用以:決定一基元之每個邊緣的邊緣方程式,該邊緣方程式具有定義該基元之邊緣的係數;藉由一預定量的誤差項來修正定義該邊緣的邊緣方程式的至少二係數而改變該基元的每個邊緣以放大該基元;藉由一第二預定量來進一步修正定義該邊緣的邊緣方程式的該至少二係數,以額外改變該基元的每個邊緣以進一步放大該基元;及 使用該放大基元來決定相交該基元的像素。
- 如申請專利範圍第16項的系統,其中,該邊緣方程式的該係數為固定點值。
- 如申請專利範圍第16項的系統,其中該處理器更設置於:決定用於該基元之該邊緣的一框格;改變該框格的每個邊緣以放大該框格;及當一像素相交該經放大基元及該像素未相交於該經放大框格時,判斷該像素未相交該基元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/844,093 US9633469B2 (en) | 2013-03-15 | 2013-03-15 | Conservative rasterization of primitives using an error term |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201439968A TW201439968A (zh) | 2014-10-16 |
TWI552109B true TWI552109B (zh) | 2016-10-01 |
Family
ID=51418667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102148772A TWI552109B (zh) | 2013-03-15 | 2013-12-27 | 一種使用誤差項之保守格柵化基元的方法、非暫時性電腦可讀儲存媒體及系統 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9633469B2 (zh) |
CN (1) | CN104050626B (zh) |
DE (1) | DE102013114090B4 (zh) |
TW (1) | TWI552109B (zh) |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9218679B2 (en) * | 2012-10-08 | 2015-12-22 | Intel Corporation | Reduced bitcount polygon rasterization |
US9478066B2 (en) | 2013-03-14 | 2016-10-25 | Nvidia Corporation | Consistent vertex snapping for variable resolution rendering |
GB2524121B (en) * | 2014-06-17 | 2016-03-02 | Imagination Tech Ltd | Assigning primitives to tiles in a graphics processing system |
GB2532495B (en) * | 2014-11-21 | 2018-05-02 | Advanced Risc Mach Ltd | Graphics processing systems |
GB2540983B (en) * | 2015-08-03 | 2017-11-29 | Advanced Risc Mach Ltd | Graphics processing |
US20170132833A1 (en) * | 2015-11-10 | 2017-05-11 | Intel Corporation | Programmable per pixel sample placement using conservative rasterization |
US10089788B2 (en) * | 2016-05-25 | 2018-10-02 | Google Llc | Light-field viewpoint and pixel culling for a head mounted display device |
US10019836B2 (en) * | 2016-05-27 | 2018-07-10 | Intel Corporation | Planar depth representations for block compression |
US10453241B2 (en) | 2017-04-01 | 2019-10-22 | Intel Corporation | Multi-resolution image plane rendering within an improved graphics processor microarchitecture |
US10572258B2 (en) | 2017-04-01 | 2020-02-25 | Intel Corporation | Transitionary pre-emption for virtual reality related contexts |
US10489915B2 (en) | 2017-04-01 | 2019-11-26 | Intel Corporation | Decouple multi-layer render fequency |
US10089230B1 (en) | 2017-04-01 | 2018-10-02 | Intel Corporation | Resource-specific flushes and invalidations of cache and memory fabric structures |
US10572966B2 (en) | 2017-04-01 | 2020-02-25 | Intel Corporation | Write out stage generated bounding volumes |
US10395623B2 (en) | 2017-04-01 | 2019-08-27 | Intel Corporation | Handling surface level coherency without reliance on fencing |
US10242494B2 (en) | 2017-04-01 | 2019-03-26 | Intel Corporation | Conditional shader for graphics |
US10152822B2 (en) | 2017-04-01 | 2018-12-11 | Intel Corporation | Motion biased foveated renderer |
US10424097B2 (en) | 2017-04-01 | 2019-09-24 | Intel Corporation | Predictive viewport renderer and foveated color compressor |
US10157493B2 (en) | 2017-04-01 | 2018-12-18 | Intel Corporation | Adaptive multisampling based on vertex attributes |
US10628907B2 (en) | 2017-04-01 | 2020-04-21 | Intel Corporation | Multi-resolution smoothing |
US10223773B2 (en) | 2017-04-01 | 2019-03-05 | Intel Corporation | On demand MSAA resolve during lens correction and/or other post-processing phases |
US10706612B2 (en) | 2017-04-01 | 2020-07-07 | Intel Corporation | Tile-based immediate mode rendering with early hierarchical-z |
US10591971B2 (en) | 2017-04-01 | 2020-03-17 | Intel Corporation | Adaptive multi-resolution for graphics |
US10235794B2 (en) | 2017-04-10 | 2019-03-19 | Intel Corporation | Multi-sample stereo renderer |
US10319064B2 (en) | 2017-04-10 | 2019-06-11 | Intel Corporation | Graphics anti-aliasing resolve with stencil mask |
US10497340B2 (en) | 2017-04-10 | 2019-12-03 | Intel Corporation | Beam scanning image processing within an improved graphics processor microarchitecture |
US10725929B2 (en) | 2017-04-10 | 2020-07-28 | Intel Corporation | Graphics memory extended with nonvolatile memory |
US10460415B2 (en) | 2017-04-10 | 2019-10-29 | Intel Corporation | Contextual configuration adjuster for graphics |
US11106274B2 (en) | 2017-04-10 | 2021-08-31 | Intel Corporation | Adjusting graphics rendering based on facial expression |
US10204393B2 (en) | 2017-04-10 | 2019-02-12 | Intel Corporation | Pre-pass surface analysis to achieve adaptive anti-aliasing modes |
US10235735B2 (en) | 2017-04-10 | 2019-03-19 | Intel Corporation | Graphics processor with tiled compute kernels |
US10152632B2 (en) | 2017-04-10 | 2018-12-11 | Intel Corporation | Dynamic brightness and resolution control in virtual environments |
US10204394B2 (en) | 2017-04-10 | 2019-02-12 | Intel Corporation | Multi-frame renderer |
US10109078B1 (en) | 2017-04-10 | 2018-10-23 | Intel Corporation | Controlling coarse pixel size from a stencil buffer |
US10373365B2 (en) | 2017-04-10 | 2019-08-06 | Intel Corporation | Topology shader technology |
US11030713B2 (en) | 2017-04-10 | 2021-06-08 | Intel Corporation | Extended local memory including compressed on-chip vertex data |
GB2561557B (en) * | 2017-04-13 | 2020-08-12 | Advanced Risc Mach Ltd | Graphics processing method and apparatus in which modified edge positions are used in rasterisation |
US10430147B2 (en) | 2017-04-17 | 2019-10-01 | Intel Corporation | Collaborative multi-user virtual reality |
US10290141B2 (en) | 2017-04-17 | 2019-05-14 | Intel Corporation | Cloud based distributed single game calculation of shared computational work for multiple cloud gaming client devices |
US10347039B2 (en) | 2017-04-17 | 2019-07-09 | Intel Corporation | Physically based shading via fixed-functionality shader libraries |
US10467796B2 (en) | 2017-04-17 | 2019-11-05 | Intel Corporation | Graphics system with additional context |
US10896657B2 (en) | 2017-04-17 | 2021-01-19 | Intel Corporation | Graphics with adaptive temporal adjustments |
US10192351B2 (en) | 2017-04-17 | 2019-01-29 | Intel Corporation | Anti-aliasing adaptive shader with pixel tile coverage raster rule system, apparatus and method |
US10846918B2 (en) | 2017-04-17 | 2020-11-24 | Intel Corporation | Stereoscopic rendering with compression |
US10401954B2 (en) | 2017-04-17 | 2019-09-03 | Intel Corporation | Sensory enhanced augmented reality and virtual reality device |
US10521876B2 (en) | 2017-04-17 | 2019-12-31 | Intel Corporation | Deferred geometry rasterization technology |
US10242486B2 (en) | 2017-04-17 | 2019-03-26 | Intel Corporation | Augmented reality and virtual reality feedback enhancement system, apparatus and method |
US10672175B2 (en) | 2017-04-17 | 2020-06-02 | Intel Corporation | Order independent asynchronous compute and streaming for graphics |
US10452552B2 (en) | 2017-04-17 | 2019-10-22 | Intel Corporation | Memory-based dependency tracking and cache pre-fetch hardware for multi-resolution shading |
US10719902B2 (en) | 2017-04-17 | 2020-07-21 | Intel Corporation | Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform |
US10242496B2 (en) | 2017-04-24 | 2019-03-26 | Intel Corporation | Adaptive sub-patches system, apparatus and method |
US10109039B1 (en) | 2017-04-24 | 2018-10-23 | Intel Corporation | Display engine surface blending and adaptive texel to pixel ratio sample rate system, apparatus and method |
US10728492B2 (en) | 2017-04-24 | 2020-07-28 | Intel Corporation | Synergistic temporal anti-aliasing and coarse pixel shading technology |
US10251011B2 (en) | 2017-04-24 | 2019-04-02 | Intel Corporation | Augmented reality virtual reality ray tracing sensory enhancement system, apparatus and method |
US10347357B2 (en) | 2017-04-24 | 2019-07-09 | Intel Corporation | Post-packaging environment recovery of graphics on-die memory |
US10643374B2 (en) | 2017-04-24 | 2020-05-05 | Intel Corporation | Positional only shading pipeline (POSH) geometry data processing with coarse Z buffer |
US10402933B2 (en) | 2017-04-24 | 2019-09-03 | Intel Corporation | Adaptive smart grid-client device computation distribution with grid guide optimization |
US20190318455A1 (en) | 2018-04-12 | 2019-10-17 | Nvidia Corporation | Adding greater realism to a computer-generated image by smoothing jagged edges within the image in an efficient manner |
GB2602686B (en) * | 2021-06-25 | 2022-12-28 | Imagination Tech Ltd | Efficient convolution operations |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6057855A (en) * | 1997-07-02 | 2000-05-02 | Hewlett-Packard Company | Method and apparatus for providing polygon pixel sub-sample information using incremental means |
US6317525B1 (en) * | 1998-02-20 | 2001-11-13 | Ati Technologies, Inc. | Method and apparatus for full scene anti-aliasing |
US20030122850A1 (en) * | 2001-12-28 | 2003-07-03 | Satyaki Koneru | Method and apparatus for determining bins to be updated for polygons, including triangles |
US20040246251A1 (en) * | 2003-03-27 | 2004-12-09 | Simon Fenney | Tiling system for 3D rendered graphics |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0604685A1 (en) * | 1992-12-28 | 1994-07-06 | Océ-Nederland B.V. | Method of modifying the fatness of characters |
US6636215B1 (en) * | 1998-07-22 | 2003-10-21 | Nvidia Corporation | Hardware-assisted z-pyramid creation for host-based occlusion culling |
US7382368B1 (en) * | 2004-06-28 | 2008-06-03 | Nvidia Corporation | Planar z representation for z compression |
US8203564B2 (en) * | 2007-02-16 | 2012-06-19 | Qualcomm Incorporated | Efficient 2-D and 3-D graphics processing |
US9947084B2 (en) | 2013-03-08 | 2018-04-17 | Nvidia Corporation | Multiresolution consistent rasterization |
US9478066B2 (en) | 2013-03-14 | 2016-10-25 | Nvidia Corporation | Consistent vertex snapping for variable resolution rendering |
-
2013
- 2013-03-15 US US13/844,093 patent/US9633469B2/en active Active
- 2013-12-16 DE DE102013114090.4A patent/DE102013114090B4/de active Active
- 2013-12-27 TW TW102148772A patent/TWI552109B/zh active
- 2013-12-31 CN CN201310753294.0A patent/CN104050626B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6057855A (en) * | 1997-07-02 | 2000-05-02 | Hewlett-Packard Company | Method and apparatus for providing polygon pixel sub-sample information using incremental means |
US6317525B1 (en) * | 1998-02-20 | 2001-11-13 | Ati Technologies, Inc. | Method and apparatus for full scene anti-aliasing |
US20030122850A1 (en) * | 2001-12-28 | 2003-07-03 | Satyaki Koneru | Method and apparatus for determining bins to be updated for polygons, including triangles |
US20040246251A1 (en) * | 2003-03-27 | 2004-12-09 | Simon Fenney | Tiling system for 3D rendered graphics |
Non-Patent Citations (1)
Title |
---|
Brandon Lloyd, "Triangle Rasterization," 2007. (http://www.cs.unc.edu/~blloyd/comp770/Lecture08.pdf) * |
Also Published As
Publication number | Publication date |
---|---|
CN104050626B (zh) | 2018-01-05 |
CN104050626A (zh) | 2014-09-17 |
DE102013114090A1 (de) | 2014-09-18 |
DE102013114090B4 (de) | 2022-05-05 |
TW201439968A (zh) | 2014-10-16 |
US20140267238A1 (en) | 2014-09-18 |
US9633469B2 (en) | 2017-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI552109B (zh) | 一種使用誤差項之保守格柵化基元的方法、非暫時性電腦可讀儲存媒體及系統 | |
US9747661B2 (en) | Consistent vertex snapping for variable resolution rendering | |
US10229529B2 (en) | System, method and computer program product for implementing anti-aliasing operations using a programmable sample pattern table | |
US9754407B2 (en) | System, method, and computer program product for shading using a dynamic object-space grid | |
US9747718B2 (en) | System, method, and computer program product for performing object-space shading | |
US9355483B2 (en) | Variable fragment shading with surface recasting | |
US9547931B2 (en) | System, method, and computer program product for pre-filtered anti-aliasing with deferred shading | |
US9082180B2 (en) | System, method, and computer program product for implementing a spatially varying unsharp mask noise reduction filter | |
US9177351B2 (en) | Multi-primitive graphics rendering pipeline | |
US9245363B2 (en) | System, method, and computer program product implementing an algorithm for performing thin voxelization of a three-dimensional model | |
US9224235B2 (en) | System, method, and computer program product for compression of a bounding volume hierarchy | |
TWI514315B (zh) | 取樣階層式深度地圖的系統、方法,及電腦程式產品 | |
US9659399B2 (en) | System, method, and computer program product for passing attribute structures between shader stages in a graphics pipeline | |
TWI552113B (zh) | 舖磚延遲著色的系統、方法,及電腦程式產品 | |
US20150178961A1 (en) | System, method, and computer program product for angular subdivision of quadratic bezier curves | |
US9905037B2 (en) | System, method, and computer program product for rejecting small primitives | |
CN110728616A (zh) | 图形处理单元内处理核心的图块分配 | |
US9305388B2 (en) | Bit-count texture format | |
US20150084952A1 (en) | System, method, and computer program product for rendering a screen-aligned rectangle primitive | |
US7221368B1 (en) | Stippled lines using direct distance evaluation |