‘버텍스 모디파이어’ 기능을 사용하면 버텍스 셰이더에 입력된 버텍스 데이터를 수정할 수 있습니다. 이는 순차적 애니메이션과 노멀을 따라가는 익스트루전 등에 사용할 수 있습니다. 이때 표면 셰이더 컴파일 지시문 vertex:functionName과 inout appdata_full 파라미터를 갖는 함수가 쓰입니다.
다음은 머티리얼에 지정된 양만큼 노멀을 따라 버텍스를 움직이는 셰이더입니다.
Shader "Example/Normal Extrusion" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_Amount ("Extrusion Amount", Range(-1,1)) = 0.5
}
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert vertex:vert
struct Input {
float2 uv_MainTex;
};
float _Amount;
void vert (inout appdata_full v) {
v.vertex.xyz += v.normal * _Amount;
}
sampler2D _MainTex;
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
}
ENDCG
}
Fallback "Diffuse"
}