三維圖形顯示流程
阿新 • • 發佈:2019-01-01
目的:將三維場景轉化為螢幕二維影象。
組成:可分為三個階段
- application階段,cpu處理
(1). 資料準備。一個是模型載入(mesh,texture等);二是攝像機(位置,朝向等);三是光源(位置,型別等)。
(2). 裁剪和剔除。
(3). 計算模型檢視矩陣。
(4). 設定渲染狀態,呼叫DrawCall。 - Geometry階段,逐頂點逐多邊形圖元操作,把頂點座標變換到有深度的螢幕空間再交給光柵器處理。
(1). 模型變換,將模型由模型空間變換為世界空間。
(2). 檢視變換,將模型從世界空間變換到視點空間(camera位於原點)。
(3). 頂點著色,修改頂點屬性,如通過傳入MVP進行頂點空間變換(位置屬性),逐頂點光照(顏色屬性),紋理座標變換(uv屬性)。
(4). 曲面細分著色。
(5). 幾何著色
(6). 投影,得到歸一化裝置座標NDC。
(7). 裁剪剔除。
(8). 螢幕對映。 - 光柵化,對得到的圖元各個頂點進行插值(z-buffer,法線方向,紋理座標,顏色等)產生螢幕畫素,渲染出最終影象。光柵化決定每個圖元中的哪些畫素應該被繪製到螢幕上。
(1). 三角形設定,對三個頂點插值計算三角形邊上的畫素。
(2). 三角形遍歷,掃描三角形邊上的畫素來插值計算整個三角形內的畫素。
(3). 片元著色,逐個片元進行著色計算(即逐個畫素光照),經模板測試,深度測試,alpha混合等,將結果(一系列顏色值)存放到幀緩衝,供GPU進行螢幕更新(常使用雙緩衝繪製)。