Unity Shader學習

Unity Shader編程


渲染流水線

概念渲染流水線

  1. 應用階段(CPU)
    CPU準備好場景數據,輸出渲染所須要的幾何信息,即渲染圖元(能夠是點、線、面等)給幾何階段
  2. 幾何階段(GPU)
    把頂點座標轉換到屏幕座標,輸出屏幕空間的二維頂點座標,每一個頂點座標對應的深度值、着色等相關信息,傳遞給下一個階段
  3. 光柵化階段(GPU)
    根據幾何階段傳遞的數據,產生屏幕上的像素,並渲染出最後的圖像

GPU渲染流水線

GPU渲染流水線對應概念流水線的最後兩個階段,即幾何階段和光柵化階段 編程

幾何階段

  • 頂點着色器(Vertex Shader)是徹底可編程的,它一般用於實現頂點的空間變換、頂點着色等功能
  • 曲面細分着色器(Tessellation Shader)是一個可選的着色器,它用於細分圖元
  • 幾何着色器(Gemetry Shader)是一個可選的着色器,用於執行圖元的着色操做,或者被用於產生更多的圖元
  • 裁剪(Clipping)將那些不在攝影機視野內的頂點剪裁掉,並剔除某些三角圖元的面片(可配置)
  • 屏幕映射(Screen Mapping)把每一個圖元的座標轉換到屏幕座標(不可配置不可編程)

光柵化階段

  • 三角形設置(Triangle Setup)階段是固定函數的階段
  • 三角形遍歷(Triangle Traversal)階段是固定函數的階段
  • 片元着色器(Fragment Shader)是徹底可編程的,它用於實現逐片元的着色操做
  • 逐片元操做(Per-Fragme Opreations)階段負責執行不少重要的操做,例如修改顏色、深度緩存、進行混合等,他不是可編程的,可是具備很高的可配置性

Draw Call

CPU調用圖像編程接口緩存

什麼是shader?

  • GPU流水線上一些可高度編程的階段,而由着色器編譯出來的最終代碼是會在GPU上運行的
  • 有一些特定類型的着色器,如頂點着色器、片元着色器
  • 依着色器咱們能夠控制控制流水線中的渲染細節,例如使用頂掉着色器進行頂點變換以及傳遞數據,用片元着色器來進行逐像素的渲染
相關文章
相關標籤/搜索