Unity Shader學習筆記(五)
阿新 • • 發佈:2019-02-01
ShaderLab中屬性的型別和CG中變數的型別之間的匹配關係如圖:
uniform關鍵字:
uniform fixed4 _Color;
uniform 關鍵字是CG中修飾變數和引數的一種修飾詞,它僅僅用於提供一些關於該變數的初始值是如何指定和儲存的相關資訊(這和其他一些影象程式設計介面中的uniform關鍵詞的作用不太一樣)。在UnityShader中,uniform關鍵詞是可以省略的。
在Unity中,有些程式碼使用了內建檔案提供的函式和變數,他們的字尾是.cginc。 格式如下:
#include "UnityCG.cginc"
在編寫Shader時,我們可以使用#include指令把這些檔案包含進來,這樣我們就可以使用Unity為我們提供的一些非常有用的變數和幫助函式。這些檔案可以在官方網站:https://unity3d.com/cn/get-unity/download/archive 下載如圖:
對應的結構體為:
除了結構體,UnityCG.cginc也提供了一些常用的幫助函式struct appdata_base { float4 vertex : POSITION; float3 normal : NORMAL; float4 texcoord : TEXCOORD0; UNITY_INSTANCE_ID }; struct appdata_tan { float4 vertex : POSITION; float4 tangent : TANGENT; float3 normal : NORMAL; float4 texcoord : TEXCOORD0; UNITY_INSTANCE_ID }; struct appdata_full { float4 vertex : POSITION; float4 tangent : TANGENT; float3 normal : NORMAL; float4 texcoord : TEXCOORD0; float4 texcoord1 : TEXCOORD1; float4 texcoord2 : TEXCOORD2; float4 texcoord3 : TEXCOORD3; #if defined(SHADER_API_XBOX360) half4 texcoord4 : TEXCOORD4; half4 texcoord5 : TEXCOORD5; #endif fixed4 color : COLOR; UNITY_INSTANCE_ID };
Untiy提供CG/HLSL語義,語義實際上就是一個賦給Shader輸入和輸出的字串,這個字串表達了這個引數的含義。