【技術實現步驟摘要】
對走樣線進行光柵化
技術介紹
[0001]在計算機圖形學中,表示場景中的物體的一組表面被劃分為多個更小和更簡單的片段(稱為圖元),通常是三角形,其更易于渲染。得到的分割表面通常是原始表面的近似,但是這種近似的精確度可以通過增大生成的圖元的數量來改善,這通常又會反過來導致圖元更小。細分量通常由細節水平(LOD)來決定。因此,通常使用更大數量的圖元,其中需要更高的細節水平,例如,因為物體更靠近觀察者和/或物體具有更復雜的形狀。然而,使用更多數量的三角形增加了渲染場景所需的處理工作量,因此增大了執行處理的硬件的尺寸。此外,隨著平均三角形尺寸的減小,走樣(例如,當成角度的線出現鋸齒時)更加頻繁地發生。為了解決這種走樣,可以使用多重采樣(即,每個像素取若干個樣本)。另選地,在不使用多重采樣的情況下,可以使用線光柵化規則來定義如何處理成角度的線,具體地是確定使用哪些像素來渲染線。
[0002]隨著生成的圖元數量的增大,圖形處理系統處理圖元的能力變得更加重要。一種提高圖形處理系統效率的已知方法是以基于瓦片的方式來渲染圖像。以這種方式,將要渲染圖元的渲染空間劃分為多個瓦片,然后瓦片可以彼此獨立地渲染?;谕咂膱D形系統包括用于將圖元分塊的分塊單元,即,為圖元確定圖元處于渲染空間中的哪些瓦片。然后,當渲染單元渲染瓦片時,可以給其提供指示應該使用哪些圖元來渲染瓦片的信息(例如,每瓦片列表)。
[0003]基于瓦片的渲染的替代方案是立即模式渲染。在這樣的系統中,沒有分塊單元生成每個瓦片列表,并且每個圖元顯得立即渲染;然而,即使在這樣的系統中,渲染空 ...
【技術保護點】
【技術特征摘要】
1.一種在圖形處理流水線中對線進行光柵化的方法,所述線具有起點和終點,并且所述方法包括,對于輸入像素集中的每個像素:確定所述線的所述終點和/或所述起點是否位于所述像素內的菱形測試區域中,其中所述菱形測試區域由通過邊緣連接以形成菱形的頂點、左點、底點和右點限定;響應于確定所述終點不位于所述菱形測試區域中并且所述線的所述起點位于所述菱形測試區域中,將所述像素添加到待繪制為所述線的一部分的像素集中;響應于確定所述線的所述起點和所述終點均不位于所述菱形測試區域中,確定所述線是否與多于一個延伸菱形邊緣相交,其中延伸菱形邊緣與所述菱形測試區域的邊緣重合并延伸超過所述邊緣所連接的菱形點;并且響應于確定所述線與多于一個延伸菱形邊緣相交:確定通過所述起點和所述終點的延伸線的斜率是否小于
?
1或大于+1并且是否與所述菱形測試區域的所述右點接觸;確定所述延伸線是否與所述菱形測試區域的所述底點接觸;確定所述延伸線是否位于所述菱形測試區域的每個點的同一側上;并且響應于確定所述延伸線的斜率小于
?
1或大于+1并且與所述菱形測試區域的所述右點接觸或者確定所述延伸線與所述菱形測試區域的所述底點接觸或者確定所述延伸線不位于所述菱形測試區域的每個點的同一側上,將所述像素添加到待繪制為所述線的一部分的像素集中。2.根據權利要求1所述的方法,其中僅響應于確定所述終點不位于所述測試區域中而執行對所述線的所述起點是否位于所述菱形測試區域中的確定。3.根據權利要求1所述的方法,還包括:使用待繪制為所述線的一部分的所述像素集中的那些像素對所述線進行光柵化。4.根據權利要求1所述的方法,還包括:接收所述延伸線的系數作為輸入,并且其中:確定通過所述起點和所述終點的延伸線的斜率是否小于
?
1或大于+1并且是否與所述菱形測試區域的所述右點接觸包括基于所述延伸線的所述系數,確定通過所述起點和所述終點的延伸線的斜率是否小于
?
1或大于+1并且是否與所述菱形測試區域的所述右點接觸;確定所述延伸線是否與所述菱形測試區域的所述底點接觸包括基于所述延伸線的所述系數,確定所述延伸線是否與所述菱形測試區域的所述底點接觸;并且確定所述延伸線是否位于所述菱形測試區域的每個點的同一側上包括基于所述延伸線的所述系數,確定所述延伸線是否位于所述菱形測試區域的每個點的同一側上。5.根據權利要求1所述的方法,還包括:基于所述起點和所述終點的坐標計算所述延伸線的系數,并且其中:確定通過所述起點和所述終點的延伸線的斜率是否小于
?
1或大于+1并且是否與所述菱形測試區域的所述右點接觸包括基于所述延伸線的所述系數,確定通過所述起點和所述終點的延伸線的斜率是否小于
?
1或大于+1并且是否與所述菱形測試區域的所述右點接觸;確定所述延伸線是否與所述菱形測試區域的所述底點接觸包括基于所述延伸線的所
述系數,確定所述延伸線是否與所述菱形測試區域的所述底點接觸;并且確定所述延伸線是否位于所述菱形測試區域的每個點的同一側上包括基于所述延伸線的所述系數,確定所述延伸線是否位于所述菱形測試區域的每個點的同一側上。6.根據權利要求1所述的方法,還包括:為每個像素生成第一組邊緣測試結果,所述第一組邊緣測試結果包括所述像素內所述菱形測試區域的每個延伸菱形邊緣的邊緣測試結果以及所述線的所述起點和所述終點中每一者處的樣本位置的邊緣測試結果,其中邊緣和樣本位置的邊緣測試結果指示所述樣本位置是在所述邊緣的左側還是在所述邊緣的右側還是恰好位于所述邊緣上;并且生成第二組邊緣測試結果,所述第二組邊緣測試結果包括所述線的邊緣測試結果和與每個像素的每個菱形測試區域的每個點相對應的樣本位置的邊緣測試結果;并且其中確定所述線的所述終點和/或所述起點是否位于所述像素內的菱形測試區域中包括:接收所述第一組邊緣測試結果的第一子組,并且根據所述第一子組中的結果并針對像素確定所述線的所述終點是否位于所述像素內的所述菱形測試區域中;并且接收所述第一組邊緣測試結果的第二子組,并且根據所述第二子組中的結果并針對像素確定所述線的所述起點是否位于所述像素內的所述菱形測試區域中,并且其中確定所述線是否與多于一個延伸菱形邊緣相交包括:接收所述第一組邊緣測試結果的第三子組,根據所述第三子組中的結果并針對每個像素確定所述線是否與多于一個延伸菱形邊緣相交,并且其中確定通過所述起點和所述終點的所述延伸線的斜率是否小于
?
1或大于+1并且是否與所述菱形測試區域的所述右點接觸包括:接收所述第二組邊緣測試結果的第一子組,并且根據所述第一子組中的結果并針對每個像素確定所述延伸線的斜率是否小于
?
1或大于+1并且是否與所述菱形測試區域的所述右點接觸,并且其中確定所述延伸線是否與所述菱形測試區域的所述底點接觸包括:接收所述第二組邊緣測試結果的第二子組,并且根據所述第二子組中的結果并針對每個像素確定所述延伸線是否與所述菱形測試區域的所述底點接觸,并且其中確定所述延伸線是否位于所述菱形測試區域的每個點的同一側上包括:接收所述第二組邊緣測試結果的第三子組,并且根據所述第三子組中的結果并針對每個像素確定所述延伸線是否位于所述菱形測試區域的每個點的同一側上。7.根據權利要求6所述的方法,其中像素內的所述菱形測試區域的所述延伸菱形邊緣包括兩對平行邊緣,并且為每個像素生成所述第一組邊緣測試結果包括:為每對平行邊緣中的第一邊緣以及所述線的所述起點和所述終點中的每一者處的樣本位置生成邊緣測試結果;并且通過對每對平行邊緣中的所述第一邊緣的結果求反,并向每個經求反的結果加上常數,從而計算每對平行邊緣中的第二邊緣的邊緣測試結果。8.根據權利要求6所述的方法,其中針對輸入像素集中的每個像素基本上并行地實現所述方法,并且其中生成第二組邊緣測試結果,所述第二組邊緣測試結果包括所述線的邊緣測試結果和與每個像素的每個菱形測試區域的每個點相對應的樣本位置的邊緣測試結
果,包括:生成第二組邊緣測試結果,所述第二組邊緣測試結果包括所述線的邊緣測試結果和與所述輸入像素集中的每個像素的每個菱形測試區域的每個點相對應的樣本位置的邊緣測試結果。9.根據權利要求1所述的方法,還包括:響應于確定所述線的所述終點位于像素的所述菱形測試區域中,在對所述線進行光柵化時不包括所述像素作為所述線的一部分。10.根據權利要求1所述的方法,還包括:響應于確定所述線的所述起點和所述終點均不位于所述菱形測試區域中,并且所述線不與所述像素的多于一個延伸菱形邊緣相交,在對所述線進行光柵化時不包括所述像素作為所述線的一部分。11.根據權利要求1所述的方法,還包括:響應于確定(a)所述延伸線未同時滿足:與所述菱形測試區域的所述右點接觸且斜率小于
?
1或大于+1,并且(b)所述延伸線未與所述菱形測試區域的所述底點接觸,并且(c)所述延伸線位于所述菱形測試區域的每個點的同一側上,在對所述線進行光柵化時不包括所述像素作為所述線的一部分。12.根據權利要求1所述的方法,還包括,對于待繪制為所述線的一部分的所述像素集中的每個像素:確定所述像素是否位于所述線的邊界框內;并且響應于確定所述像素位于所述線的所述邊界框外,從待繪制為所述線的一部分的所述像素集中移除所述像素。13.根據權利要求1所述的方法,還包括,對于待繪制為所述線的...
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。