您的位置:首页 > 移动开发 > Unity3D

[置顶] 神临的 unity shader 学习之alphatest(六)

2017-12-28 17:09 435 查看
说到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值对比,来判断是否显示.

最后的效果大概是这样的



到这里就结束了,可能有的朋友会看不懂,那是因为缺少基础的原因,要多看看书籍,多看看相关的资料,神临也是看了好几大本中外书籍了.为我自己,也为看我博客的各位,加油!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: