Unity Shader 图片渐清晰效果
创始人
2025-05-28 10:48:32

效果图

原理

1、先定义参数属性

一张主纹理,还有噪点图,_percent相当于是权重,_DefColor目的混合颜色。像上面效果最初泛红。

Properties {  _MainTex ("image", 2D) = "white" {}  _NoiseTex("noise", 2D) = "bump" {}  _percent("percent", Range(-0.3, 1)) = 0  _DefColor ("defalutColor", COLOR)  = ( 0, .8, .4, 1)  
}  

2、定义顶点输出结构体

SV_POSITION 转换成裁剪空间下的坐标

TEXCOORD0 贴图UV

 struct v2f {      half4 pos:SV_POSITION;      half4 uv : TEXCOORD0;     
};  

3、顶点着色器

这里使用appdata_full结构体(在UnityCG.cginc中这里面定义好了POSITION、TANGENT、NORMAL、TEXCOORD0等)

UnityObjectToClipPos 是常规比用方法模型顶点转裁切空间。

由于TEXCOORD0可以是float2或float4类型,这里用float4类型,给zw赋值偏移量。

注意:这里给zw赋值会超过1,正常uv取值范围是0-1。超过1就是贴图寻址的问题。这里把贴图设置成Repeat。即比如1.1会作为0.1位置寻址。

 v2f vert(appdata_full v) {    v2f o;    o.pos = UnityObjectToClipPos (v.vertex);    o.uv.xy = v.texcoord.xy;  o.uv.zw = v.texcoord.xy + _Time.x;  return o;    
} 

4、片元着色器

图片扭曲过程的解释:

a)由于_NoiseTex所表示的噪声图片的每个像素点的值在区间[0,1]之内。即noise.xy的值在[0,1]之间。

b) noise.xy * 0.05 的区间为[0,0.05];

c)noise.xy * 0.05-0.025的区间为[-0.025,0.025]

d)i.uv.xy + noise.xy * 0.05 - 0.025 表示对原来图片的uv进行[-0.025,0.025]之间任意值的一次偏移(取决于噪声图),这样就形成了图像扭曲效果。

e)又由于i.uv.zw受时间支配,所以noise的值也随时间变化。这样整个图片的扭曲,也随时间变化,就形成了液化的效果。

其中0.05和0.025的值是实验得出的。可以更具实际情况改变来达到不同的效果。

f)smoothstep用来生成0到1的平滑过渡值,如下:如果x在[a,b]范围内,则返回介于0和1之间的平滑插值,使用smoothstep在两个值之间创建平滑过度。这样修改percent参数经过i.uv.y-percent就能显示图片从低到上y轴坐标插值。


fixed4 frag(v2f i) : SV_Target{// 原始卡牌, 把alpha设置为1,屏蔽掉alpha通道信息  fixed4 tex0 = tex2D(_MainTex, i.uv.xy);  // 透明躁动卡牌; 使用alpha通道信息,设置显示颜色,并加入躁动;  half3 noise = tex2D(_NoiseTex, i.uv.zw );  fixed4 tex1 = tex2D(_MainTex, i.uv.xy + noise.xy * 0.05 - 0.025); tex1.rgb = tex1.rgb + _DefColor.rgb * 0.5;tex1.a = 0.5;//两个图片的叠加;通过比较uv中的v 和 _percent,来融合处理后的alpha通道和rgb通道return lerp(tex0, tex1, smoothstep(0, 0.3, i.uv.y-_percent)); 
}

工程示例下载加注释

相关内容

热门资讯

跟AI说话治好了我的精神内耗 26年了,突然很想坐下来,认认真真写一次: 这两年,AI到底在我身上改变了什么。 最大的一个变化是,...
康冠科技:KTC AI交互眼镜... 证券之星消息,康冠科技(001308)01月15日在投资者关系平台上答复投资者关心的问题。 投资者提...
中国顶尖AI大佬们重磅研判! 近日,中国AI界迎来一场重磅交流。在由清华大学基础模型北京市重点实验室与智谱AI发起的AGI-Nex...
前海开源多元策略混合A:202... AI基金前海开源多元策略混合A(004496)披露2025年四季报,第四季度基金利润1919.77万...
美团上线首个开源并可体验的“重... 1月16日,美团LongCat官微消息,作为LongCat-Flash-Thinking模型的升级版...