Unity shader之頂點和片段著色器Vertex and Fragment Shader
阿新 • • 發佈:2018-12-11
Unity shader中的頂點片面著色器是我們專案中使用次數最多的著色器,因此今天來簡單的學習一下VF Shader。
VF Shader的基本寫法如下:
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "Custom/VFShader01" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader{ Pass{ CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; float4 _MainTex_ST; float4 _Color; struct v2f{ fixed4 pos : SV_POSITION; fixed2 uv : TEXCOORD0; }; v2f vert(appdata_base v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); return o; } fixed4 frag(v2f v) : COLOR { fixed4 texColor = tex2D(_MainTex, v.uv); return texColor * _Color; } ENDCG } } }
盜用一張現成的語義解釋圖,相信您一定能夠非常快速的瞭解VF Shader的基本組成:
程式碼中的appdata_base是頂點著色器傳入的頂點資料結構,詳細以及更多的U3d中頂點著色器的頂點資料結構請看這篇博文,列舉的非常詳細: