【Unity Shader學習筆記】(二)最基本的頂點片段著色器
阿新 • • 發佈:2019-02-10
分享一個基本的頂點片段著色器,可以實現紋理取樣。目前沒有加入光照和陰影效果。
這個Shader可以作為基本的模板,進行更加細節的修改與開發。這裡就簡單分享一下吧。
直接把上面的Shader賦予一個材質,並將該材質拖到一個Cube上,再選擇一張貼圖。結果就是下面這個樣子的。Shader "Unlit/unlit" { Properties { //定義基本屬性,可以從編輯器裡面進行設定的變數 _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { //在CGPROGRAM程式碼塊中寫自己的處理過程 CGPROGRAM //定義頂點函式和片段函式的入口分別為vert和frag #pragma vertex vert #pragma fragment frag //包含基本的檔案,裡面有一些巨集定義和基本函式 #include "UnityCG.cginc" //從應用程式傳入頂點函式的資料結構定義 struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; //從頂點函式傳入片段函式的資料結構定義 struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; //定義貼圖變數 sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; //將物體頂點從模型空間換到攝像機剪裁空間,也可採用簡寫方式——o.vertex = UnityObjectToClipPos(v.vertex); o.vertex = mul(UNITY_MATRIX_MVP,v.vertex); //2D UV座標變換,也可以採用簡寫方式——o.uv = TRANSFORM_TEX(v.uv, _MainTex); o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw; return o; } fixed4 frag (v2f i) : SV_Target { // 進行紋理取樣 fixed4 col = tex2D(_MainTex, i.uv); return col; } ENDCG } } }