繪制管線的功能:在給定虛擬照相機,三維物體,光源,照明模式,以及紋理等諸多條件下,如何生成或者繪制一幅二維圖像。
管線的整體快慢程度是由管線中最慢的那個階段決定的。
實時計算機圖形里面,管線分為三個階段:應用程序階段,幾何階段,以及光柵階段。
最慢的管線階段決定繪制速度,即圖像更新速度。
應用程序階段由應有程序來驅動,可以通過軟件來實現:主要包括碰撞檢測,加速算法,動畫,以及力反饋等
,在應用程序階段的末端,將需要繪制的幾何體輸入到繪制管線的下一格階段,這些幾何體都是繪制圖元(如點,線,矩形),最終需要在屏幕上棉線是出來。這是應用程序階段最重要的任務。
幾何階段,根據體系結構,可以用軟件或者硬件來實現,包括變換,投影,光照等處理,計算繪制的內容,如何繪制,以及在什么地方繪制。可以分成若干個功能階段:模型與視點變換,光照,投影,裁減,以及屏幕映射。
模型和視點變換:
同一個模型還可以和幾種不同的模型變換聯系在一起。允許同一個模型有多個副本(稱為實例),可以在同一場景中具有不同的位置,方向,和大小,而不需要對基本集合體進行復制操作。
模型變換的變換對象是模型的頂點和法線。物體的坐標稱為模型坐標。只對相機(或者視點)可以看到的模型進行繪制。為了便于投影和裁減,必須對相機和所有的模型進行視點變換。變換的目的是要把相機放在原點,然后進行視點校準,使其朝向Z軸的負方向,Y軸指向上方,X軸指向右邊。視點變換后,實際位置和方向就依賴于當前的API.
光照:
為了讓模型看起來更加真實,可以給場景配上一個或者多個光源.
對于受光源影響的模型來說,可以用光照方程來計算模型上每個頂點的顏色.物體表面每個頂點的顏色可以由光源及其特性,頂點的位置和法線,頂點所在的材質屬性來計算.當在屏幕上繪制三角形時,可以通過對三角形頂點的顏色進行插值,這種插值技術成為gouraud著色.
光照計算是在世界空間中進行的,但是,如果對光源進行視點變換,再觀察空間中會得到同樣的光照效果.這是因為,即使將參與光照計算的所有實體都變換到同一個空間(即觀察空間)中,光源,相機,以及模型之間的相對位置依然保持不變.
投影:
光照處理之后,繪制系統就開始進行投影,目的是將視體變換為一個單位立方體.,這個立方體的對角分別是(-1,-1,-1)和(1,1,1).通常也稱單位立方體為規范視體(canonical view volume).
目前主要有兩種投影方法:正投影(平行投影)和透視投影。
正投影:把這個視體變換為單位立方體,正投影的主要特性是平行線在變換之后彼此之間仍然保持平行,這種變換是平移與縮放的組合。
透視投影方法中,物體距離相機越遠,投影之后就會變得越小。
裁減:
只有當圖元完全或者部分地位于視體內部的時候,才需要將其發送到光柵階段,在這個階段可以把圖元在屏幕上繪制出來。需要對那些部分位于視體內的圖元進行裁減處理。投影變化之后的圖元只針對單位立方體進行裁減,在裁減之前進行視點轉換和投影的優勢在于可以使裁減問題變得比較一致,而且圖元可以根據單位立方體進行裁減。
屏幕映射:
進入這個階段的時候,坐標仍舊是三維的,每個圖元的x和y坐標變換到了屏幕坐標系中,屏幕坐標系連同z坐標一起稱為窗口坐標系。
光柵階段,利用前面階段產生的數據進行圖像繪制。
光柵階段的目的:就是給每個像素(pixel)正確配色,以便正確繪制整副圖像,這個過程稱為光柵化或者掃描轉換,也就是把屏幕間的二維頂點轉化為屏幕上的像素。
屏幕空間有一個z值(深度值),一種或兩種顏色,以及一組或者多組紋理坐標,其中紋理坐標會與頂點或者屏幕上的像素聯系在一起。光柵階段進行的是單個像素操作。每個像素的信息存儲在顏色緩沖器里,顏色緩沖器是一個矩形的顏色序列(R,G,B)對于高性能圖形系統來說,光柵階段必須在硬件中完成。一般地,圖形系統采用雙重緩沖機制.這意味著屏幕繪制時在一個后置緩沖器中以離屏方式進行的,一旦屏幕已在后置緩沖區中繪制,后置緩沖區中的內容就不斷與已經在屏幕上顯示過的前置緩沖區中的內容進行交換.
當繪制完整個場景的時候,顏色緩沖器應該包含從相機視點處可以觀察到的場景圖元.對于大多數圖形硬件來說,這個過程是通過Z緩沖區(深度緩沖區)算法來實現.Z緩沖器和顏色緩沖區形狀大小一樣.
每個像素都有存儲著一個z值,這個z值是從相機到最近圖元之間的距離,當將圖元繪制為相應的像素時,需要計算像素位置處圖元Z值并于同一像素的Z緩沖器內容進行比較.
顏色緩沖器用來存儲顏色,而Z 緩沖器用來存儲每個像素的z值.
還可以使用其他緩沖器來產生一些圖像的不同組合,alpha通道和顏色緩沖器聯系在一起可以存儲一個與每個像素相關的不透明值.
幀緩沖器(Frame buffer)通常包含一個系統所具有的所有緩沖器,稱為累積緩沖器,有時候卻認為是顏色緩沖器和z緩沖器的組合。