1. 程式人生 > >unity shader學習 簡單的頂點-片段 shader

unity shader學習 簡單的頂點-片段 shader

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程式設計 } } }

這裡寫圖片描述