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