[閱讀筆記] Unity shader 入門精要 #1

《Unity shader 入門精要》的讀書筆記,一到四章。

第一章為書本簡介,二到四章為螢幕渲染的基本知識、數學原理。

第二章:Rendering Pipeline 介紹

  • 三階段
    • 應用階段 Application stage – 剔除不可見的物件 (out of view frustum)、設定材質等,CPU的運算工作。
    • 幾何階段 Geometry stage – 頂點運算、轉換至螢幕座標,GPU的運算工作。
    • 光柵化階段 Rasterizer stage – 將三角面轉換成像素點,並處理,GPU的運算工作。
  • 四種 shader
    • Vertex shader – 幾何階段,可編程,處理頂點
    • Tessellation shader – 幾何階段,可選擇
    • Geometry shader – 幾何階段,可選擇
    • Fragment shader – 光柵化階段,可編程,處理像素點
  • 兩項 Per-Fragment Operation 測試可以開關
    • Stencil Test
    • Depth Test
  • 螢幕座標差異
    • OpenGL 左下為原點,DirectX左上為原點

第三章:Unity shader 基礎

  • 材質 material = shader + texture + 各種參數
  • 物件表現 = mesh + material
  • 四種 unity shader 模板
    • Standard surface shader – 包含標準光照
    • Unlit shader – 不含光照
    • Image effect shader – 螢幕後處理特效
    • Compute shader – 調用 GPU 資源做運算
  • 一個 shader 的架構
Shader "名稱" {
    Properties {
    }
    SubShader {
        [Tags][RenderSetup]
        // 如:Tags {"Name1" = "value1" "Name2" = "value2"}
        // 項目之間用空格區分
        Pass {
            [Name][Tags][RenderSetup]
            // Name 是給予 UsePass 引用,使用時會自動轉為全大寫
        }
    }
    FallBack "名稱"
}
  • 宣告 shader property
    • 變數名稱(“顯示名稱", 型態) = 預設值
    • 如:_Int("Interger", Int) = 5
  • UnityLab 提供的一個特殊 shader 類型:Surface shader
    • 有著大量封裝,編寫的程式碼較短,但效能較差
    • 適合處理光照,方便但對行動裝置不友善

第四章:Shader 相關的數學基礎

  • 座標系、座標、向量
  • 矩陣、座標轉換、齊次座標系
    • 齊次座標 (x, y, z, w),三維座標 (x/w, y/w, z/w)
    • 習慣上的轉換次序:縮放、旋轉、平移
廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s