神临的 unity shader 学习之alphatest(六)

本文介绍AlphaTest在图形渲染中的应用,并通过一个简单的溶解效果案例,演示如何使用Shader实现特定的透明度效果。通过设置AlphaTest值,可以控制物体的显示与否。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说到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值对比,来判断是否显示.

最后的效果大概是这样的
这里写图片描述

到这里就结束了,可能有的朋友会看不懂,那是因为缺少基础的原因,要多看看书籍,多看看相关的资料,神临也是看了好几大本中外书籍了.为我自己,也为看我博客的各位,加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值