欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity Shader 溶解效果

程序员文章站 2024-02-12 23:12:40
...

简介

两种不同的溶解效果。第一种基于噪声图,利用其中的某一个通道比如R 通道,与阈值进行比较。如果小于0 ,则抛弃这个像素点。 第二种,在世界坐标下,如果当前片元的Y 轴坐标大于设定的偏移值,则抛弃这个像素点。

基本溶解效果

效果

Unity Shader 溶解效果

原理

使用噪声图纹理,利用其中的某一个通道比如R 通道,与阈值进行比较。如果小于0 ,则抛弃这个像素点。

	
			fixed4 frag (v2f i) : SV_Target
			{
			
				fixed4 bb = tex2D(_NoiseTex,i.uv);
				float clipValue = bb.r -_Threshold;
				clip(clipValue);
				fixed4 aa = tex2D(_MainTex, i.uv);
				float edgeFactor = saturate(clipValue / (_LineWidth * _Threshold));
				return lerp(_OutColor,aa, edgeFactor);
			}

从下到上的溶解效果

效果

Unity Shader 溶解效果

原理

在世界坐标系下,比较 像素点的Y 值小于阈值,则抛弃这个像素。

fixed4 frag (v2f i) : SV_Target
			{
				float clip_value = _OffsetY - i.worldPos.y;
				clip(clip_value);
				// sample the texture
				fixed4 col = tex2D(_MainTex, i.uv);
				float per =saturate( clip_value / _LineWidth);
				
				return lerp (col ,_OutColor,1- per);
			}

参考资料:

Unity Shader 溶解效果(单色)一

项目源码

项目源码