unity shader 入門之路(四)Unity支援的語義
阿新 • • 發佈:2019-02-17
從應用階段傳遞模型資料給頂點著色器時Unity支援的常用語義
語義 | 描述 |
POSITION | 模型空間中的頂點位置,通常是float4型別 |
NORMAL | 頂點法線,通常是float3型別 |
TANGENT | 頂點切線,通常是float4型別 |
TEXCOORDn,如TEXCOORD0、TEXCOORD1 | 該頂點的紋理座標,TEXCOORD0表示第一組紋理座標,依此類推,通常是float2或float4型別 |
COLOR | 頂點顏色,通常是fixed4或float4型別 |
從頂點著色器傳遞資料給片元著色器時Unity使用的常用語義
語義 | 描述 |
SV_POSITION | 裁剪空間中的頂點座標,結構體中必須包含一個用該語義修飾的變數。等同於DirectX9中的POSITION,但最好使用SV_POSITION |
COLOR0 | 通常用於輸出第一組頂點顏色,但不是必須的 |
COLOR1 | 通常用於輸出第二組頂點顏色,但不是必須的 |
TEXCOORD0~TEXCOORD7 | 通常用於輸出紋理座標,但不是必須的 |
片元著色器輸出時Unity支援的常用語義
語義 | 描述 |
SV_Target | 輸出值將會儲存到渲染目標(render target)中。等同於DirectX9中的COLOR語義,但最好使用SV_Target |
定義複雜的變數型別
上面提到的語義絕大部分用於描述標量或向量型別的變數,例如fixed2、float、float4、fixed4等。下面的程式碼給出了一個使用語義來修飾不同型別變數的例子:
- struct v2f {
- float4 pos : SV_POSITION;
- fixed3 color0 : COLOR0;
- fixed4 color1 : COLOR1;
- half value0
- float2 value1 : TEXCOORD1;
- };