[閱讀筆記] 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 的架構
1 | Shader "名稱" { |
- 宣告 shader property
- 變數名稱(“顯示名稱”, 型態) = 預設值
- 如:
_Int("Interger", Int) = 5
- UnityLab 提供的一個特殊 shader 類型:Surface shader
- 有著大量封裝,編寫的程式碼較短,但效能較差
- 適合處理光照,方便但對行動裝置不友善
第四章:Shader 相關的數學基礎
- 座標系、座標、向量
- 矩陣、座標轉換、齊次座標系
- 齊次座標 (x, y, z, w),三維座標 (x/w, y/w, z/w)
- 習慣上的轉換次序:縮放、旋轉、平移