unity shader學習 簡單的頂點-片段 shader
阿新 • • 發佈:2018-11-28
Shader "Custom/Simple vert fragment Shader" //shader的名字及路徑
{
Properties //屬性定義
{
_MainTex("Texture", 2D) = "white" {} //主紋理
}
SubShader //子著色器(必須有一個)
{
Pass //Pass過程塊
{
CGPROGRAM //進入CG程式設計
#pragma vertex vert //定義頂點預處理命令
#pragma fragment frag //定義片段預處理命令
#include "UnityCG.cginc" //匯入UnityCG.cginc檔案 (包含Helper Function )
uniform sampler2D _MainTex; //在CG函式中連線外部屬性_MainTex(uniform 是關鍵字)
float4 _MainTex_ST; //紋理的縮放和偏移量
struct appdata //定義頂點輸入結構體,並繫結語義
{
float4 vertex:POSITION; //位置座標(x,y,z,w)
float2 texcoord:TEXCOORD0; //紋理座標(x,y)
};
struct v2f //定義頂點輸出結構體(也是片段的輸入)
{
float4 pos:SV_POSITION;
float2 uv:TEXCOORD0;
};
v2f vert(in appdata input)
{
v2f o;
o.pos = UnityObjectToClipPos(input.vertex);//將頂點座標由物體空間變換到齊次裁剪空間
o.uv = TRANSFORM_TEX(input.texcoord, _MainTex);//紋理的縮放和偏移量
return o;
}
fixed4 frag(v2f input) :SV_Target
{
fixed4 col = tex2D(_MainTex,input.uv);//對紋理按UV座標進行採用
return col;
}
ENDCG //結束CG程式設計
}
}
}