Shader "Custom/vertexTest"
{
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 0)
_Shininess ("Shininess", Range (0.01, 1)) = 0.078125
_MainTex ("Base (RGB) TransGloss (A)", 2D) = "white" {}
_Cut("Cut", Range(0,1)) = 0.5
_Amount ("Amount", Float) = 0
}
SubShader {
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
LOD 300
CGPROGRAM
//https://docs.unity3d.com/Manual/SL-SurfaceShaders.html
//Lambert、BlinnPhong
//如果要处理alpha通道,需要加上alpha、alpha:auto、alpha:fade、alpha:premul、alphatest选项之一
//这里用了AlphaTest,alpha大于_Cut值的像素才会显示出来
//alpha:blend 透明度混合
#pragma surface surf Lambert vertex:vert alphatest:_Cut
sampler2D _MainTex;
fixed4 _Color;
half _Shininess;
half _Amount;
struct Input {
float2 uv_MainTex;
};
void vert (inout appdata_full v)
{
//将顶点沿法线方向偏移
v.vertex.xyz += v.normal * _Amount;
}
void surf (Input IN, inout SurfaceOutput o) {
fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = tex.rgb * _Color.rgb;
o.Gloss = tex.a;
o.Alpha = tex.a * _Color.a;
o.Specular = _Shininess;
}
ENDCG
}
Fallback "Legacy Shaders/Transparent/VertexLit"
}