0.渲染流水線
目標:生成(或渲染)一張二維紋理
三個階段:
0.1.應用階段
0.1.1.把數據加載到顯存中
硬盤 --> 數據內存 -->(網格、紋理)--> 顯存
0.1.2.設置渲染狀態
着色器、光源、材質等
0.1.3.調用DrawCall
·CPU調用圖像編程接口
·DrawCall:cpu調用一個渲染命令,告訴gpu開始渲染。
-- 其中包含須要被渲染的圖元列表,再也不包含任何材質信息
0.2.幾何階段
·幾何階段的主要工做就是「變換三維頂點座標」和「光照計算」。
0.2.1.頂點着色器
BIG:可編程
座標變換、逐定點光照
·輸出:每一個頂點對應的紋理座標
0.2.2.曲面細分着色器
0.2.3.幾何着色器
0.2.4.裁剪
攝像機視野範圍
0.2.5.屏幕映射
-- 輸出網格頂點
0.3.光柵化階段
·計算每一個圖元覆蓋了那些像素,爲這些像素計算他們的顏色
3.1.三角形設置
計算光柵化一個三角形網格的信息
0.3.2.三角形遍歷
掃描變換
·輸出:片元序列
0.3.3.片元着色器(像素着色器)
BIG:可編程
紋理採樣等
0.3.4.逐片元操做
BIG:高度可配置性
0.3.4.1.決定每一個片元的可見性
模板測試
深度測試
0.3.4.2.片元的顏色和已經存儲在顏色緩衝區的顏色進行合併(混合)
0.4.CPU\GPU的並行工做
CPU -- 命令緩衝區(命令隊列) -- GPU
每次調用前,CPU須要準備不少的內容(數據、狀態、命令),同時有檢查渲染狀態等不少準備工做
·GPU的渲染能力很強,可是CPU會花時間在提交命令(DrawCall)上,形成CPU過載
0.4.1.減小DrawCall
4.1.1.靜態物體的批處理。
4.1.2.避免使用大量很小的網格
4.1.3.避免使用過多的材質
0.4.2.shader
·GPU流水線上可高度編程的階段
·特定類型:頂點着色器、片元着色器等
·依靠着色器能夠用來控制流水線中渲染的細節編程