1. Application stage 應(yīng)用階段
軟件執(zhí)行、應(yīng)用驅(qū)動(dòng)、CPU運(yùn)行
碰撞檢測(cè)、全局加速算法、動(dòng)畫(huà)、物理模擬
- 準(zhǔn)備場(chǎng)景數(shù)據(jù)、模型及光源
- 剔除(Culling):剔除不可見(jiàn)物體,提高性能
- 設(shè)置渲染狀態(tài) 材質(zhì)、紋理、shader的數(shù)據(jù)
輸出渲染所需的信息,即輸出渲染圖元(Rendering Primitives)
2. Geometry stage 幾何階段
進(jìn)行多個(gè)多邊形和定點(diǎn)的操作
- 模型變換: 物體坐標(biāo)系→世界坐標(biāo)系
- 視覺(jué)變換: 世界坐標(biāo)系→相機(jī)坐標(biāo)系
- 頂點(diǎn)Shading: 在不同頂點(diǎn)計(jì)算Shading方程,所得結(jié)果用于光柵化
Shading:光線在某個(gè)材質(zhì)上產(chǎn)生的效果 - 投影
可視化空間變換至單位立方體(正規(guī)可視化空間)
計(jì)算正交投影和透視投影,Z坐標(biāo)不存儲(chǔ)在圖像中(存在Z-buffer中) - 裁剪
基本圖元的頂點(diǎn)出現(xiàn)在可視空間內(nèi),視為有效,可以進(jìn)行光柵化
基本圖元只有部分頂點(diǎn)在可視空間會(huì)被裁剪(由固定的硬件操作) - 屏幕映射
OpenGL的原點(diǎn)在屏幕左下角
DX的原點(diǎn)在屏幕右上角
DX10之前的版本,像素的中心坐標(biāo)為(0,0)
DX10之后的版本及OpenGL,像素中心坐標(biāo)為(0.5,0.5)
3. Rasterizer stage 光柵化階段
接收數(shù)據(jù)為變換和投影后的頂點(diǎn)及其相應(yīng)的Shading方程數(shù)據(jù)
光柵化的目標(biāo): 計(jì)算覆蓋在每個(gè)物體上的像素顏色
- 三角形設(shè)置: 三角形表面差異和其他相關(guān)數(shù)據(jù)(由固定的硬件操作)
- 三角形遍歷: 檢查每個(gè)像素是否在三角形內(nèi)部
Fragment在這里產(chǎn)生,通常采用插值法計(jì)算 - 像素Shading: 輸入差值Shading的數(shù)據(jù),輸出一個(gè)或者多個(gè)顏色用于下一階段
可編程控制GPU執(zhí)行,常用紋理技術(shù) - 合并: 合并color buffer中的顏色
可以通過(guò)配置產(chǎn)生不同的效果
Z-buffer解決能見(jiàn)度問(wèn)題、Alpha通道執(zhí)行Alpha test、stencil buffer記錄已渲染圖元的位置