Shader2.0-結構和語義
阿新 • • 發佈:2018-11-15
直接上程式碼,以後不多說了,程式碼寫的很詳細
Shader "Hidden/TestStruct" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Pass { CGPROGRAM //使用CG語法 #pragma vertex vert //定義定點著色器的入口函式 #pragma fragment frag //定義片段著色器的入口函式 #include "UnityCG.cginc" //引用函式庫,有c,c++基礎的應該很熟悉了 struct appdata { float4 vertex : POSITION; //獲取模型的頂點資訊 float2 uv : TEXCOORD0; //高精度的從頂點資訊傳遞到片段著色器 //fixed4 color : COLOR; //低精度的從頂點資訊傳遞到片段著色器 //float3 normal:NORMAL; //獲取法線資訊 //float4 targent:TANGENT; //獲取切線資訊 //fixed4 SV_TARGET; //表示輸出到哪個相機上去 }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; //表示經過mvp矩陣已經轉化到螢幕座標系 }; v2f vert (appdata v)//v是從 mesh rendener中傳進來的 { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } sampler2D _MainTex; fixed4 frag (v2f i) : SV_Target //這裡的v2f是頂點著色器的輸出值,片段著色器入口的引數 { fixed4 col = tex2D(_MainTex, i.uv); // just invert the colors col.rgb = 1 - col.rgb; return col; } ENDCG } } }