UnityCG.cginc
内に vert_img という頂点処理用のメソッドが用意されているので
頂点とuvしか利用しない場合こちらを利用したほうが手軽で行数も少なくなる
struct appdata_img { float4 vertex : POSITION; half2 texcoord : TEXCOORD0; }; struct v2f_img { float4 pos : SV_POSITION; half2 uv : TEXCOORD0; }; v2f_img vert_img( appdata_img v ) { v2f_img o; o.pos = UnityObjectToClipPos (v.vertex); o.uv = v.texcoord; return o; }
#pragma vertex vert_img
これを利用するときは 頂点処理のメソッドに vert_img
を指定して
frag の引数の型を v2f_img
に変更する
Shader "Unlit/Shader" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } Pass { CGPROGRAM #pragma vertex vert_img #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; fixed4 frag (v2f_img i) : SV_Target { fixed4 col = tex2D(_MainTex, i.uv); return col; } ENDCG } } }