说到alphatest就要想到图形渲染流水线了,我这里就不多说了,所谓的alphatest意思就是字面上的一样,测试他的alpha值如果通过我们设置的固定值就显示,不通过则不显示.
所以就很轻而易举的想到一个很广泛的shader效果,溶解,
那么下面先给一张贴图
我们就用这张贴图制作溶解效果
然后上代码
Shader"Alphatest"
{
Properties
{
_MainTex("Base(RGB)",2D)="white"{}
_Cutoff("Value",Range(0,1))=0.5
}
SubShader
{
CGPROGRAM
#pragma surface surf Lambert alphatest:_Cutoff//(1)
sampler2D _MainTex;
struct Input
{
float2 uv_MainTex;
};
void surf (Input IN,inout SurfaceOutput o)
{
half4 c =tex2D(_MainTex,IN.uv_MainTex);
o.Albedo=c.rgb;
o.Alpha = c.r;//(2)
}
ENDCG
}
FallBack"Diffuse"
}
感觉没有什么可解释的呀
(1) 就是添加alphatest参数,并设置它的值,值的大小与外面的接口相关联
(2)将贴图的r通道的参数作为最后输出的a通道的值传入光照模型中,也就是说最后物体的透明度有纹理贴图的r(红色)通道的颜色控制.在深入一点,就是拿贴图的红色值与设置好的Alphatest值对比,来判断是否显示.
最后的效果大概是这样的
到这里就结束了,可能有的朋友会看不懂,那是因为缺少基础的原因,要多看看书籍,多看看相关的资料,神临也是看了好几大本中外书籍了.为我自己,也为看我博客的各位,加油!!!