1. 程式人生 > >1.計算機圖形學之Opengl渲染流程

1.計算機圖形學之Opengl渲染流程

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

—顯示器

  • 頂點著色器:
  1. 計算頂點的顏色。
  2. 將物體座標系 轉換到 相機座標系。
  • 光柵化:將頂點轉換成畫素 。

    頂點—>畫素(片元):片元中間部分畫素由頂點插值

畫素:RGBA 4 通道組成。RGBA 8888 8bit .
螢幕:720*1280 橫有 720 個畫素,豎排 12080 個畫素。
Float[720 *1280]

頂點4個—>片段著色器 100*100 。

結論:
頂點著色器會執行 4次,片段著色器會執行 10000。
頂點著色器和片段著色器的運算次數不是一個量級 。
能把運算放在頂點著色器,就放這裡。

  • 片段著色器 :
  1. 紋理取樣。從紋理畫素賦給畫素。
  2. 畫素跟燈光計算 。
  • 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。如此交替顯示,一幀一幀渲染顯示,有了動畫。