簡單渲染流水管線C++代碼實現(七)---三維渲染流水管線講解

三維渲染流水管線大體上分爲:

1.應用程序階段
2.頂點變換階段
3.光柵化階段

一、應用程序階段

應用程序階段的主要任務:將需要在屏幕上(具體形式取決於具體輸入設備)顯示出來繪製的幾何體(也就是繪製圖元,rendering primitives,如點、線、矩形等)輸入到繪製管線的下一個階段。
對於被渲染的每一幀,應用程序階段將攝像機位置,光照和模型的圖元輸出到管線的下一個主要階段——幾何階段。
簡單來說就是爲每一幀的遊戲做準備。

二、頂點變換階段(幾何變換)

該階段可總結爲:五大座標系四大變換矩陣

(1)五大座標系:本地座標系、世界座標系、攝像機座標系、投影座標系、視口座標系

本地座標系:

簡單來說就是以場景的物體自身中心建立的座標系,是一個相對座標系,比如:以人的腰爲中心,頭頂方向爲y方向,肩部方向爲x方向,人臉的正向爲z方向所建立的座標系。
在這裏插入圖片描述

世界座標系:

簡單來說就是場景空間座標系,是一個絕對座標系。
在這裏插入圖片描述

攝像機座標系:

主要有三個向量需要理解:攝像機看點(look at)、攝像機所在點(eye)、攝像機上沿點(up),一般這三個向量並不垂直,真正的xyz三座標軸如下。
在這裏插入圖片描述

投影座標系:

實際上是把三維物體成像在二維空間裏,可以說是模擬人眼,能做到近大遠小。
投影嚴格意義上分爲正交投影、透視投影,前者適用2D遊戲,後者適合3D遊戲。
在這裏插入圖片描述

視口(屏幕)座標系:

將投影座標系下的成像轉到屏幕下,這時的成像才能被我們所看到。投影座標系其實就是以屏幕左上角爲原點,左上角指向右上角的方向爲x正方向,左上角指向左下角的方向爲y正方向。
在這裏插入圖片描述

(2)四大變換矩陣:世界變換矩陣、攝像機變換矩陣、投影變換矩陣、視口變換矩陣

簡單來說,一個模型想要在屏幕中被展現,必須經過這四個變換才能實現。

世界變換矩陣:

將本地座標系下的座標轉換到世界座標系下。

攝像機變換矩陣:

將世界座標系下的座標轉換到攝像機座標系下。

投影變換矩陣:

將攝像機座標系下的座標轉換到投影座標系下。

視口變換矩陣:

將投影座標系下的座標轉換到視口座標系下。

三、光柵化階段

給定經過頂點變換後的頂點,顏色以及紋理座標(均來自於幾何階段),給每個像素(Pixel)正確配色,以便正確繪製整幅圖像。
該階段分爲:
三角形設定(Triangle Setup)階段
三角形遍歷(Triangle Traversal)階段
像素着色(Pixel Shading)階段
融合(Merging)階段

(1)三角形設定階段:

三角形設定階段主要用來計算三角形表面的差異和三角形表面的其他相關數據。

(2)三角形遍歷階段:

找到哪些採樣點或像素在三角形中的過程通常叫三角形遍歷。

(3)像素着色階段:

像素着色階段的主要目的是計算所有需逐像素計算操作的過程。

(4)融合階段:

融合階段的主要任務是合成當前儲存於緩衝器中的由之前的像素着色階段產生的片段顏色。此外,融合階段還負責可見性問題(Z緩衝相關)的處理。

以上每個點後面都會陸續更新。。。。

參考文檔:
【《Real-Time Rendering 3rd》 提煉總結】(二) 第二章 · 圖形渲染管線 The Graphics Rendering Pipeline
https://zhuanlan.zhihu.com/p/26527776

發佈了19 篇原創文章 · 獲贊 16 · 訪問量 1200
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章