1.計算機圖形學之Opengl渲染流程
阿新 • • 發佈:2019-01-03
Cpu: FBX -Meshrender
Fbx obj : 模型檔案,裡面包含了 uv 頂點位置 ,法線、切線等渲染所需要的資訊。
MeshRender : 將這些資訊傳遞到GPU 。 skin mesh render / mesh render,mesh filter
-
skin mesh render : 帶蒙皮的骨骼 。
-
mesh render : mesh render 主要是將頂點等資訊傳遞到gpu .
-
mesh filter : 表示將哪個模型資訊傳遞給 gpu .
GPU:
渲染管線:
頂點著色器—光柵化—片段著色器—alpha 測試—模板測試—深度測試—Blend—Gbuffer—frontBuffer—frameBuffer
- 頂點著色器:
- 計算頂點的顏色。
- 將物體座標系 轉換到 相機座標系。
- 光柵化:將頂點轉換成畫素 。
頂點—>畫素(片元):片元中間部分畫素由頂點插值。
畫素:RGBA 4 通道組成。RGBA 8888 8bit .
螢幕:720*1280 橫有 720 個畫素,豎排 12080 個畫素。
Float[720 *1280]
頂點4個—>片段著色器 100*100 。
結論:
頂點著色器會執行 4次,片段著色器會執行 10000。
頂點著色器和片段著色器的運算次數不是一個量級 。
能把運算放在頂點著色器,就放這裡。
- 片段著色器 :
- 紋理取樣。從紋理畫素賦給畫素。
- 畫素跟燈光計算 。
- Alpha 測試:挑選合格的alpha畫素顯示。
- 模板測試:畫素還可以攜帶模板資訊。達到條件的模板值 。
- 深度測試:符合條件的畫素就通過,不然就丟棄。
- Blend:將 當前要渲染的畫素和已經渲染出來的畫素混合運算。
- GBuffer:RGBA 模板值深度值等 。Float[ 72012804 ]
- frontBuffer : float[720*1280]
- frameBuffer : float[720*1280]
front Buffer 和frameBuffer只寫入GBuffer的RGBA。
GBuffer、FrontBuffer、FrameBuffer執行流程:
GBuffer選出來的畫素,FrontBuffer只寫入GBuffer的RGBA,推到顯示器顯示,之後退到後臺變為FrameBuffer;FrameBuffer同樣也會只寫入GBuffer的RGBA,推到顯示器顯示,之後退到後臺變為FrontBuffer。如此交替顯示,一幀一幀渲染顯示,有了動畫。