Unity Shader之简单的溶解效果(clip函数的使用)

最近在学Unityshader 发现这个clip函数真是好用

clip函数会将参数小于0的像素点直接丢弃掉 比如说我们要做溶解效果 除了mainTexture可以在里面放入一张用于溶解的图 判断这张图的alpha小于某个数的像素点 可以设置一个从0到1的变量用来控制 下面是关键代码

主要是fragment函数里 col是主贴图 secondTex是用于溶解判断的图片
_CutOutTex是一个0到1的变量 用于控制剔除度

fixed4 frag (v2f i) : SV_Target
{
	fixed4 col = tex2D(_MainTex, i.uv);
	fixed4 secondTex = tex2D(_CutOutTex,i.uv);
	clip(secondTex.rgb- _CutOutValue);
	return col;
}
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现角色消失、溶解或隐身的效果可以使用Unity Shader编写。一种常用的方法是使用渐变进行角色的消失或出现。 以下是一个简单Unity Shader代码示例,用于实现角色消失的效果: ``` Shader "Custom/Disappear" { Properties { _MainTex ("Texture", 2D) = "white" {} _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5 _FadeRange ("Fade range", Range(0,1)) = 0.1 } SubShader { Tags {"Queue"="Transparent" "RenderType"="Opaque"} LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float _Cutoff; float _FadeRange; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag (v2f i) : SV_Target { fixed4 col = tex2D(_MainTex, i.uv); float alpha = col.a; float dist = abs(i.uv.y - 0.5); alpha = smoothstep(_Cutoff - _FadeRange, _Cutoff + _FadeRange, alpha); alpha *= smoothstep(0, _FadeRange, dist); col.a = alpha; return col; } ENDCG } } } ``` 在这个Shader中,我们使用_MainTex来获取角色的纹理。_Cutoff和_FadeRange分别控制渐变的起点和终点。在fragment shader中,我们使用smoothstep函数来实现渐变效果,并使用dist变量来控制渐变的位置,使角色从中心开始渐变消失。 你可以将这个Shader应用到角色的材质中,然后使用代码控制_Cutoff和_FadeRange参数来实现角色的消失效果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值