unityShader实现点击波

本文详细介绍了如何使用Unity Shader来创建点击波纹效果,并进行了逐步优化,包括限制波动范围和调整波动强度。同时,还展示了实现水面波光粼粼效果的代码,通过控制UV波动模拟水面纹理变化。这些技术可用于增强游戏或虚拟场景的视觉体验。
摘要由CSDN通过智能技术生成

unityShader实现点击波

实现原理

float2 uv=IN.uv;
float dis=distance(uv,float2(0.5,0.5));   // 点击的位置, 外部传入
float scale=_A * sin(-dis*3.14*_F + _Time.y);   // -dis 向外波动, dis 向内波动
uv+=uv*scale;   // uv延圆形偏移

fixed4 col=tex2D(_MainTex,uv);
// fixed4(1,1,1,1)*saturate(Scale)*100;    输出颜色 查看效果, 实际是不需要的
return col+ fixed4(1,1,1,1)*saturate(Scale)*100;  

优化1:点击波只在一定的半径内有

	if(dis<_R){   //_R 为波动的半径
		float scale=_A * sin(-dis*3.14*_F + _Time.y);   // -dis 向外波动, dis 向内波动
		uv+=uv*scale;   // uv延圆形偏移
	}

优化2:正常的点击波,越靠近中心,波越强,边缘的波越弱

// 修改Scale值
if(dis<_R){   //_R 为波动的半径
		_A *= 1-dis/_R;
		float scale=_A * sin(-dis*3.14*_F + _Time.y);   // -dis 向外波动, dis 向内波动
		uv+=uv*scale;   // uv延圆形偏移
	}

优化3: 不使用 if 判断

	    _A *= saturate(1-dis/_R);
		float scale=_A * sin(-dis*3.14*_F + _Time.y);   // -dis 向外波动, dis 向内波动
		uv+=uv*scale;   // uv延圆形偏移

---------------------------------------------第二部分-------------------------------------------------------------
unityShader实现波光粼粼的效果

IN.uv+= 0.01 * sin(IN.uv.x  *3.14* 10 + _Time.y);   //控制UV波动的周期, 模拟水波
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值