Surface Shader 筆記 2. Shader Input
你需要在shader function中處理Mesh 的任何值,Shader對外界接收的各種訊息 struct Input {
};
(struct Input { } 記得括弧後要加分號 ; )
基本參數 命名需要正確才能運作
uv, uv2 這個數據可用於在模型上放置Texture 需要配合屬性的名稱 ,uv 或 uv2 + 屬性名稱 _MainTex (“Example Texture”, 2D) = “white” { } struct Input { float2 uv_MainTex; float2 uv2_MainTex; };
ViewDir 取得由點指向視線位置的向量,用於根據攝影機位置改變模型的Shader struct Input { float3 viewDir; };
worldPos 提供正在處理的頂點座標,允許你根據世界座標對Shader進行操作 struct Input { float3 worldPos; };
worldRefl 物理世界反射? 取得反射訊息,用於鏡面效果 struct Input { float3 worldRefl; };
所有輸入 Unity API https://docs.unity3d.com/Manual/SL-SurfaceShaders.html
在Input struct中組合各種屬性,以實現複雜的Shader效果
只需使用必要的輸入,以免佔用多餘的記憶體
struct Input
{
float2 uv_MainTex;
float viewDir;
float3 worldRefl;
};